Split package issue on OSGi with META-INF.cxf
---------------------------------------------

                 Key: CAMEL-3264
                 URL: https://issues.apache.org/activemq/browse/CAMEL-3264
             Project: Apache Camel
          Issue Type: Bug
          Components: camel-cxf
    Affects Versions: 2.4.0
         Environment: equinox OSGi container
            Reporter: Stephan Siano
            Priority: Minor


When using camel-cxf with <cxf:cxfEndpoint> definitions in sprinf DSL it is 
necessary to import resources provided by the CXF bundle as in the 
camel-example-cxf-proxy example. This example does not work reliably on all 
OSGi containers (for me it worked on karaf, but it did not work on equinox, but 
I think this is only accidental and an <import 
resource="classpath:META-INF/cxf/cxf.xml"/> <import 
resource="classpath:META-INF/cxf/cxf-extension-camel.xml"/> will never work).

A further analysis showed that both the CXF bundle (as provided from apache) 
and the camel-cxf bundle do an export on the META-INF.cxf package. If another 
bundle (containig the scenario) imports this package, the resolution is 
ambigous, so it can be resolved either to the CXF bundle or to the camel-cxf 
bundle. In one case the  <import resource="classpath:META-INF/cxf/cxf.xml"/>  
will fail, in the other case it will succeed.

The osgi 4.2 spec has some input about handling split packages in section 3.12, 
but I think there should be some change in the camel-cxf manifest.

I could work around the issue by creating a third bundle that has the following 
lines in it's manifest:
...
Export-Package: META-INF.cxf
Require-Bundle: org.apache.cxf.bundle,org.apache.camel.camel-cxf

This works for me, but it follows the "allowed but confusing" example in 
section 3.12.3 of the osgi 4.2 spec, so maybe there is a way to achieve the 
same thing with only two bundles involved.


-- 
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