I created the following github project to demonstrate this issue. gbutt/sfclient-cxf · GitHub
Salesforce credentials are not necessary to reproduce the issue, as the issue occurs before the client attempts to login. Simply deploy this bundle in a fabric, stop and restart the container. On restart you should receive the error above. Note that this error only occurs if the container is managed by fabric. It works just fine in a standalone container.
The most simple and reliable way is let your customer bundle hold a OSGi service reference exposed by cxf-rt-bindings-soap bundle, this way can ensure the cxf-rt-bindings-soap bundle get fully started before your customer bundle.
add configuration like
<reference id="cxf-soap-binding" interface="org.osgi.service.blueprint.container.BlueprintContainer" filter="(osgi.blueprint.container.symbolicname=org.apache.cxf.cxf-rt-bindings-soap)"/>
into your blueprint.xml should work.
Excellent suggestion. I had success adding the following service references to my CXF client blueprint:
<reference id="cxf-soap-binding" interface="org.apache.aries.blueprint.NamespaceHandler" filter="(osgi.service.blueprint.namespace=http://cxf.apache.org/blueprint/bindings/soap)" /> <reference id="cxf-jaxws-frontend" interface="org.apache.aries.blueprint.NamespaceHandler" filter="(osgi.service.blueprint.namespace=http://cxf.apache.org/blueprint/jaxws)" />