Setting up the Multi Bundle Distribution of CXF Distributed OSGi
The multi-bundle distribution of CXF/DOSGi contains all the DOSGi bundles plus their dependencies as individual bundles. While the single-bundle distribution is certainly easier to get started with, the multi-bundle distro is more flexible wrt to sharing bundles and updating dependencies. To obtain a multi bundle distribution see the DOSGi Releases page.
Setting up Felix
Verified with: Felix 4.0.2
In the distribution you will find a file called: .../conf/felix.config.properties.append. This file contains auto-start instructions for every bundle in the distribution.
- Simply copy the content of the whole file and append it to the conf/config.properties file of the Felix distribution.
- Fix the file:apache-cxf-dosgi-ri URLs in the file to point to where you have unzipped the distribution.
At the end the conf/config.properties file looks like this:
... existing lines ...
org.ops4j.pax.web.session.timeout=30
org.osgi.framework.startlevel.beginning=95
felix.auto.start.51=file:felix.auto.start.52=file:... and so on ...
You may need to update the 'org.osgi.framework.system.packages.extra' to reference the org.w3c.dom.traversal package.
Also a felix.startlevel.bundle may need to be uncommented and set to 95; that may be needed to make sure the custom bundles importing annotations will always be started after the spec bundles have been loaded.
Now start Felix:
.../felix-4.0.2> java -jar bin/felix.jar
Welcome to Felix.
=================
... some log messages may appear ...
-> bundles
ID State Level Name
0|Active | 0|org.apache.felix.framework (4.0.2)
1|Active | 1|org.apache.felix.bundlerepository (1.6.6)
2|Active | 1|org.apache.felix.gogo.command (0.12.0)
3|Active | 1|org.apache.felix.gogo.runtime (0.10.0)
4|Active | 1|org.apache.felix.gogo.shell (0.10.0)
5|Active | 85|org.apache.servicemix.specs.stax-api-1.0 (1.9.0)
6|Active | 53|org.apache.geronimo.specs.geronimo-javamail_1.4_spec (1.2.0)
7|Active | 84|org.apache.servicemix.specs.saaj-api-1.3 (1.9.0)
8|Active | 52|org.apache.geronimo.specs.geronimo-activation_1.1_spec (1.1.0)
9|Active | 83|org.apache.servicemix.bundles.commons-pool (1.5.4.1)
10|Active | 51|org.apache.geronimo.specs.geronimo-annotation_1.0_spec (1.1.1)
11|Active | 82|woodstox-core-asl (4.1.1)
12|Active | 81|stax2-api (3.1.1)
13|Active | 80|org.apache.neethi (3.0.1)
14|Active | 79|org.apache.servicemix.bundles.xmlresolver (1.2.0.4)
15|Active | 78|org.apache.servicemix.bundles.asm (3.3.0.2)
16|Active | 77|org.apache.ws.xmlschema.core (2.0.1)
17|Active | 76|org.apache.servicemix.bundles.xmlsec (1.4.5.1)
18|Active | 75|org.apache.servicemix.bundles.wsdl4j (1.6.2.5)
19|Active | 74|org.apache.servicemix.bundles.jaxb-impl (2.1.13.2)
20|Active | 73|org.ops4j.pax.web.pax-web-jetty (1.0.3)
21|Active | 72|org.ops4j.pax.web.pax-web-runtime (1.0.3)
22|Active | 71|org.ops4j.pax.web.pax-web-spi (1.0.3)
23|Active | 70|org.eclipse.jetty.aggregate.jetty-all-server (7.4.2.v20110526)
24|Active | 69|org.springframework.osgi.extender (1.2.1)
25|Active | 68|org.springframework.osgi.core (1.2.1)
26|Active | 67|org.springframework.osgi.io (1.2.1)
27|Active | 66|org.springframework.expression (3.0.6.RELEASE)
28|Active | 65|org.springframework.asm (3.0.6.RELEASE)
29|Active | 64|org.springframework.aop (3.0.6.RELEASE)
30|Active | 95|cxf-dosgi-ri-topology-manager (1.3.0.SNAPSHOT)
31|Resolved | 63|com.springsource.slf4j.jcl (1.5.10)
32|Active | 94|cxf-dosgi-ri-dsw-cxf (1.3.0.SNAPSHOT)
33|Active | 62|com.springsource.slf4j.api (1.5.10)
34|Active | 93|osgi.enterprise (4.2.0.201003190513)
35|Active | 61|com.springsource.org.aopalliance (1.0.0)
36|Active | 92|cxf-dosgi-ri-discovery-local (1.3.0.SNAPSHOT)
37|Active | 60|org.springframework.context (3.0.6.RELEASE)
38|Active | 91|org.apache.cxf.bundle-minimal (2.5.2)
39|Active | 90|org.apache.servicemix.bundles.opensaml (2.4.1.1)
40|Active | 59|org.springframework.beans (3.0.6.RELEASE)
41|Active | 58|org.springframework.core (3.0.6.RELEASE)
42|Active | 89|org.apache.servicemix.bundles.joda-time (1.5.2.4)
43|Active | 57|com.springsource.org.jdom (1.1.0)
44|Active | 88|org.apache.servicemix.specs.jsr311-api-1.1.1 (1.9.0)
45|Active | 56|com.springsource.org.apache.commons.logging (1.1.1)
46|Active | 87|org.apache.servicemix.specs.jaxws-api-2.1 (1.9.0)
47|Active | 55|org.apache.geronimo.specs.geronimo-ws-metadata_2.0_spec (1.1.3)
48|Active | 86|org.apache.servicemix.specs.jaxb-api-2.1 (1.9.0)
49|Active | 54|org.apache.geronimo.specs.geronimo-servlet_3.0_spec (1.0.0)
Setting up Equinox
Verified with: Eclipse/Equinox 3.6.2
In the distribution you will find a file called: .../conf/equinox.config.ini.append. This file contains auto-start instructions for every bundle in the distribution.
- Create a directory in the Equinox installation, e.g. dosgi_conf and create a file called config.ini in this directory with the content of the equinox.config.ini.append file.
- Fix the ../apache-cxf-dosgi-ri path locations in the file to point to where you have unzipped the distribution.
At the end the dosgi_conf/config.ini file looks like this:
org.ops4j.pax.web.session.timeout=30
osgi.bundles=org.eclipse.osgi.services@start, \
c:/apache-cxf-dosgi-ri-1.3/dosgi_bundles/geronimo-annotation_1.0_spec-1.1.1.jar@start, c:/apache-cxf-dosgi-ri-1.3/dosgi_bundles/geronimo-activation_1.1_spec-1.0.2.jar@start,
... and so on ...
Now start Equinox:
.../eclipse> java -jar plugins/org.eclipse.osgi_3.6.2.R36x_v20110210.jar -console -configuration dosgi_conf
... some log messages may appear ...
osgi> ss
Framework is launched.
id State Bundle
0 ACTIVE org.eclipse.osgi_3.6.2.R36x_v20110210
1 ACTIVE org.apache.geronimo.specs.geronimo-annotation_1.0_spec_1.1.1
2 ACTIVE org.apache.geronimo.specs.geronimo-activation_1.1_spec_1.1.0
3 ACTIVE org.apache.geronimo.specs.geronimo-javamail_1.4_spec_1.2.0
4 ACTIVE org.apache.geronimo.specs.geronimo-servlet_3.0_spec_1.0.0
5 ACTIVE org.apache.geronimo.specs.geronimo-ws-metadata_2.0_spec_1.1.3
6 ACTIVE com.springsource.org.apache.commons.logging_1.1.1
7 ACTIVE com.springsource.org.jdom_1.1.0
8 ACTIVE org.springframework.core_3.0.6.RELEASE
9 ACTIVE org.springframework.beans_3.0.6.RELEASE
10 ACTIVE org.springframework.context_3.0.6.RELEASE
12 ACTIVE com.springsource.org.aopalliance_1.0.0
13 ACTIVE com.springsource.slf4j.api_1.5.10
Fragments=14
14 RESOLVED com.springsource.slf4j.jcl_1.5.10
Master=13
15 ACTIVE org.springframework.aop_3.0.6.RELEASE
16 ACTIVE org.springframework.asm_3.0.6.RELEASE
17 ACTIVE org.springframework.expression_3.0.6.RELEASE
18 ACTIVE org.springframework.osgi.io_1.2.1
19 ACTIVE org.springframework.osgi.core_1.2.1
20 ACTIVE org.springframework.osgi.extender_1.2.1
21 ACTIVE org.eclipse.jetty.aggregate.jetty-all-server_7.4.2.v20110526
22 ACTIVE org.ops4j.pax.web.pax-web-spi_1.0.8
23 ACTIVE org.ops4j.pax.web.pax-web-runtime_1.0.8
24 ACTIVE org.ops4j.pax.web.pax-web-jetty_1.0.8
25 ACTIVE org.apache.servicemix.bundles.jaxb-impl_2.1.13.2
26 ACTIVE org.apache.servicemix.bundles.wsdl4j_1.6.2.5
27 ACTIVE org.apache.servicemix.bundles.xmlsec_1.4.5.1
28 ACTIVE org.apache.ws.xmlschema.core_2.0.1
29 ACTIVE org.apache.servicemix.bundles.asm_3.3.0.2
30 ACTIVE org.apache.servicemix.bundles.xmlresolver_1.2.0.4
31 ACTIVE org.apache.neethi_3.0.1
32 ACTIVE stax2-api_3.1.1
33 ACTIVE woodstox-core-asl_4.1.1
34 ACTIVE org.apache.servicemix.bundles.commons-pool_1.5.4.1
35 ACTIVE org.apache.servicemix.specs.saaj-api-1.3_1.9.0
36 ACTIVE org.apache.servicemix.specs.stax-api-1.0_1.9.0
37 ACTIVE org.apache.servicemix.specs.jaxb-api-2.1_1.9.0
38 ACTIVE org.apache.servicemix.specs.jaxws-api-2.1_1.9.0
39 ACTIVE org.apache.servicemix.specs.jsr311-api-1.1.1_1.9.0
40 ACTIVE org.apache.servicemix.bundles.joda-time_1.5.2.4
41 ACTIVE org.apache.servicemix.bundles.opensaml_2.4.1.1
42 ACTIVE org.apache.cxf.bundle-minimal_2.5.0
43 ACTIVE cxf-dosgi-ri-discovery-local_1.3.0.SNAPSHOT
44 ACTIVE osgi.enterprise_4.2.0.201003190513
45 ACTIVE cxf-dosgi-ri-dsw-cxf_1.3.0.SNAPSHOT
46 ACTIVE cxf-dosgi-ri-topology-manager_1.3.0.SNAPSHOT