Spring Boot + JAX-WS без дополнительного сервлета? - PullRequest
0 голосов
/ 10 октября 2019

Я работаю над переносом некоторых приложений из Spring в Spring Boot. Некоторые из приложений предоставляют веб-службы SOAP по корневому URL-адресу приложения (/), что хорошо для приложения Spring. Но в Spring Boot это вызывает некоторые проблемы, так как настройка сервлета для прослушивания на / перезапишет диспетчер-сервлет по умолчанию, вызывая, например, перезапись конечной точки привода. Тем не менее я не хочу менять URL-адрес моего wsdl, поскольку это приведет к обновлению всех клиентов службы.

Есть ли способ заставить Spring Boot предоставлять веб-службу JAX-WS / CXFна /, без перезаписи сервлета по умолчанию? Есть ли способ, чтобы сервлет по умолчанию поставлял веб-сервис, без необходимости дополнительных CXFServlet?

1 Ответ

0 голосов
/ 10 октября 2019

Как минимум удалось получить доступ к wsdl, выставив CXFServlet в качестве фильтра, а не сервлета:

@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;
}

Я также удалил cxf-spring-boot-starter-jaxws из моего pom.xml.

Любые отзывы об этом решении приветствуются.

...