更改JAX-WS服务URL



在创建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>

最新更新