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.x

1) launch the server
   karaf.bat
  
Note for Karaf 2.2.x: 
   a) edit the etc/jre.properties file to add the following packages to be exported
      jre-1.6=, \
      com.sun.org.apache.xerces.internal.dom, \
      com.sun.org.apache.xerces.internal.jaxp, \

   b) from the same file comment out the following exports already provided by the bundles
      that will be imported next: javax.xml.bind*, javax.jws*, javax.xml.soap*, javax.xml.ws*, 
      javax.activation, javax.annotation, javax.xml.stream*.

2) Add features required
   features:addUrl mvn:org.apache.camel.karaf/apache-camel/2.9.0/xml/features
   features:install war
   features:install cxf
   features:install camel-jaxb
   features:install camel-blueprint
   features:install camel-cxf

   Note: Apache Camel 2.9.0 is being used above, but you should of course change the
   version number to the exact version of Camel being used.

3) Deploy the example
   osgi:install -s mvn:org.apache.camel/camel-example-cxf-blueprint
  
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:
  
   <xml version="1.0" encoding="UTF-8"?>
   <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!



