gpt4 book ai didi

java - Spring Boot + JAX-WS 无需额外的 servlet?

转载 作者:行者123 更新时间:2023-12-01 23:23:27 24 4
gpt4 key购买 nike

我正在致力于将一些应用程序从 Spring 迁移到 Spring Boot。某些应用程序在应用程序的根 url ( / ) 上提供 SOAP Web 服务,这对于 Spring 应用程序来说没问题。但在 Spring Boot 上,这会导致一些问题,因为设置 servlet 来监听 /将覆盖默认的调度程序 servlet,导致执行器端点被覆盖。不过,我不想更改 wsdl 的 url,因为这将导致更新该服务的所有客户端。

有没有办法让 Spring Boot 在 / 上提供 JAX-WS/CXF Web 服务,而不覆盖默认的servlet?有没有办法让默认的 servlet 提供 Web 服务,而不需要额外的 CXFServlet

最佳答案

通过将 CXFServlet 公开为过滤器而不是 servlet,至少能够访问 wsdl:

@Bean
public Endpoint endpoint(final SpringBus springBus, final MyServiceImpl myService) {
final EndpointImpl endpoint = new EndpointImpl(springBus, myService);
endpoint.publish("/MyService");
return endpoint;
}

@Bean
public SpringBus springBus() {
return new SpringBus();
}

@Bean
public FilterRegistrationBean<CXFServlet> cxfServletFilter(final SpringBus springBus) {
final CXFServlet cxfServlet = new CXFServlet();
cxfServlet.setBus(springBus);
final FilterRegistrationBean<CXFServlet> filterRegistrationBean = new FilterRegistrationBean<>(cxfServlet);

filterRegistrationBean.setOrder(2);

return filterRegistrationBean;
}

我还从我的 pom.xml 中删除了 cxf-spring-boot-starter-jaxws

欢迎对此解决方案提供任何反馈。

关于java - Spring Boot + JAX-WS 无需额外的 servlet?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58318757/

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