在单个JBoss实例上设置多个端口?

Ada*_*dam 1 jboss wsdl jboss5.x

问题背景

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

我们到目前为止

使用java Filter(参见下面的web.xml),我们可以根据端口号转发到每个servlet实现(通过添加额外的连接器来添加端口deploy/jbossweb.sar/server.xml).这适用于所有Web服务调用,但不适用于wsdl请求,例如http://localhost:8092/simulator/sim?wsdl8092是许多模拟器的所需版本(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>  
Run Code Online (Sandbox Code Playgroud)

Pab*_*ruz 7

您需要修改Tomcat的配置(JBoss使用嵌入式Tomcat版本).

相关文件是:

$ $JBOSS_HOME/server/default/deploy/jbossweb-tomcat55.sar/server.xml
Run Code Online (Sandbox Code Playgroud)

您可以在其中配置绑定端口.这是默认情况下出现的:

  <!-- 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"/>
Run Code Online (Sandbox Code Playgroud)

您可以添加几个"连接器".每个端口一个,你需要的.

然后重启你的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
Run Code Online (Sandbox Code Playgroud)

这是您需要在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"/>

  ....
Run Code Online (Sandbox Code Playgroud)

每个新端口的一个XML标记.