2011-03-02 48 views
1

问题背景在单个JBoss实例上设置多个端口?

这是情况。我们正在运行一场战争中的模拟器servlet。我们正在模拟的servlet在单个机器上有许多实例,区别于端口号。我们只想部署可以被许多港口访问的单一战争。

什么我们迄今

使用Java Filter(参见下面的web.xml)中我们可以转发到基于端口号每个Servlet实现(港口通过添加额外的连接到deploy/jbossweb.sar/server.xml添加)。此适用于所有网络服务调用,但不适用于wsdl请求http://localhost:8092/simulator/sim?wsdl其中8092是许多模拟器(8091,8092,8093,8094)中的所需版本。在该请求的WSDL是正确返回(每个模拟器的实现略有不同),不同的是URL soap:address标签总是使用端口8091.

注:我们正在使用JBoss 5.0网站的

相关部分。 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> 

回答

7

您需要修改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。

你会看到这样的事情上的日志:

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标签。

+0

我没有看到'jbossweb-tomcat55.sar',只有'jbossweb.sar'。在那里我已经为每个端口都有一个连接器。有没有我可能错过的特定选项? – Adam 2011-03-02 19:04:53

+0

是的,在JBoss 5中它是jbossweb.sar。添加端口,然后重新启动APP SERVER。用'netstat'查看端口是否在监听... – 2011-03-02 19:27:49

+0

@Adam:检查更新后的答案并在LOG上查找。 – 2011-03-02 19:30:46

0

有一个疑问,因为所有的连接都重定向到8443,给出多重配置有什么意义?它会避免港口拥堵吗?

+0

欢迎来到SO穆罕默德。目标是使用单个JBoss实例来模拟许多主机地址。顺便说一句,像您这样的问题最适合作为对顶部原始问题的评论。再次欢迎并不断提问这些问题! – Adam 2011-11-28 16:31:55

相关问题