Как установить сопоставления сервлета так, чтобы он слушал по тому же пути, что и CXF? - PullRequest
0 голосов
/ 25 марта 2020

Зависимости от моего pom:

2.2.5.RELEASE для Spring 3.3.5 для CXF

  • spring-boot-starter
  • spring-boot- пусковой привод
  • spring-boot-starter-web
  • spring-boot-devtools
  • spring-boot-configuration-процессор
  • spring-boot- starter-tomcat
  • тест начальной загрузки пружины
  • cxf-spring-boot-starter-jaxws
  • ведение журнала cxf-rt-features

Вот настройки сервера, определенные в application.yml:

server:
 port: 8080
 servlet:
  context-path: /cs

Первый сервлет - это конечная точка 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

Второй сервлет - это 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

И, наконец, есть сервлет привода пружинной загрузки.

C срочно слушаю по этому адресу: http://localhost: 8080 / cs / привод

У меня вопрос "Как я могу настроить WebServlet для прослушивания сегмента CXF без ломать все? например, http://localhost: 8080 / cs / services / image-service_1.0

Мне стало известно, что, возможно, мне следует использовать Spring MVC Контроллер вместо сервлета. Единственное требование, предъявляемое к этому идентификатору конечной точки, - принимать параметры строки запроса и передавать двоичный контент обратно вызывающей стороне.

...