i have scenario need same object exposed declarative service in several bundles in osgi application. more specific, there class exposed declaravice service (service1). there several service consumers. using maven-scr-plugin generate scr descriptors. service consumer has reference service interface this.
@reference(name = "service1",bind = "bindservice1", unbind = "unbindservice1", policy = referencepolicy.static) serviceinterface1 service1; protected void bindservice1(serviceinterface1 service1) { this.service1 = service1; } protected void unbindservice1(serviceinterface1 service1) { this.service1 = null; }
this service provider(service1) service consumer of service (service2). service1 have reference service2 well.
@service @component(immediate = true, name = "service1") public class service1 implements serviceinterface1{ @reference(name = "service2",bind = "bindservice2", unbind = "unbindservice2", policy = referencepolicy.static) serviceinterface2 service2; protected void bindservice2(serviceinterface2 service2) { this.service2 = service2; } protected void unbindservice2(serviceinterface2 service2) { this.service2 = null; } }
this how service2 looks like
@service @component(immediate = true, name = "service2") public class service2 implements serviceinterface2 { ..... }
the problem have can see bind methods of service1 , service consumers invoked osgi container, object bound reference service1 in service consumer not have service2 reference initialized. means when use service1 object service consumer null pointer exception because service1 object not have service2 object in it. object bound service1 not same used osgi container bind reference service2. want same object used in service consumers. can solved?
Comments
Post a Comment