CXF和多个servlet映射

Mik*_*keN 6 java spring cxf jax-rs jax-ws

目前我们有一个带有Spring MVC DispatcherServlet和两个CXFServlet的Java webapp.DispatcherServlet是默认的servlet(映射/),一个CXFServlet映射到/api/*另一个/services/*.

困扰我的是,似乎不可能有1个CXFServlet承载2个服务,一个打开/api/v0,一个打开/services/myService,没有映射/*到CXFServlet.如果这是可能的,它将节省初始化时间,配置麻烦和另一个servlet实例的内存要求.

所以基本上,我的问题是,是否有人知道如何在1个CXFServlet中的2个URL上托管2个CXF服务,没有共同的基础/根URL,最好使用Spring命名空间配置,而不映射/*到CXFServlet?

pra*_*dym 3

CXF ServletControllerinvoke的方法首先调用,它返回所请求 URL 的不带servlet 的部分。然后,此调用的结果用于通过调用来匹配任何已定义的服务。因此,目前不可能使用包含 servlet 部分的路径来提供 CXF 匹配服务 \xe2\x80\x94 CXF 永远不会调用为此所需的服务。HttpServletRequest#getPathInfourl-patternDestinationRegistry#getDestinationForPathHttpServletRequest#getServletPath

\n\n

请注意,base-address可以在 servlet 的初始化参数 ( <init-param>) 中设置的值只会影响 CXF显示的任何 URL ,因为ServletController#getBaseURL在服务调用期间不会使用使用该值的方法。

\n