CXF Component in Mule | SOAP Webservice in Mule



CXF Component in Mule

CXF is a java web service framework for building soap web service.component in  CXF component in Mule is used to for integration a soap web service by Apache CXF.

flow of CXF component :



Web service interface and implementation is written in java classes which are in src/main/java



HelloWorld.java : 

package com.test;
import javax.jws.WebMethod;  
import javax.jws.WebService;  
import javax.jws.soap.SOAPBinding;  
import javax.jws.soap.SOAPBinding.Style;  

@WebService  
@SOAPBinding(style = Style.RPC)  

public interface HelloWorld {

  @WebMethod String getHelloWorldAsString();

}


HelloWoldImpl.java : 

package com.test;
import javax.jws.WebService;  
@WebService(endpointInterface = "com.test.HelloWorld")  

public class HelloWorldImpl implements HelloWorld{
@Override
public String getHelloWorldAsString() {  

    return "Himanshu";
    }  

}

CXF component configuration : 


Config Reference :



Java component configuration : 




URL : http://localhost:8085/api/testcxf
Method : GET

generate wsdl by  http://localhost:8085/api/testcxf?wsdl

wsdl file :



<wsdl:definitions xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://test.com/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns1="http://schemas.xmlsoap.org/soap/http" name="HelloWorldService" targetNamespace="http://test.com/">

<wsdl:message name="getHelloWorldAsStringResponse">

<wsdl:part name="return" type="xsd:string"> </wsdl:part>
</wsdl:message>

<wsdl:message name="getHelloWorldAsString"> </wsdl:message>

<wsdl:portType name="HelloWorld">

<wsdl:operation name="getHelloWorldAsString">

<wsdl:input message="tns:getHelloWorldAsString" name="getHelloWorldAsString"> </wsdl:input>

<wsdl:output message="tns:getHelloWorldAsStringResponse" name="getHelloWorldAsStringResponse"> </wsdl:output>
</wsdl:operation>
</wsdl:portType>

<wsdl:binding name="HelloWorldServiceSoapBinding" type="tns:HelloWorld">

<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>

<wsdl:operation name="getHelloWorldAsString">

<soap:operation soapAction="" style="rpc"/>

<wsdl:input name="getHelloWorldAsString">

<soap:body namespace="http://test.com/" use="literal"/>
</wsdl:input>

<wsdl:output name="getHelloWorldAsStringResponse">

<soap:body namespace="http://test.com/" use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>

<wsdl:service name="HelloWorldService">

<wsdl:port binding="tns:HelloWorldServiceSoapBinding" name="HelloWorldPort">

<soap:address location="http://localhost:8085/api/testcxf"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>


XML project code : 


<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:dw="http://www.mulesoft.org/schema/mule/ee/dw" xmlns:ws="http://www.mulesoft.org/schema/mule/ws" xmlns:metadata="http://www.mulesoft.org/schema/mule/metadata" xmlns:mulexml="http://www.mulesoft.org/schema/mule/xml" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns:cxf="http://www.mulesoft.org/schema/mule/cxf" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
xmlns:spring="http://www.springframework.org/schema/beans" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/cxf http://www.mulesoft.org/schema/mule/cxf/current/mule-cxf.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/ws http://www.mulesoft.org/schema/mule/ws/current/mule-ws.xsd
http://www.mulesoft.org/schema/mule/ee/dw http://www.mulesoft.org/schema/mule/ee/dw/current/dw.xsd
http://www.mulesoft.org/schema/mule/xml http://www.mulesoft.org/schema/mule/xml/current/mule-xml.xsd">
    <cxf:configuration name="CXF_Configuration" enableMuleSoapHeaders="true" initializeStaticBusInstance="true" doc:name="CXF Configuration"/>
    <http:listener-config name="HTTP_Listener_Configuration" host="0.0.0.0" port="8085" basePath="/api" doc:name="HTTP Listener Configuration"/>
    <ws:consumer-config name="Web_Service_Consumer" wsdlLocation="Hello.wsdl" service="HelloWorldService" port="HelloWorldPort" serviceAddress="http://localhost:8085/api/testcxf" doc:name="Web Service Consumer"/>
    <flow name="test_cxfFlow">
        <http:listener config-ref="HTTP_Listener_Configuration" path="/testcxf" doc:name="HTTP"/>
        <cxf:jaxws-service serviceClass="com.test.HelloWorld" doc:name="CXF" configuration-ref="CXF_Configuration"/>
        <component class="com.test.HelloWorldImpl" doc:name="Java"/>
    </flow>
</mule>