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

在一个JBoss实例上设置多个端口?,jboss,wsdl,jboss5.x,Jboss,Wsdl,Jboss5.x,问题背景 情况是这样的。我们正在运行一个来自战争的模拟器servlet。我们正在模拟的servlet在一台机器上有许多实例,这些实例根据端口号进行区分。我们只想部署一场可以被多个港口访问的战争 到目前为止我们拥有的 使用java过滤器(web.xml见下文),我们能够根据端口号转发到每个servlet实现(端口是通过向deploy/jbossweb.sar/server.xml添加额外的连接器添加的)。这适用于所有web服务调用,但不适用于wsdl请求,如http://localhost:809

问题背景

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

到目前为止我们拥有的

使用java
过滤器
(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

注意:我们使用的是JBoss5.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>  

终端过滤器
com.example.filter.MyFilter
终端过滤器
/*
要求
包括
向前地

您需要修改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"/>
这是您需要添加到
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标记。

您需要修改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"/>
这是您需要添加到
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标记。

一个疑问,因为所有连接都重定向到8443,所以提供多个配置有什么意义?它能避免端口拥塞吗?

有一个疑问,因为所有连接都被重定向到8443,提供多个配置有什么意义?它能避免端口拥塞吗?

我没有看到
jbossweb-tomcat55.sar
,只有
jbossweb.sar
。在那里,每个端口都有一个连接器。是否有我可能缺少的特定选项?是的,在JBoss5中是jbossweb.sar。添加端口,然后重新启动APP SERVER。如果端口正在侦听,请使用
netstat
查看…@Adam:查看更新的答案并在日志中查找。初始化消息就在那里。我能够在我们的案例中找到解决办法,但我将保留这个问题,以防其他人找到解决方案或遇到类似问题。我认为这与JBoss如何处理wsdl请求有关,因为Web服务本身能够成功地使用端口。我将把它标记为完成,因为它包含一些有用的调试信息,我自己也解决了这个问题。我没有看到
jbossweb-tomcat55.sar
,只有
jbossweb.sar
。在那里,每个端口都有一个连接器。是否有我可能缺少的特定选项?是的,在JBoss5中是jbossweb.sar。添加端口,然后重新启动APP SERVER。如果端口正在侦听,请使用
netstat
查看…@Adam:查看更新的答案并在日志中查找。初始化消息就在那里。我能够在我们的案例中找到解决办法,但我将保留这个问题,以防其他人找到解决方案或遇到类似问题。我认为这与JBoss如何处理wsdl请求有关,因为Web服务本身能够成功地使用端口。我将把它标记为完成,因为它包含一些有用的调试信息,我自己也解决了这个问题。欢迎来到SO Mohammed。目标是使用一个JBoss实例模拟多个主机地址。顺便说一下,像你这样的问题最适合作为对顶部原始问题的评论。欢迎再次提出这些问题!欢迎来到SO Mohammed。目标是使用一个JBoss实例模拟多个主机地址。顺便说一下,像你这样的问题最适合作为对顶部原始问题的评论。欢迎再次提出这些问题!