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.

Reply via email to