Utiliser CXF jaxwsserverfactorybean exception ne peut trouver aucun HttpDestinationFactory enregistré à partir de l'autobus

lorsque vous utilisez Apache CXF JaxWsServerFactoryBean en mode console (essayer de démarrer le serveur en ligne de commande java)) Obtiendrez d'exception comme ci-dessous:

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)

lorsque le même service impl utilisé dans Tomcat via Spring, il fonctionne.

<jaxws:endpoint id="abc" implementor="com.AbcServicePortTypeImpl" address="/abc">
42
demandé sur Anderson Mao 2012-11-29 06:02:54

5 réponses

Inclure cxf-rt-transports-http-jetée jar dans le pom maven.xml permettra de résoudre le problème.

    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-transports-http-jetty</artifactId>
        <version>2.7.6</version>
    </dependency>
69
répondu sendon1982 2013-08-16 06:43:49

par exemple, si vous avez la configuration ci-dessous et que l'adresse est définie avec http ajouté, qui n'est pas une url relative à la CXFServlet configuré, l'erreur ci-dessus viendra.

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

la Solution est simplement de mentionner l'url relative sans http / https ajouté à l'adresse.

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

5
répondu Kartik Narayana Maringanti 2016-03-27 02:35:09

j'ai eu le même problème. Et rien sur google n'avait de sens. J'ai découvert dans mon cas, j'ai été absent suivantes au printemps contexte fichier:

   <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" />
3
répondu Ashesh Vidyut 2013-06-07 18:19:23

une autre solution qui fonctionne avec CSV 2.7.15: quand vous créez le Bus, enregistrer une extension:

ServletDestinationFactory destinationFactory = new ServletDestinationFactory();
bus.setExtension(destinationFactory, HttpDestinationFactory.class);
3
répondu Aaron Digulla 2016-01-15 09:32:06

Essayez les solutions suivantes, il a travaillé pour moi -

<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>
0
répondu Prateek Mehta 2018-08-12 16:51:20