2

我正在尝试学习 Apache CXF 的一些基础知识,以及一般关于 servlet-mappings 的知识。我在这里修改了代码:

https://subversion.assembla.com/svn/pablo-examples/spring-cxf-example

我在 web.xml 中配置了 CXFServlet 映射如下

<servlet-mapping>
    <servlet-name>CXFServlet</servlet-name>
    <url-pattern>/services/*</url-pattern>
</servlet-mapping>

在 spring xml(webservice-definition-beans.xml) 中,我生成了如下服务

<jaxws:endpoint id="helloWorld" implementor="#helloWorldService" address="/services/HelloWorld" />

我期待通过这个 url 访问服务 wsdl

http://localhost:8080/services/HelloWorld?wsdl

但它是

http://localhost:8080/services/services/HelloWorld?wsdl

我知道这里有什么问题吗?

servlet-mapping 不只显示哪个 url 模式映射到要处理的 servlet 吗?

在这里它似乎也改变了上下文。

4

1 回答 1

6

JAX-WS 路径是相对于 servlet 映射的。如果你想

http://localhost:8080/services/HelloWorld?wsdl

使用任何一个

<servlet-mapping>
    <servlet-name>CXFServlet</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

<jaxws:endpoint id="helloWorld" implementor="#helloWorldService" address="/services/HelloWorld" />

或者

<servlet-mapping>
    <servlet-name>CXFServlet</servlet-name>
    <url-pattern>/services/*</url-pattern>
</servlet-mapping>

<jaxws:endpoint id="helloWorld" implementor="#helloWorldService" address="/HelloWorld" />
于 2012-12-23T14:30:31.867 回答