CXF OSGI Example using Blueprint
================================

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.

You will need to compile this example first:
  mvn install

To run the example on Apache ServiceMix 4.x or Apache Karaf 2.2.5 or better

1) launch the server
   karaf.bat
  
Note for Karaf 2.2.5 onwards:
   a) copy the etc/jre.properties.cxf to override the existing etc/jre.properties file


2) Add features required
   features:addUrl mvn:org.apache.camel.karaf/apache-camel/${version}/xml/features
   features:install war
   features:install cxf
   features:install camel-jaxb
   features:install camel-cxf


3) Deploy the example
   osgi:install -s mvn:org.apache.camel/camel-example-cxf-blueprint/${version}
  
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
  
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>
  
6) Check the file system
   Check the folder "target/inbox/" in the Karaf base directory to see that a message has arrived.


This example is described in more detail at
  http://camel.apache.org/cxf-example-osgi-blueprint.html

If you hit any problems please let us know on the Camel Forums
  http://camel.apache.org/discussion-forums.html

Please help us make Apache Camel better - we appreciate any feedback you may
have.  Enjoy!

------------------------
The Camel Riders!



