Unfortunately much of this has to do with how the Eclipse platform is managed and the policy used to activate bundles when provisioned within an Eclipse platform installation. As a general rule, if your bundle does not provide any OSGi services then it likely can use the lazy activation policy. But as soon as you offer any OSGi services, by programmatically registering them, then using the lazy activation policy becomes a real pain because it is not easy to have your bundle provide any services until it is activated. The only way you can is to use and extender (like OSGi declarative services) that supports registering services for lazy activated bundles while they are in the (wait for trigger class load) STARTING state. But then you are no longer programmatically registering the service, instead DS is doing it for you.
As a simple rule I would avoid doing that since it has caused us much confusion when we take this approach. I just ran into a similar issue where I had to debug why our coordinator service implementation in equinox was not registering the Coordinator service. The bundle was in the "lazy activation" STARTING state but it was not registering any coodinator service. This was because I did not have an active declarative services (org.eclipse.equinox.ds) implementation. So I would remove Bundle-ActivationPolicy: lazy from any bundle that is offering OSGi services that others need to consume unless there is some scenario where you know for a fact that a "trigger" class load is going to happen to ensure your bundle will be activated to allow you to programmatically register your OSGi services. The issue with removing the 'lazy' activation policy is now you are left with a tricky problem to get your bundle eagerly activated if/when installed in the Eclipse platform via p2. The eclipse builds do this with a .product file (for the Eclipse SDK). See http://dev.eclipse.org/viewcvs/viewvc.cgi/org.eclipse.releng.eclipsebuilder/eclipse/buildConfigs/sdk/builder/sdk.product?view=markup You will notice it has a <configurations/> section where it lists the bundles that eagerly started (autoStart="true"). I don't fully understand how all this .product file stuff works. Any questions you have on that should be directed at the p2-dev mailing list or forums. Tom |------------> | From: | |------------> >--------------------------------------------------------------------------------------------------------------------------------------------------| |Scott Lewis <sle...@composent.com> | >--------------------------------------------------------------------------------------------------------------------------------------------------| |------------> | To: | |------------> >--------------------------------------------------------------------------------------------------------------------------------------------------| |Equinox development mailing list <equinox-dev@eclipse.org>, | >--------------------------------------------------------------------------------------------------------------------------------------------------| |------------> | Date: | |------------> >--------------------------------------------------------------------------------------------------------------------------------------------------| |03/13/2012 09:50 AM | >--------------------------------------------------------------------------------------------------------------------------------------------------| |------------> | Subject: | |------------> >--------------------------------------------------------------------------------------------------------------------------------------------------| |[equinox-dev] policies wrt use of Bundle-ActivationPolicy | >--------------------------------------------------------------------------------------------------------------------------------------------------| Hi, ECF has consumers that use our OSGi remote services implementation in client-server use cases. Some of these also use other framework impls (e.g. felix) for the remote service host and/or consumer. As a plugin to Eclipse, we use Bundle-ActivationPolicy: lazy for many/most of our bundles...but there are now requests [1] for us to remove BAP from some of our bundles, in order to facilitate usage in non-Eclipse use cases. What are the current policies and/or guidelines for the use (or not) of BAP within (and/or outside of) Eclipse? Thanks, Scott [1] https://bugs.eclipse.org/bugs/show_bug.cgi?id=373475 _______________________________________________ equinox-dev mailing list equinox-dev@eclipse.org https://dev.eclipse.org/mailman/listinfo/equinox-dev _______________________________________________ equinox-dev mailing list equinox-dev@eclipse.org https://dev.eclipse.org/mailman/listinfo/equinox-dev