Использование исключения 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">
Ответы
Ответ 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);