Подтвердить что ты не робот

Использование исключения CXF JaxWsServerFactoryBean Не удается найти зарегистрированный HttpDestinationFactory с шины

При использовании Apache CXF JaxWsServerFactoryBean в режиме консоли (попробуйте запустить сервер с помощью командной строки java) Получит исключение, как показано ниже:

Caused by: java.io.IOException: Cannot find any registered HttpDestinationFactory from the Bus.
        at org.apache.cxf.transport.http.HTTPTransportFactory.getDestination(HTTPTransportFactory.java:295)
        at org.apache.cxf.binding.soap.SoapTransportFactory.getDestination(SoapTransportFactory.java:143)
        at org.apache.cxf.endpoint.ServerImpl.initDestination(ServerImpl.java:93)
        at org.apache.cxf.endpoint.ServerImpl.<init>(ServerImpl.java:72)
        at org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:160)

При использовании той же самой службы, которая используется в Tomcat через Spring, она работает.

<jaxws:endpoint id="abc" implementor="com.AbcServicePortTypeImpl" address="/abc">
4b9b3361

Ответ 1

Включить флагом cxf-rt-transports-http-jetty в maven pom.xml решит проблему.

    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-transports-http-jetty</artifactId>
        <version>2.7.6</version>
    </dependency>

Ответ 2

Например, если у вас есть нижняя конфигурация, и адрес определяется с присоединенным к нему HTTP, который не является относительным URL-адресом для сконфигурированного CXFServlet, выдается вышеуказанная ошибка.

<jaxrs:server id="helloRestService" address="http://...">
        <jaxrs:serviceBeans>
            <ref bean="helloService" />
        </jaxrs:serviceBeans>
</jaxrs:server>

Решение состоит в том, чтобы просто указать относительный url без http/https, добавленного к адресу.

http://grokbase.com/t/camel/users/155f1smn4v/error-cannot-find-any-registered-httpdestinationfactory-from-the-bus

Ответ 3

У меня была та же проблема. И ни один из материалов Google не имел смысла. В моем случае я обнаружил, что в контекстном файле spring отсутствует следующее:

   <import resource="classpath:META-INF/cxf/cxf.xml" />
   <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
   <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />

Ответ 4

Другое решение, которое работает с CSV 2.7.15: при создании Bus зарегистрируйте расширение:

ServletDestinationFactory destinationFactory = new ServletDestinationFactory();
bus.setExtension(destinationFactory, HttpDestinationFactory.class);