Со временем возникают новые возможности.
Работа с CXF / SpringBoot (SpringBoot: 1.2.3, CXF: 3.10, Spring: 4.1.6) есть хорошая альтернатива для избавления от конфигурации конечной точки jaxws: в cxf-servlet.xml, как jonashackt. указано в nabble.com . Однако это решение возможно только в том случае, если в приложении имеется только одна конечная точка (по крайней мере, мне не удалось настроить более одной).
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Bean
public ServletRegistrationBean dispatcherServlet() {
CXFServlet cxfServlet = new CXFServlet();
return new ServletRegistrationBean(cxfServlet, "/api/*");
}
@Bean(name="cxf")
public SpringBus springBus() {
return new SpringBus();
}
@Bean
public MyServicePortType myService() {
return new MyServiceImpl();
}
@Bean
public Endpoint endpoint() {
EndpointImpl endpoint = new EndpointImpl(springBus(), myService());
endpoint.publish("/MyService");
return endpoint;
}
Где MyServicePortType - это класс с аннотацией @WebService. Эта конечная точка затем вызывается для URL-адресов, таких как «localhost: 8080 / api / MyService»
Конечно, эти объявления @Bean могут быть помещены в любой другой класс конфигурации Spring.
В отличие от скопированного исходного решения, я предлагаю создать экземпляр Bus (cxf-Bean), используя фабричный метод вместо прямого "new SpringBus ()":
BusFactory.newInstance().createBus()