Apache CXF 和 servlet 映射

Okt*_*tay 2 servlets cxf

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

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>
Run Code Online (Sandbox Code Playgroud)

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

<jaxws:endpoint id="helloWorld" implementor="#helloWorldService" address="/services/HelloWorld" />
Run Code Online (Sandbox Code Playgroud)

我希望通过这个 url 访问服务 wsdl

http://localhost:8080/services/HelloWorld?wsdl
Run Code Online (Sandbox Code Playgroud)

但它是

http://localhost:8080/services/services/HelloWorld?wsdl
Run Code Online (Sandbox Code Playgroud)

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

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

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

Dav*_*ski 6

JAX-WS 路径与 servlet 映射相关。如果你想

http://localhost:8080/services/HelloWorld?wsdl
Run Code Online (Sandbox Code Playgroud)

使用

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

<jaxws:endpoint id="helloWorld" implementor="#helloWorldService" address="/services/HelloWorld" />
Run Code Online (Sandbox Code Playgroud)

或者

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

<jaxws:endpoint id="helloWorld" implementor="#helloWorldService" address="/HelloWorld" />
Run Code Online (Sandbox Code Playgroud)