7

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

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

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

4

1 回答 1

3

CXF ServletControllerinvoke方法首先调用,它返回请求的 URL 中没有servlet 的部分。然后,此调用的结果将用于通过对 的调用来匹配任何已定义的服务。因此,目前不可能使用包含 servlet 部分的路径让 CXF 匹配服务 - CXF 从不调用这将需要的。HttpServletRequest#getPathInfourl-patternDestinationRegistry#getDestinationForPathHttpServletRequest#getServletPath

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

于 2013-01-08T18:05:30.427 回答