CXF Bundle is hardly usable under OSGi
--------------------------------------
Key: CXF-2091
URL: https://issues.apache.org/jira/browse/CXF-2091
Project: CXF
Issue Type: Bug
Components: OSGi
Affects Versions: 2.1.4
Environment: Equinox
Reporter: Hendy Irawan
CXF-Bundle is really hard to use.
The cause is because it's very strict in its Import-Package manifest, version
constract. Especially in packages that are provided by default in say, JDK 6,
but not exported with version by Equinox.
For example the: Import-Package: javax.xml.stream; version="1.0.0" results in
the following error
osgi> start 81
org.osgi.framework.BundleException: The bundle could not be resolved. Reason:
Missing Constraint: Import-Package: javax.xml.stream; version="1.0.0"
at
org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:305)
at
org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:265)
at
org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:257)
at
org.eclipse.osgi.framework.internal.core.FrameworkCommandProvider._start(FrameworkCommandProvider.java:257)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.eclipse.osgi.framework.internal.core.FrameworkCommandInterpreter.execute(FrameworkCommandInterpreter.java:150)
at
org.eclipse.osgi.framework.internal.core.FrameworkConsole.docommand(FrameworkConsole.java:302)
at
org.eclipse.osgi.framework.internal.core.FrameworkConsole.console(FrameworkConsole.java:287)
at
org.eclipse.osgi.framework.internal.core.FrameworkConsole.run(FrameworkConsole.java:223)
at java.lang.Thread.run(Thread.java:619)
Which happens because Equinox somehow exports the package without version:
osgi> p javax.xml.stream
javax.xml.stream; version="0.0.0"<System Bundle [0]>
init...@reference:file:plugins/org.eclipse.update.configurator.jar/ [2]
imports
/.../target/work/webapp/WEB-INF/load/org.apache.servicemix.bundles.neethi-2.0.4_1.jar
[55] imports
Note that Neethi packaged by ServiceMix has no problem importing it.
I would vote for these solutions/workarounds:
* remove the version requirement of Import-Package, of all JDK(6) packages
* remove the version requirement for all "1.0.0" packages, or change it to
"[0.0.0,2.0.0)" which means "anything before version 2.0.0, which I think is a
more practical interpretation of require-version-1.0"
* document where to find the rest of dependencies (OSGi bundles, not plain Java
JARs). I have to search through :
http://servicemix.apache.org/SMX4/bundles-repository.html , ServiceMix specs,
Geronimo specs, and SpringSource Repository and mix and match between them...
nightmare :-(
Also important: Even if I can find those bundles, simply installing (e.g.
javax.*) bundles which has the proper exported version is usually not enough,
because these packages are already exported by system bundle... these packages
will have two suppliers.... resulting in "uses conflict" errors. Happens to my
case. :-(
osgi> b 81
/.../target/work/webapp/WEB-INF/load/cxf-bundle-jaxrs-2.1.4.jar [81]
Id=81, Status=INSTALLED Data
Root=/.../target/work/eclipse/configuration/org.eclipse.osgi/bundles/81/data
No registered services.
No services in use.
Exported packages
org.apache.cxf.configuration.jsse; version="2.1.4"[exported]
org.apache.cxf.jaxrs.utils; version="2.1.4"[exported]
org.apache.cxf.service.invoker; version="2.1.4"[exported]
org.codehaus.xfire.aegis.type.java5; version="0.0.0"[exported]
org.apache.cxf.binding.xml; version="2.1.4"[exported]
org.apache.cxf.configuration.security; version="2.1.4"[exported]
org.apache.cxf.bus.spring; version="2.1.4"[exported]
org.apache.cxf.clustering.spring; version="2.1.4"[exported]
org.apache.cxf.jaxrs.utils.schemas; version="2.1.4"[exported]
org.apache.cxf.management.annotation; version="2.1.4"[exported]
org.apache.cxf.transport.http.gzip; version="2.1.4"[exported]
org.apache.cxf.aegis.util; version="2.1.4"[exported]
org.apache.cxf.transport.https; version="2.1.4"[exported]
org.apache.cxf.binding.soap.wsdl11; version="2.1.4"[exported]
org.apache.cxf.resource; version="2.1.4"[exported]
org.apache.cxf.jaxb; version="2.1.4"[exported]
org.apache.cxf.transports.http_jetty.configuration;
version="2.1.4"[exported]
org.apache.cxf.workqueue; version="2.1.4"[exported]
org.apache.cxf.databinding; version="2.1.4"[exported]
org.apache.cxf.endpoint; version="2.1.4"[exported]
org.apache.cxf.jaxrs.provider; version="2.1.4"[exported]
org.apache.cxf.aegis.xml.stax; version="2.1.4"[exported]
org.apache.cxf.databinding.source; version="2.1.4"[exported]
org.apache.cxf.tools.validator; version="2.1.4"[exported]
org.apache.cxf.jaxrs.utils.multipart; version="2.1.4"[exported]
org.apache.cxf.binding.soap.saaj; version="2.1.4"[exported]
org.apache.cxf.aegis.type.encoded; version="2.1.4"[exported]
org.apache.cxf.transport.http.spring; version="2.1.4"[exported]
org.apache.cxf.ws.addressing.v200403; version="2.1.4"[exported]
org.apache.cxf.bus; version="2.1.4"[exported]
org.apache.cxf.frontend.spring; version="2.1.4"[exported]
org.apache.cxf.common.annotation; version="2.1.4"[exported]
org.apache.cxf.security.transport; version="2.1.4"[exported]
org.apache.cxf.feature; version="2.1.4"[exported]
org.apache.cxf.phase; version="2.1.4"[exported]
org.apache.cxf.configuration.jsse.spring; version="2.1.4"[exported]
org.apache.cxf.binding.xml.wsdl11; version="2.1.4"[exported]
org.apache.cxf.attachment; version="2.1.4"[exported]
org.apache.cxf.jaxb.io; version="2.1.4"[exported]
org.apache.cxf.version; version="2.1.4"[exported]
org.apache.cxf.tools.common; version="2.1.4"[exported]
org.apache.cxf.binding; version="2.1.4"[exported]
org.apache.cxf.aegis.type.java5; version="2.1.4"[exported]
org.apache.cxf.endpoint.dynamic; version="2.1.4"[exported]
org.apache.cxf.ws.addressing.v200408; version="2.1.4"[exported]
org.apache.cxf.event; version="2.1.4"[exported]
org.apache.cxf.tools.common.dom; version="2.1.4"[exported]
org.apache.cxf.common.commands; version="2.1.4"[exported]
org.apache.cxf.binding.xml.interceptor; version="2.1.4"[exported]
org.apache.cxf.jca.outbound; version="2.1.4"[exported]
org.apache.cxf.service.model; version="2.1.4"[exported]
org.apache.cxf.simple; version="2.1.4"[exported]
org.apache.cxf.interceptor; version="2.1.4"[exported]
org.apache.cxf.transport; version="2.1.4"[exported]
org.apache.cxf.management; version="2.1.4"[exported]
org.apache.cxf.common.xmlschema; version="2.1.4"[exported]
org.apache.cxf.configuration; version="2.1.4"[exported]
org.apache.cxf.jaxrs.lifecycle; version="2.1.4"[exported]
org.apache.cxf.binding.soap; version="2.1.4"[exported]
org.apache.cxf.aegis.util.date; version="2.1.4"[exported]
org.apache.cxf; version="2.1.4"[exported]
org.apache.cxf.clustering; version="2.1.4"[exported]
org.apache.cxf.transport.http_jetty.spring; version="2.1.4"[exported]
org.apache.cxf.security; version="2.1.4"[exported]
org.apache.cxf.staxutils; version="2.1.4"[exported]
org.apache.cxf.helpers; version="2.1.4"[exported]
org.apache.cxf.headers; version="2.1.4"[exported]
org.apache.cxf.transport.http_jetty; version="2.1.4"[exported]
org.apache.cxf.tools.common.extensions.soap; version="2.1.4"[exported]
org.apache.cxf.jaxb.attachment; version="2.1.4"[exported]
org.apache.cxf.frontend; version="2.1.4"[exported]
org.apache.cxf.common.i18n; version="2.1.4"[exported]
org.apache.cxf.bindings.xformat; version="2.1.4"[exported]
org.apache.cxf.ws.policy.builder.primitive; version="2.1.4"[exported]
org.apache.cxf.service.factory; version="2.1.4"[exported]
org.apache.cxf.jaxrs.model; version="2.1.4"[exported]
org.apache.cxf.jaxrs.impl; version="2.1.4"[exported]
META-INF.cxf; version="0.0.0"[exported]
org.apache.cxf.aegis.type.mtom; version="2.1.4"[exported]
org.apache.cxf.ws.policy; version="2.1.4"[exported]
org.apache.cxf.transport.http; version="2.1.4"[exported]
org.apache.cxf.ws.policy.builder.xml; version="2.1.4"[exported]
org.apache.cxf.jaxrs.ext; version="2.1.4"[exported]
org.apache.cxf.transports.http; version="2.1.4"[exported]
org.apache.cxf.aegis.type.basic; version="2.1.4"[exported]
org.apache.cxf.buslifecycle; version="2.1.4"[exported]
org.apache.cxf.wsdl.http; version="2.1.4"[exported]
org.apache.cxf.bus.extension; version="2.1.4"[exported]
org.apache.cxf.tools.util; version="2.1.4"[exported]
org.apache.cxf.common.classloader; version="2.1.4"[exported]
org.apache.cxf.ws.policy.util; version="2.1.4"[exported]
org.apache.cxf.jaxrs; version="2.1.4"[exported]
org.apache.cxf.common.injection; version="2.1.4"[exported]
org.apache.cxf.configuration.spring; version="2.1.4"[exported]
org.apache.cxf.jaxrs.interceptor; version="2.1.4"[exported]
org.apache.cxf.aegis.type.collection; version="2.1.4"[exported]
org.apache.cxf.wsdl11; version="2.1.4"[exported]
org.apache.cxf.transport.http.policy; version="2.1.4"[exported]
org.apache.cxf.transport.servlet; version="2.1.4"[exported]
org.apache.cxf.common.logging; version="2.1.4"[exported]
org.apache.cxf.catalog; version="2.1.4"[exported]
org.apache.cxf.tools.common.model; version="2.1.4"[exported]
org.apache.cxf.aegis.databinding; version="2.1.4"[exported]
org.apache.cxf.aegis; version="2.1.4"[exported]
org.apache.cxf.extension; version="2.1.4"[exported]
org.apache.cxf.transport.https_jetty; version="2.1.4"[exported]
org.apache.cxf.binding.soap.spring; version="2.1.4"[exported]
org.apache.cxf.message; version="2.1.4"[exported]
org.apache.cxf.common.util; version="2.1.4"[exported]
org.apache.cxf.binding.soap.interceptor; version="2.1.4"[exported]
org.apache.cxf.tools.common.toolspec; version="2.1.4"[exported]
org.apache.cxf.aegis.util.jdom; version="2.1.4"[exported]
org.apache.cxf.ws.addressing; version="2.1.4"[exported]
org.apache.cxf.aegis.util.stax; version="2.1.4"[exported]
org.apache.cxf.service; version="2.1.4"[exported]
org.apache.cxf.wsdl; version="2.1.4"[exported]
org.apache.cxf.aegis.xml.jdom; version="2.1.4"[exported]
org.apache.cxf.databinding.stax; version="2.1.4"[exported]
org.apache.cxf.test; version="2.1.4"[exported]
org.apache.cxf.binding.soap.model; version="2.1.4"[exported]
org.apache.cxf.jaxrs.ext.multipart; version="2.1.4"[exported]
org.apache.cxf.tools.common.toolspec.parser; version="2.1.4"[exported]
org.apache.cxf.aegis.type.xml; version="2.1.4"[exported]
org.apache.cxf.aegis.xml; version="2.1.4"[exported]
org.apache.cxf.databinding.source.mime; version="2.1.4"[exported]
org.apache.cxf.bus.resource; version="2.1.4"[exported]
org.apache.cxf.aegis.type; version="2.1.4"[exported]
org.apache.cxf.jaxrs.impl.tl; version="2.1.4"[exported]
org.apache.cxf.io; version="2.1.4"[exported]
org.apache.cxf.jaxrs.spring; version="2.1.4"[exported]
org.apache.cxf.transport.http_jetty.continuations;
version="2.1.4"[exported]
org.apache.cxf.ws.policy.builder.jaxb; version="2.1.4"[exported]
org.apache.cxf.ws.addressing.wsdl; version="2.1.4"[exported]
org.apache.cxf.transports.http.configuration; version="2.1.4"[exported]
org.apache.cxf.continuations; version="2.1.4"[exported]
No imported packages
No fragment bundles
No named class spaces
No required bundles
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.