更改JAX-WS服务URL

时间:2013-07-16 15:22:45

标签: java web-services glassfish jax-ws

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

2 个答案:

答案 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.htmlhttp://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>