【问题标题】:Setting up multiple ports on a single JBoss instance?在单个 JBoss 实例上设置多个端口?
【发布时间】:2011-07-07 11:11:04
【问题描述】:

问题背景

情况是这样的。我们正在运行一个来自战争的模拟器 servlet。我们正在模拟的 servlet 在一台机器上有许多实例,这些实例由端口号区分。我们只想部署一个可以被多个端口访问的单一战争。

我们目前所拥有的

使用 java Filter(请参阅下面的 web.xml),我们能够根据端口号转发到每个 servlet 实现(通过向 deploy/jbossweb.sar/server.xml 添加额外的连接器来添加端口)。这适用于所有 Web 服务调用,但不适用于 wsdl 请求,例如 http://localhost:8092/simulator/sim?wsdl,其中 8092 是模拟器的理想版本(8091、8092、8093、 8094)。在该请求中,wsdl 被正确返回(每个模拟器实现略有不同),除了 URL soap:address 标记始终使用端口 8091。

注意:我们使用的是 JBoss 5.0

web.xml 的相关部分:

  <filter>
      <filter-name>SimFilter</filter-name>
      <filter-class>com.example.filter.MyFilter</filter-class>
  </filter>

  <filter-mapping>
      <filter-name>SimFilter</filter-name>
      <url-pattern>/*</url-pattern>
      <dispatcher>REQUEST</dispatcher>
      <dispatcher>INCLUDE</dispatcher>
      <dispatcher>FORWARD</dispatcher>
  </filter-mapping>  

【问题讨论】:

    标签: jboss wsdl jboss5.x


    【解决方案1】:

    一个疑问,既然所有的连接都重定向到8443,那么给出多个配置有什么意义呢?能避免港口拥堵吗?

    【讨论】:

    • 欢迎来到 SO Mohammed。目标是使用单个 JBoss 实例模拟许多主机地址。顺便说一句,像你这样的问题最适合作为顶部原始问题的 cmets。再次欢迎并继续提出这些问题!
    【解决方案2】:

    你需要修改Tomcat的配置(JBoss使用的是Tomcat的嵌入式版本)。

    相关文件为:

    $ $JBOSS_HOME/server/default/deploy/jbossweb-tomcat55.sar/server.xml
    

    您可以在其中配置绑定端口。这是默认的:

      <!-- A HTTP/1.1 Connector on port 8080 -->
      <Connector port="8080" address="${jboss.bind.address}"
         maxThreads="250" strategy="ms" maxHttpHeaderSize="8192"
         emptySessionPath="true"
         enableLookups="false" redirectPort="8443" acceptCount="100"
         connectionTimeout="20000" disableUploadTimeout="true"/>
    

    您可以添加多个“连接器”。一个用于您需要的每个端口。

    然后重启你的 JBoss。

    您会在 LOG 上看到类似的内容:

    16:29:13,803 INFO  [Http11BaseProtocol] Initializing Coyote HTTP/1.1 on http-0.0.0.0-8080
    16:29:13,804 INFO  [Http11BaseProtocol] Initializing Coyote HTTP/1.1 on http-0.0.0.0-8091
    16:29:13,805 INFO  [Http11BaseProtocol] Initializing Coyote HTTP/1.1 on http-0.0.0.0-8092
    16:29:13,805 INFO  [Http11BaseProtocol] Initializing Coyote HTTP/1.1 on http-0.0.0.0-8093
    16:29:13,805 INFO  [Http11BaseProtocol] Initializing Coyote HTTP/1.1 on http-0.0.0.0-8094
    

    这是您需要在server.xml 文件中添加的内容:

      <Connector port="8091" address="${jboss.bind.address}"
         maxThreads="250" strategy="ms" maxHttpHeaderSize="8192"
         emptySessionPath="true"
         enableLookups="false" redirectPort="8443" acceptCount="100"
         connectionTimeout="20000" disableUploadTimeout="true"/>
    
      <Connector port="8092" address="${jboss.bind.address}"
         maxThreads="250" strategy="ms" maxHttpHeaderSize="8192"
         emptySessionPath="true"
         enableLookups="false" redirectPort="8443" acceptCount="100"
         connectionTimeout="20000" disableUploadTimeout="true"/>
    
      ....
    

    每个新端口都有一个 XML 标记。

    【讨论】:

    • 我没有看到jbossweb-tomcat55.sar,只有jbossweb.sar。我已经为每个端口准备了一个连接器。是否有我可能缺少的特定选项?
    • 是的,在 JBoss 5 中它是 jbossweb.sar。添加端口,然后重新启动 APP SERVER。如果端口正在监听,请查看netstat...
    • @Adam:查看更新的答案并在日志中查找。
    • 初始化消息在那里。在我们的案例中,我能够提出一种解决方法,但我会留下这个问题,以防其他人找到解决方案或遇到类似的问题。我认为这与 JBoss 如何处理 wsdl 请求有关,因为 web 服务本身能够成功使用端口。
    • 我将把它标记为完成,因为它包含一些有用的调试信息,我自己已经解决了这个问题。
    猜你喜欢
    • 2010-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-22
    • 2016-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多