How to Create an Apache CXF SOAP Proxy in Apache Camel with Apache Felix Maven Bundle Plugin

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<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>br.eti.fernandoribeiro.sample</groupId>
  <artifactId>cxfsample</artifactId>
  <packaging>bundle</packaging>
  <version>1.0</version>
  <dependencies>
    <dependency>
      <groupId>org.apache.camel</groupId>
      <artifactId>camel-core</artifactId>
      <version>2.8.0</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.camel</groupId>
      <artifactId>camel-cxf</artifactId>
      <version>2.8.0</version>
      <scope>provided</scope>
    </dependency>
  </dependencies>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <version>2.3.5</version>
        <extensions>true</extensions>
        <configuration>
          <instructions>
            <DynamicImport-Package>*</DynamicImport-Package> <!-- replacing several Apache CXF imports -->
          </instructions>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

SampleService.wsdl

<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions targetNamespace="http://www.fernandoribeiro.eti.br/sample/cxf" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://www.fernandoribeiro.eti.br/sample/cxf" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
  <wsdl:types xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:schema elementFormDefault="qualified" targetNamespace="http://www.fernandoribeiro.eti.br/sample/cxf">
      <xs:element name="Sample">
        <xs:complexType />
      </xs:element>
      <xs:element name="SampleResponse">
        <xs:complexType />
      </xs:element>
    </xs:schema>
  </wsdl:types>
  <wsdl:message name="Sample">
    <wsdl:part name="Sample" element="tns:Sample" />
  </wsdl:message>
  <wsdl:message name="SampleResponse">
    <wsdl:part name="SampleResponse" element="tns:SampleResponse" />
  </wsdl:message>
  <wsdl:portType name="SamplePortType">
    <wsdl:operation name="SampleOperation">
      <wsdl:input message="tns:Sample" />
      <wsdl:output message="tns:SampleResponse" />
    </wsdl:operation>
  </wsdl:portType>
  <wsdl:binding name="SampleSoapBinding" type="tns:SamplePortType">
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
    <wsdl:operation name="SampleOperation">
      <soap:operation soapAction="" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
  </wsdl:binding>
  <wsdl:service name="SampleService">
    <wsdl:port name="SamplePort" binding="tns:SampleSoapBinding">
      <soap:address location="http://localhost/cxfsample/SampleService" />
    </wsdl:port>
  </wsdl:service>
</wsdl:definitions>

beans.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:camel="http://camel.apache.org/schema/spring" xmlns:cxf="http://camel.apache.org/schema/cxf" 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.xsd http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd http://camel.apache.org/schema/cxf http://camel.apache.org/schema/cxf/camel-cxf.xsd">
  <bean id="sampleRouteBuilder" class="br.eti.fernandoribeiro.sample.cxf.SampleRouteBuilder" />
  <camel:camelContext>
    <camel:routeBuilder ref="sampleRouteBuilder" />
  </camel:camelContext>
  <cxf:cxfEndpoint id="sampleCxfEndpoint" address="http://0.0.0.0:8080/cxfsample/SampleService" wsdlURL="wsdl/SampleService.wsdl" endpointName="sample:SamplePort" serviceName="sample:SampleService" xmlns:sample="http://www.fernandoribeiro.eti.br/sample/cxf" />
</beans>

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s