You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 5 Next »

Apache CXF provides the Reference Implementation of the Distribution Software (DSW) component of the Distributed OSGi Specification (RFC 119 in http://www.osgi.org/download/osgi-4.2-early-draft2.pdf).

It implements RFC 119 using Web Services, leveraging SOAP over HTTP and exposing the Web Service over a WSDL contract.
Note that currently this code lives in the sandbox. We are working on moving into the main CXF code base at the moment.

NOTE: This page is work in progress!

Getting Started

To get started, check out the code from http://svn.apache.org/repos/asf/cxf/sandbox/dosgi
Then build & test using:

mvn install

This builds the code, runs the unit and system tests and finally creates two distributions:
distribution/multi-bundle: This distribution is a zip file containing the Distributed OSGi bundles, as well as all their dependencies.
distribution/single-bundle: This is a convenience distribution of a single bundle that embeds all the dependencies.

Running it

Configuration file snippets are automatically generated during the build process. You can paste these snippets in the configuration of you OSGi container to automatically load the bundles for you distribution.

After doing a build, the following snippets are available:
distribution/multi-bundle/target/felix.config.properties.append
distribution/multi-bundle/target/equinox.config.ini.append
distribution/single-bundle/felix.config.properties.append
distribution/single-bundle/equinox.config.ini.append

Note that to run the Distributed OSGi bundles, you need an OSGi container that implements the ListenerHook Service Registry Hook. This is a new feature in OSGi 4.2 which is available in Felix from version 1.4.1 and Equinox 3.5 milestones since December 2008.

Using Felix

Verified with: Felix pre 1.4.1 trunk

  • Append the content of the felix.config.properties.append file to the conf/config.properties file that comes with Felix.
  • Then start Felix as normal.

For the single-bundle distribution, the following bundles will be present:

*java -jar bin\felix.jar*
... log output ommitted ...
-> ps
START LEVEL 2
   ID   State         Level  Name
[   0] [Active     ] [    0] System Bundle (1.5.0.SNAPSHOT)
e Distribution (1.0.0.SNAPSHOT)
[   1] [Active     ] [    1] Apache Felix Shell Service (1.1.0.SNAPSHOT)
[   2] [Active     ] [    1] Apache Felix Shell TUI (1.1.0.SNAPSHOT)
[   3] [Active     ] [    1] Apache Felix Bundle Repository (1.3.0.SNAPSHOT)
[   4] [Active     ] [    2] OSGi R4 Compendium Bundle (4.1.0)
[   5] [Active     ] [    2] Distributed OSGi Distribution Software Single-Bundl

For the multi-bundle distribution the list is obviously much longer:

START LEVEL 34
   ID   State         Level  Name
[   0] [Active     ] [    0] System Bundle (1.5.0.SNAPSHOT)
[   1] [Active     ] [    1] Apache Felix Shell Service (1.1.0.SNAPSHOT)
[   2] [Active     ] [    1] Apache Felix Shell TUI (1.1.0.SNAPSHOT)
[   3] [Active     ] [    1] Apache Felix Bundle Repository (1.3.0.SNAPSHOT)
[   4] [Active     ] [    2] OSGi R4 Compendium Bundle (4.1.0)
[   5] [Active     ] [    3] geronimo-annotation_1.0_spec (1.1.1)
[   6] [Active     ] [    4] geronimo-activation_1.1_spec (1.0.2)
[   7] [Active     ] [    5] geronimo-javamail_1.4_spec (1.2)
[   8] [Active     ] [    6] geronimo-ws-metadata_2.0_spec (1.1.2)
[   9] [Active     ] [    7] geronimo-servlet_2.5_spec (1.1.2)
[  10] [Active     ] [    8] Apache Commons Logging (1.1.1)
[  11] [Active     ] [    9] JDOM DOM Processor (1.0.0)
[  12] [Active     ] [   10] spring-core (2.5.5)
[  13] [Active     ] [   11] spring-beans (2.5.5)
[  14] [Active     ] [   12] spring-context (2.5.5)
[  15] [Active     ] [   13] AOP Appliance API (1.0.0)
[  16] [Active     ] [   14] spring-aop (2.5.5)
[  17] [Active     ] [   15] spring-osgi-io (1.1.2)
[  18] [Active     ] [   16] spring-osgi-core (1.1.2)
[  19] [Active     ] [   17] spring-osgi-extender (1.1.2)
[  20] [Active     ] [   18] Jetty Utilities (6.1.9)
[  21] [Active     ] [   19] Jetty Server (6.1.9)
[  22] [Active     ] [   20] org.apache.servicemix.specs.locator-1.0.0.jar
[  23] [Active     ] [   21] Apache ServiceMix OSGI Common Bundles: jaxb-impl (4.0.0.m1)
[  24] [Active     ] [   22] Apache ServiceMix OSGI Common Bundles: wsdl4j (4.0.0.m1)
[  25] [Active     ] [   23] Apache ServiceMix OSGI Common Bundles: xmlschema (4.0.0.m1)
[  26] [Active     ] [   24] Apache ServiceMix OSGI Common Bundles: asm-2.2.3 (1.0.0.rc1)
[  27] [Active     ] [   25] Apache ServiceMix OSGI Common Bundles: xmlresolver (4.0.0.m1)
[  28] [Active     ] [   26] Apache ServiceMix OSGI Common Bundles: neethi (4.0.0.m1)
[  29] [Active     ] [   27] Apache ServiceMix Bundles: woodstox-3.2.7 (3.2.7.1)
[  30] [Active     ] [   28] Apache CXF Minimal Bundle Jar (2.0.8)
[  31] [Active     ] [   29] CXF Local Discovery Service Bundle (1.0.0.SNAPSHOT)
[  32] [Active     ] [   30] CXF Distributed Software Bundle (1.0.0.SNAPSHOT)
[  33] [Active     ] [   31] Apache ServiceMix Specs :: SAAJ API 1.3 (1.0.0)
[  34] [Active     ] [   32] Apache ServiceMix Specs :: STAX API 1.0 (1.0.0)
[  35] [Active     ] [   33] Apache ServiceMix Specs :: JAXB API 2.0 (1.0.0)
[  36] [Active     ] [   34] Apache ServiceMix Specs :: JAXWS API 2.0 (1.0.0)
Using Equinox

Verified with: Eclipse Equinox 3.5M4

Using Equinox from with the Eclipse IDE

This option is really handy for debugging. Verified with: Eclipse 3.5M5

Samples

The samples directory contains the following sample projects:
greeter: a very simple demo of a Greeter OSGi Service exposed remotely and a Consumer invoking on it.
spring_dm: a demo created using Spring-DM. Rather than invoking on the OSGi API's directly, the Spring-DM demo shows how you can use Spring to configure your beans as OSGi Services and similarly how to use Spring-DM to invoke a (remote) OSGi Service.

Walkthrough of the Greeter Demo
  • No labels