JBoss 7.1中Axis SOAP服务URL重写配置问题求助
JBoss 7.1 调整SOAP服务URL上下文的解决方案
场景与需求
现有Eclipse项目包含Web模块和Axis生成的SOAP服务,打包为单个WAR部署在JBoss 7.1上,当前正常访问地址:
- Web项目:
http://server/webproject/index.jsp - SOAP服务:
http://server/webproject/services/services?wsdl
需实现:将SOAP服务访问地址改为http://server/ws/services?wsdl,同时保留原Web项目地址的正常可用性。此前配置的重写规则未生效,规则代码如下:
<virtual-server name="default-host" enable-welcome-root="true"> <alias name="localhost"/> <rewrite pattern="^/ws(.*)$" substitution="/webproject/services/$1" flags="L"/> </virtual-server>
问题分析与修复步骤
1. 启用JBoss Rewrite模块
JBoss 7.1默认未开启Rewrite扩展,需先在standalone.xml中启用相关模块:
- 在
<extensions>节点下添加:<extension module="org.jboss.as.rewrite"/> - 在
<profile>节点内的Web子系统下方,添加Rewrite子系统专属配置:
注意:原规则直接写入<subsystem xmlns="urn:jboss:domain:rewrite:1.0"> <configuration> <rule name="ws-service-rewrite"> <match pattern="^/ws(.*)$"/> <substitution value="/webproject/services$1"/> <flags> <flag name="L"/> </flags> </rule> </configuration> </subsystem><virtual-server>的方式不符合JBoss 7.1的Rewrite配置规范,必须移至专门的Rewrite子系统中才能生效。
2. 验证规则匹配逻辑
调整后的规则会将所有/ws开头的请求映射到/webproject/services路径下:
- 当访问
http://server/ws/services?wsdl时,正则捕获的$1为/services,替换后实际访问地址为http://server/webproject/services/services?wsdl,完全匹配原SOAP服务的真实地址。
3. 重启服务器并测试
修改配置后重启JBoss 7.1,分别验证:
- 访问
http://server/ws/services?wsdl,确认能正常加载WSDL内容 - 访问
http://server/webproject/index.jsp,确认Web项目功能不受影响
内容的提问来源于stack exchange,提问作者Homselan
相关产品推荐
相关产品推荐

