| CXF OSGI Example |
| ================ |
| |
| A simple example which receives web service calls (via a CXF consumer, using bean binding) |
| and write 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 your Camel |
| bundles using a Camel CXF consumer can use this HTTP service and do not have to start it's |
| own Jetty instance. Another possibility you get is, that all your provided services can share |
| the same port. |
| |
| |
| You will need to compile this example first: |
| mvn install |
| |
| Remarks: |
| - During the compilation phase, a unit test will be performed, this unit test simulates the |
| communication between a client calling the web service exposed by our camel/cxf route. |
| - In Eclipse, I have used the following option when starting the junit test case. This option tells |
| CXF that it must use log4j : -Dorg.apache.cxf.Logger=org.apache.cxf.common.logging.Log4jLogger |
| |
| To run the example on Apache ServiceMix 4.x or Apache Karaf 2.2.x |
| |
| 1) launch the server |
| karaf.bat |
| |
| For Karaf 2.2 : edit the file jre.properties 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, \ |
| |
| 2) Add features required |
| features:addUrl mvn:org.apache.camel.karaf/apache-camel/2.8.0/xml/features |
| features:install war |
| features:install camel-spring |
| features:install camel-jaxb |
| features:install camel-cxf |
| |
| Note: In this example we use Apache Camel 2.8.0 as the version. You should of course use the |
| version number of Camel you are using. |
| |
| 3) Deploy our example |
| osgi:install -s mvn:org.apache.camel/camel-example-cxf-osgi/2.8.0 |
| |
| 4) Verify that your service is available using in the browser the following url. We assume you |
| use the default PAX Web configuration which use the 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. Please |
| see http://wiki.ops4j.org/display/paxweb/Pax+Web for more information. |
| |
| http://localhost:8181/cxf/camel-example-cxf-osgi/webservices/incident?wsdl |
| |
| 5) Start SOAPUI (2.x) |
| Create a new project called camel-example-cxf-osgi |
| Point to the following url : http://localhost:8181/cxf/camel-example-cxf-osgi/webservices/incident?wsdl |
| Open the request 1 (under camel-example-cxf-osgi --> ReportIncidentBinding --> ReportIncident) and copy/paste the SOAP |
| message generated by the unit test |
| |
| ex : |
| --> and the message formatted that you copy in SOAPUI |
| |
| <?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 your file system that a message has been arrived. |
| |
| |
| This example is documented at |
| http://camel.apache.org/cxf-example-osgi.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! |
| |
| |
| |