Hi OSGi-devs,
I have the following problem with osgi services. We develop basically
applications where dynamic is not an issue. So what I would like to
make sure in my application is that all services are registred
properly at start up - if not, the application will be shut down. In
addition to that I want to reuse my bundles in RCP applications so any
concept must also be applicable for RCP applications.
Say I have two bundles:
1. org.mycompany.service (contains a service interface)
2. org.mycompany.serviceimpl (contains the service implementation and
registers withing his activator an osgi-service)
What we do within the service bundle is this:
public void start(BundleContext context) throws Exception {
Bundle[] bundles = context.getBundles();
// find the implementation for the service bundle
for (Bundle bundle : bundles) {
if
("org.mycompany.serviceimpl".equals(bundle.getSymbolicName())) {
// service impl found
if (bundle.getState() != Bundle.ACTIVE) {
bundle.start();
}
}
}
// check if servicimpl has registred service properly
ServiceReference serviceReference = context
.getServiceReference(IMyService.class.getName());
if (serviceReference == null) {
// shut down application
}
...
From my point of view this is pretty error prone and difficult to
maintain. Is there a best practice approach how I can make sure that
all services are registered properly at start up of my application?
How can I start my serviceimpl bundles in RCP application as no one
depends on this bundle which is why the are never started?
We have spend now a lot of time to find solutions for this problem but
they all seem to be improvable.
Regards,
Eugen
_______________________________________________
OSGi Developer Mail List
[email protected]
https://mail.osgi.org/mailman/listinfo/osgi-dev