java - 如何设置 servlet 的映射,使其侦听与 CXF 相同的路径?
问题描述
来自我的 pom 的依赖项:
2.2.5.RELEASE 用于 Spring 3.3.5 用于 CXF
- 弹簧启动器
- 弹簧引导启动器执行器
- spring-boot-starter-web
- 弹簧引导开发工具
- 弹簧引导配置处理器
- spring-boot-starter-tomcat
- 弹簧引导启动器测试
- cxf-spring-boot-starter-jaxws
- cxf-rt-功能日志记录
以下是 application.yml 中定义的服务器设置:
server:
port: 8080
servlet:
context-path: /cs
第一个 Servlet 是一个 CXF JAXWS 端点,配置如下:
// https://github.com/apache/cxf
@Bean(name=Bus.DEFAULT_BUS_ID)
public SpringBus springBus() {
return new SpringBus();
}
@Bean
public IFileNetWSSoap documentService() {
return new DocumentServiceEndpoint();
}
@Bean
public Endpoint endpoint() {
EndpointImpl endpoint = new EndpointImpl(springBus(), documentService());
endpoint.setServiceName(fileNetWS().getServiceName());
endpoint.setWsdlLocation(fileNetWS().getWSDLDocumentLocation().toString());
endpoint.publish(properties.getDocumentEndpoint());
Binding binding = endpoint.getBinding();
((SOAPBinding)binding).setMTOMEnabled(true);
return endpoint;
}
目前在这个地址监听:http://localhost:8080/cs/services/document-service_1.0
第二个 Servlet 是 javax.servlet.http.HttpServlet(现在是 TomCat):
@WebServlet(urlPatterns = {"/image-service_1.0"})
public class ImageServiceEndpoint extends HttpServlet {
@Autowired
private BusinessService businessServices;
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) {
doGet(request, response);
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
this.businessServices.imageRetrieval(request, response);
}
}
目前在这个地址监听:http://localhost:8080/cs/image-service_1.0
最后,还有 Spring-Boot Actuator Servlet。
目前在这个地址监听:http://localhost:8080/cs/actuator
我的问题是“如何配置 WebServlet 在不破坏所有内容的情况下监听 CXF 段?” 例如http://localhost:8080/cs/services/image-service_1.0
我注意到也许我应该使用 Spring MVC 控制器来代替 Servlet。我对此端点 id 的唯一要求是接收查询字符串参数并将二进制内容流回调用者。
解决方案
您不能接管与 CXF WS Endpoint 相同的路径(默认:/services)
推荐阅读
- arrays - 将 JSON 加载到 BigQuery:字段有时是数组,有时是字符串
- java - 是否有通过循环创建四次 1-12 块的最佳方法
- bash - 如何通过shell脚本更改当前目录并在那里执行命令?
- reference - 我可以使用“继承”使用引用将特定属性添加到带有 Schema.org 的 json-ld 中的节点吗?
- java - 将图像放在 Java 项目中的哪个位置以便在 index.html 中呈现
- c# - 为什么编译器选择字符串而不是隐式字符数组的扩展方法?
- ruby-on-rails - # 未定义的方法“last”
- php - HTML 内容如何作为附件响应返回以下载 pdf 和 docx
- python - TensorFlow/Keras 模型 __call__ 在 GPU 上运行时变得越来越慢
- mysql - 如何在单个原子操作中将临时表转换为永久表?