【发布时间】: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>
【问题讨论】: