gpt4 book ai didi

java - CXF 和多个 servlet 映射

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:26:12 30 4
gpt4 key购买 nike

目前我们有一个带有 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?

最佳答案

invoke CXF ServletController 的方法第一个电话 HttpServletRequest#getPathInfo ,它返回请求的 URL 的一部分没有servlet 的url-pattern .此调用的结果随后用于通过调用 DestinationRegistry#getDestinationForPath 来匹配任何已定义的服务。 .因此,目前不可能使用包含 servlet 部分的路径让 CXF 匹配服务 — CXF 从不调用 HttpServletRequest#getServletPath这是需要的。

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

关于java - CXF 和多个 servlet 映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14205947/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com