Hi,

I am upgrading a system from CXF-2.7.2 and DOSGi-1.4 to 3.1.1/1.7.0 but I have 
run into a wall.

Before I start digging in the CXF code, would anyone have an idea why 
bundleContext.getService() would return a null object for a registered DOSGi 
service?

This is the remote service description:

  <endpoint-description>
    <property name="objectClass">
      <array>
        <value>com.seecago.service.interfaces.MyService</value>
      </array>
    </property>
    <property 
name="endpoint.id">http://my_service_host:12345/MyService/</property>
    <property name="service.imported.configs">org.apache.cxf.ws</property>
  </endpoint-description>


The service is registered:

osgi> services (objectClass=*MyService)
{com.seecago.interfaces.MyService}={endpoint.id=http://my_service_host:12345/MyService/,
 service.imported=true, service.imported.configs=org.apache.cxf.ws, 
service.id=163, service.bundleid=30, service.scope=bundle}
  "Registered by bundle:" cxf-dosgi-ri-dsw-cxf_1.7.0 [30]
  "No bundles using service."


This is a modified activator to prove that the service is null.

@Activate
public void activate(ComponentContext context){
        BundleContext bc = context.getBundleContext();

        // Added to see what is going on. setMyService() is not called
        if (bc != null){
                ServiceReference<MyService> sr = 
bc.getServiceReference(MyService.class);
                if (sr != null){
                        // verified that sr has correct props here
                        MyService ms = bc.getService(sr);
                        if (ms == null){
                                // Always get here.
                                LOG.error("Ouch!");
                        }
                }
        }
        LOG.info("Activated.");
}

This is the error msgs Equinox spits out:

!MESSAGE [SCR] Could not get the service object relevant to the reference. One 
possible reason is a circularity problem. Another possible reason is that 
BundleContext.getService() returns null. <—— WHICH APPEARS TO BE TRUE
        Details:
        Problematic reference = Reference[name = myService, interface = 
com.seecago.service.interfaces.MyService, policy = static, cardinality = 1..1, 
target = null, bind = setMyService, unbind = unsetMyService]
        of service component = com.seecago.client.ui.configuration
...

DOSGi- 1.7.0
CXF - 3.1.1
Equinox- 3.12
J8


Your suggestions are greatly appreciated.


Regards,

Erwin

Reply via email to