== CXF OSGI Example using Blueprint

=== Introduction

A simple example which receives web service calls (via a CXF consumer,
using bean binding) and writes these requests into the file system. It's
not a very useful use case, but the goal of this example is to show you
how you can use the CXF consumer component in an OSGI environment with
the OSGI HTTP service. If your target container is Apache Karaf or
Apache ServiceMix, you can use PAX Web to setup and start an OSGI HTTP
service. All Camel bundles using a Camel CXF consumer can use this HTTP
service without needing to start individual Jetty instances. Another
advantage is that all provided services can now share the same port.

=== Build

You will need to compile this example first:

....
mvn install
....

=== Run

To run the example on Apache Karaf 4.x or newer

==== Step 1: Karaf

Launch the server

....
karaf / karaf.bat
....

==== Step 2: Add features

Add features required

....
feature:repo-add camel ${version}
feature:install war
feature:install cxf
feature:install camel
feature:install camel-jaxb
feature:install camel-cxf
....

==== Step 3: Deploy

Deploy the example

....
install -s mvn:org.apache.camel.example/camel-example-cxf-blueprint/${version}
....

==== Step 4: Verify that your service is available using the following url in the browser.

We assume you're using Karaf's default PAX Web configuration which uses
port `8181` for http. If you would like to use another port or https,
change the configuration in `+${KARAF_HOME}/etc/org.ops4j.pax.web.cfg+`.
The immediate extension after the hostname and port (`cxf` in the
below URL) is configured via the org.apache.cxf.osgi.cfg file (Please
see http://team.ops4j.org/wiki//display/paxweb/Pax+Web for more
information on PAX Web).

....
http://localhost:8181/cxf/camel-example-cxf-blueprint/webservices/incident?wsdl
....

http://localhost:8181/cxf/camel-example-cxf-blueprint/webservices/incident?wsdl

==== Step 5: Start SOAPUI (2.x or later)

Create a new project called camel-example-cxf-osgi Point to the
following url:
http://localhost:8181/cxf/camel-example-cxf-blueprint/webservices/incident?wsdl
Open the request 1 (under camel-example-cxf-blueprint –>
ReportIncidentBinding –> ReportIncident) and copy/paste a SOAP message
generated by the unit test, for example:

....
   <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
      <soap:Header />
      <soap:Body>
         <ns2:inputReportIncident xmlns:ns2="http://reportincident.example.camel.apache.org">
            <incidentId>111</incidentId>
            <incidentDate>2011-03-05</incidentDate>
            <givenName>Christian</givenName>
            <familyName>Mueller</familyName>
            <summary>Bla</summary>
            <details>Bla bla</details>
            <email>cmueller@apache.org</email>
            <phone>0049 69 1234567</phone>
         </ns2:inputReportIncident>
      </soap:Body>
   </soap:Envelope>
....

==== Step 6: Check the file system

Check the folder `target/inbox/` in the Karaf base directory to see
that a message has arrived.

=== Help and contributions

If you hit any problem using Camel or have some feedback, then please
https://camel.apache.org/support.html[let us know].

We also love contributors, so
https://camel.apache.org/contributing.html[get involved] :-)

The Camel riders!
