如何设置servlet的映射,使其在与CXF相同的路径上侦听



来自我的pom:的依赖项

2.2.5.弹簧润滑脂3.3.5针对CXF

  • 弹簧启动装置
  • 弹簧套启动器执行器
  • 弹簧靴启动器腹板
  • 弹簧引导开发工具
  • 弹簧引导配置处理器
  • 弹簧靴启动器tomcat
  • 弹簧起动装置试验
  • cxf弹簧启动程序jaxws
  • cxf-rt特性日志记录

以下是应用程序中定义的服务器设置。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

最后,还有弹簧引导执行器Servlet。

当前正在侦听此地址:http://localhost:8080/cs/actuator

我的问题是"如何配置WebServlet以在不破坏所有内容的情况下侦听CXF段?"例如http://localhost:8080/cs/services/image-service_1.0

有人提醒我,也许我应该使用SpringMVC控制器来代替Servlet。我对这个端点id的唯一要求是接收查询字符串参数并将二进制内容流式传输回调用方。

您不能接管与CXF WS Endpoint(默认值:/services(相同的路径

最新更新