在创建JAX-WS Web服务时,是否有可能更改Web服务URL?
自动URL是(在Glassfish 3上):http://<host>/<context>/<Servicename>
,但我需要的是:http://<host>/<context>/axis/services/<Servicename>
(因为它是从axis到JAX-WS的端口)
有什么方法可以告诉JAX-WS在哪里发布WS吗
使用sun-jaxws.xml是没有选择的,因为它禁用了@EJB/@InjectDI。
您可以为JAX-WS实现类指定servlet映射。默认情况下,servlet映射是不需要的,JAX-WS框架会为您生成它。由于您希望为web服务提供自定义URL映射,因此可以提供带有自定义URL的servlet映射。
样品:
<servlet>
<display-name>CalculatorService</display-name>
<servlet-name>CalculatorService</servlet-name>
<servlet-class>
org.apache.geronimo.samples.jws.CalculatorService
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>CalculatorService</servlet-name>
<url-pattern>/axis/services/calculator</url-pattern>
</servlet-mapping>
请参阅https://geronimo.apache.org/GMOxDOC20/simple-web-service-with-jax-ws.html和http://pic.dhe.ibm.com/infocenter/wasinfo/v8r0/index.jsp?topic=%2Fcom.ibm.websphere.express.doc%2Finfo%2Fexp%2Fae%2Ftwbs_customwebxml.html.
我在相同的上下文中遇到了同样的问题。在JAX-WS中传递一些axis2 web服务;所以我不得不保持相同的url映射(http://[host]:[port]/[context]/services/[serviceName])。
起初,我尝试在WS的impl类上使用带有url模式的@WebServlet注释。它适用于JBoss AS 7.1和Weblogic Server 12,但WebSphere AS 8不喜欢。这是因为HttpServlet类没有扩展,但如果你对web.xml也这样做了,它就可以工作了。
对于要添加到web.xml中的一个web服务:
<servlet>
<servlet-name>OMInjector</servlet-name>
<servlet-class>fr.fmoisson.kijq.services.OMInjector</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>OMInjector</servlet-name>
<url-pattern>/services/OMInjector</url-pattern>
</servlet-mapping>