在创建JAX-WS Web服务时是否有可能更改Webservice URL?
自动URL是(在Glassfish 3上):http://<host>/<context>/<Servicename>
,但我需要的是:http://<host>/<context>/axis/services/<Servicename>
(因为它是从轴到JAX-WS的端口)
有没有办法告诉JAX-WS在哪里发布WS?
使用sun-jaxws.xml是没有选择的,因为它会禁用@ EJB / @ Inject DI。
答案 0 :(得分:3)
您可以为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。
答案 1 :(得分:1)
我在相同的上下文中遇到了同样的问题。一些在JAX-WS中传递的axis2 Web服务;所以我必须保持相同的url映射(http:// [host]:[port] / [context] / services / [serviceName])。
首先,我尝试使用@WebServlet注释在WS的impl类上使用url模式。它适用于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>