Question

In my iPOJO application i try to bind a service to two consumers:

Consumers:

@Component(immediate = true)
@Instantiate(name = "com.example.consumerX")
@Provides
public class consumerX{
    @Requires(id="ms",optional=true)
    private MyService[] services;

    @Bind(id = "ms", aggregate = true, optional = true)
    public synchronized void register(MyService service) {
            System.out.println("service bind to consumer");
    }

    @Unbind(id = "ms")
    public synchronized void unregister(MyService service) {
            System.out.println("service unbind from consumer");
    }
}

Services:

@Component(immediate = true)
@Instantiate(name = "com.example.serviceX")
@Provides(specifications = { MyService.class, MyServiceX.class})
public class MyServiceX{
    ...
}

If I start consumerA, consumerB and serviceA, the service binds only to consumerA. If I start consumerB and serviceA, the service binds to consumerB.

Is it possible to let the services bind to both consumers? Is there an annotation for it?

Thanks.

Was it helpful?

Solution

It is definitely possible for a service to be used by several consumers. Your code looks good, and so it should work.

Did you try to check the current state using the 'instances' command (http://felix.apache.org/site/ipojo-arch-command.html) ?

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top