jax ws - instalar - Utilice la excepción CXF JaxWsServerFactoryBean. No se puede encontrar ninguna HttpDestinationFactory registrada desde el Bus
instalar cxf (5)
Incluir cxf-rt-transports-http-jetty jar en el maven pom.xml resolverá el problema.
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http-jetty</artifactId>
<version>2.7.6</version>
</dependency>
Cuando utilice JaxWsServerFactoryBean de Apache CXF en modo consola (intente iniciar el servidor con la línea de comandos de Java) obtendrá una excepción como la siguiente:
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)
Cuando se utiliza el mismo servicio en Tomcat a través de Spring, funciona.
<jaxws:endpoint id="abc" implementor="com.AbcServicePortTypeImpl" address="/abc">
Otra solución que funciona con CSV 2.7.15: cuando cree el Bus
, registre una extensión:
ServletDestinationFactory destinationFactory = new ServletDestinationFactory();
bus.setExtension(destinationFactory, HttpDestinationFactory.class);
Por ejemplo, si tiene la siguiente configuración y la dirección está definida con http anexado a la misma, que no es una URL relativa al CXFServlet configurado, aparecerá el error anterior.
<jaxrs:server id="helloRestService" address="http://...">
<jaxrs:serviceBeans>
<ref bean="helloService" />
</jaxrs:serviceBeans>
</jaxrs:server>
La solución es simplemente mencionar la URL relativa sin http / https adjunto a la dirección.
Yo tuve el mismo problema. Y ninguna de las cosas de google tenía sentido. Descubrí en mi caso que me faltaba lo siguiente en el archivo de contexto de primavera:
<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" />
Intenta lo siguiente, funcionó para mí -
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http-jetty</artifactId>
<version>3.2.5</version>
<exclusions>
<exclusion>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
</exclusion>
<exclusion>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-util</artifactId>
</exclusion>
<exclusion>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-io</artifactId>
</exclusion>
<exclusion>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-security</artifactId>
</exclusion>
<exclusion>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-continuation</artifactId>
</exclusion>
<exclusion>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-http</artifactId>
</exclusion>
</exclusions>
</dependency>