Apache CXF Exception: java.lang.RuntimeException: Could not find conduit initiator for address

25,353

I had the same issue in my java project.

Firstly I had only the following CXF dependency in my pom.xml:

<dependency>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-rt-frontend-jaxws</artifactId>
    <version>${cxf.version}</version>
</dependency>

Afterwards, I added the two CXF dependencies:

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

The full pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>fr.atatorus</groupId>
    <artifactId>bookclient</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <properties>
        <cxf.version>2.2.3</cxf.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-frontend-jaxws</artifactId>
            <version>${cxf.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-transports-http</artifactId>
            <version>${cxf.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-transports-http-jetty</artifactId>
            <version>${cxf.version}</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.8.1</version>
        </dependency>
    </dependencies>
</project>

This configuration helped my project to work properly.

Share:
25,353

Related videos on Youtube

youhans
Author by

youhans

Updated on July 09, 2022

Comments

  • youhans
    youhans almost 2 years

    I want call a .net SOAP web service from java. .net Service has ws-security module and I used apache CXF for setting username and password (and maybe later X.509 certificate). The code I used is:

        ITaxOrganService wsHttpBindingITaxOrganService = new TaxOrganService().getWSHttpBindingITaxOrganService();
        Endpoint endpoint = ClientProxy.getClient(wsHttpBindingITaxOrganService).getEndpoint();
    
        Map<String,Object> outProps = new HashMap<>();
        outProps.put(WSHandlerConstants.ACTION,WSHandlerConstants.USERNAME_TOKEN);
        outProps.put(WSHandlerConstants.USER,"*****");
        outProps.put(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_TEXT);
        outProps.put(WSHandlerConstants.PW_CALLBACK_CLASS, ShahrdariPasswordCallback.class.getName());
    
        WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps);
        endpoint.getOutInterceptors().add(wssOut);
        PermissionPrintDS permissionPrintDS = wsHttpBindingITaxOrganService.providePermissionInfoByPermNo(10000198);
    

    but java throw an exception on last line:

        Caused by: java.lang.RuntimeException: Could not find conduit initiator for address: http://urbanservices.iri/Services/xxyzService/xxyzService.svc and transport: http://schemas.xmlsoap.org/soap/http
        at org.apache.cxf.binding.soap.SoapTransportFactory.getConduit(SoapTransportFactory.java:224) ~[cxf-rt-bindings-soap-3.1.0.jar:3.1.0]
        at org.apache.cxf.binding.soap.SoapTransportFactory.getConduit(SoapTransportFactory.java:229) ~[cxf-rt-bindings-soap-3.1.0.jar:3.1.0]
        at org.apache.cxf.endpoint.AbstractConduitSelector.createConduit(AbstractConduitSelector.java:145) ~[cxf-core-3.1.0.jar:3.1.0]
        at org.apache.cxf.endpoint.AbstractConduitSelector.getSelectedConduit(AbstractConduitSelector.java:107) ~[cxf-core-3.1.0.jar:3.1.0]
        at org.apache.cxf.endpoint.UpfrontConduitSelector.prepare(UpfrontConduitSelector.java:63) ~[cxf-core-3.1.0.jar:3.1.0]
        at org.apache.cxf.endpoint.ClientImpl.prepareConduitSelector(ClientImpl.java:853) ~[cxf-core-3.1.0.jar:3.1.0]
        at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:511) ~[cxf-core-3.1.0.jar:3.1.0]
        at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:425) ~[cxf-core-3.1.0.jar:3.1.0]
        at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:326) ~[cxf-core-3.1.0.jar:3.1.0]
        at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:279) ~[cxf-core-3.1.0.jar:3.1.0]
        at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:96) ~[cxf-rt-frontend-simple-3.1.0.jar:3.1.0]
        at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:139) ~[cxf-rt-frontend-jaxws-3.1.0.jar:3.1.0]
        at com.sun.proxy.$Proxy144.providePermissionInfoByPermNo(Unknown Source) ~[na:na]
    

    What can I do?

    • Tim Biegeleisen
      Tim Biegeleisen about 9 years
      Have a look at this SO post, which discusses your problem. Since adding the transport JAR didn't fix your problem you can focus on the other suggestions
  • vadipp
    vadipp almost 5 years
    I've added only cxf-rt-transports-http, not cxf-rt-transports-http-jetty, and it helped anyway. Thanks!

Related