【问题标题】:Is it possible to override the default Connector class implementation in Tomcat?是否可以覆盖 Tomcat 中的默认连接器类实现?
【发布时间】:2011-02-15 00:10:43
【问题描述】:

从 tomcat 6 文档看来,您可以设置诸如 Context (http://tomcat.apache.org/tomcat-6.0-doc/config/context.html)、Engine (http:// /tomcat.apache.org/tomcat-6.0-doc/config/engine.html)和主机(http://tomcat.apache.org/tomcat-6.0-doc/config/host.html),但不是连接器.

我在这里遗漏了什么还是不可能?

【问题讨论】:

    标签: java tomcat endpoint


    【解决方案1】:

    Connector 元素上的“protocol”属性实际上是一个类名。只是tomcat在这里知道了一些特殊的值,比如“HTTP/1.1”,更友好一点。

    你可以这样做

    <Connector port="8080" protocol="com.example.MyConnector" >
    

    【讨论】:

    • 哈!在文档中很简单,但我想我只是轻而易举地理解了协议,这意味着除了实际协议之外的任何内容。谢谢!
    【解决方案2】:

    是的,可以实现您自己的连接器(我们在您的服务器上有 2 个自定义实现),您需要在那里实现协议和所有爵士形式
    例如:

    public class Http11NioInterceptor extends Http11NioProtocol {`
      public Http11NioInterceptor(){    
        super();
        ep = new NioEndpointX();
    //....
      }
    ////
    }
    

    希望对你有帮助

    【讨论】:

    • 如果我将它贡献给标准的 tomcat 安装,我将如何去做?我当然可以为嵌入式安装执行此操作,但我需要以某种我不熟悉的方式编辑 server.xml 吗?
    • @Zack,你必须把它放在 server.xml 中并为你的 impl 设置协议。
    • 这并不是真正使用自定义连接器,而是通过覆盖连接器使用的协议来修改连接器的行为。在 tomcat 8.0(也可能是以前的版本)中,createRequest() 创建了一个 catalina.Connector.Request。自定义协议无法修改此行为。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-15
    • 2014-01-09
    • 2020-05-11
    • 1970-01-01
    • 2011-02-09
    • 1970-01-01
    相关资源
    最近更新 更多