CXF Example OSGi
Available as of Camel 2.8
![]() | Spring-DM vs. OSGi Blueprint This example uses Spring DM for OSGi. There is another CXF Example OSGi Blueprint that uses Blueprint. |
The example is in the examples/camel-example-cxf-osgi directory.
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.
This example is located in the examples/camel-example-cxf-osgi directory of the Camel distribution.
There is a README.txt file with instructions how to run it.
You will need to compile this example first:
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 1.x / 2.x
1) launch the server
For Karaf 2.0 : 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-SNAPSHOT/xml/features
features:install war
features:install cxf
features:install camel-cxf
3) Deploy the example bundle
osgi:install -s mvn:org.apache.camel/camel-example-cxf-osgi
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.
5) Start SOAPUI
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>cmuel...@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.
See Also