【发布时间】:2021-03-10 17:47:12
【问题描述】:
我目前正在尝试让 CXF Servlet 与常规 Web MVC Servlet 一起运行。我的 CXF Servlet 定义了多个端点,即:
/api/v1/*/soap/v2/*/internal-api/v1/*
我还希望 Spring MVC 的 DispatcherServlet 在 /api/v2/* 下运行
当我配置时:
@Bean
public ServletRegistrationBean<CXFServlet> cxfServlet() {
final ServletRegistrationBean<CXFServlet> cxfServletServletRegistrationBean = new ServletRegistrationBean<>(new CXFServlet(), "/*");
return cxfServletServletRegistrationBean;
}
关于 CXF 的所有内容都可以正常工作,但 Spring Boot 应用程序中的 @Controller 不再可用。(当然现在所有内容都指向 cxfservlet)
但是当我配置时:
@Bean
public ServletRegistrationBean<CXFServlet> cxfServlet() {
final ServletRegistrationBean<CXFServlet> cxfServletServletRegistrationBean = new ServletRegistrationBean<>(new CXFServlet(), "/api/v1/*");
return cxfServletServletRegistrationBean;
}
如果我使用诸如 http://localhost:8080/api/v1/api/v1/test 之类的 URL,现在只能访问 cxf 的端点。
如何配置 spring boot 应用程序,以便/api/v2/* 被定向到 spring mvc servlet 并且 cxf servlet 仍然像上面描述的那样工作?
【问题讨论】:
-
可能
ServletRegistrationBean也适用于DispatcherServlet。 -
我已经尝试过了……cxf servlet 的
/*url 映射仍然可以捕获所有内容,并且没有任何内容进入调度程序servlet。 cxf servlet 只响应没有找到应该映射到@Controller的 url 的服务 -
你试过什么?您尝试了
CXFServlet,如果您注册DispatcherServlet以获得正确的ULR 前缀,请求将被正确路由。
标签: java spring spring-boot cxf