Package dependencies between bundles do not cause the bundles to be 
started. Starting/Stopping a bundle is independent of the RESOLVED state 
(package dependencies satisfied). Classes need to be able to be loaded 
from a bundle before it might be started.

So you need to make sure the subject bundle is actually started.
-- 

BJ Hargrave
Senior Technical Staff Member, IBM
OSGi Fellow and CTO of the OSGi Alliance
[email protected]

office: +1 386 848 1781
mobile: +1 386 848 3788




From:   "Leschke, Scott" <[email protected]>
To:     "[email protected]" <[email protected]>
Date:   2014/07/31 18:27
Subject:        [osgi-dev] Bundle attempting to interrogate BundleContext 
when    starting up
Sent by:        [email protected]



 
I posted the following to the Apache Karaf user list last week. What I’m 
primarily interested in is the fact that the DataNucleus bundle that is 
getting the exception seems to be trying to do something that seems 
reasonable, i.e. get it’s own BundleContext when it’s running, but gets an 
NPE which seems to imply that it’s executing in the RESOLVED state.  The 
Karaf console shows the bundle in the ACTIVE state when I check.  I should 
point out that the exception happens when Karaf starts up and goes through 
it’s full bundle resolution/activation processing.
I guess I’ve assumed that bundles wouldn’t execute until they’re STARTING. 
 My knowledge of class loaders and what they imply is limited so perhaps 
it’s obvious why this isn’t, or at least doesn’t appear to be, the case.
Given that, how would a bundle do what’s being attempted by the DN bundle 
reliably, get it’s own BC and interrogate it, without necessarily doing it 
within an activator?
Regards, Scott
I’m seeing some behavior using Karaf/Felix that I find odd.
 
I have a Blueprint service that fails to instantiate when  the Blueprint 
container tries to create it.  The service is itself trying to create an 
object (JDO PersistenceManagerFactory) using the JDO API and DataNucleus 
JDO implementation
 
The root cause of the failure appears to be that one of the DN bundles is 
attempting to get its own BundleContext but gets an NPE instead.  The only 
way that this could occur to my knowledge is if the bundle isn’t in an 
appropriate state (STARTING at a minimum).  I’m not sure why the OSGi 
framework wouldn’t have already started the bundle in question 
(org.datanucleus) since the invoking bundle (org.datanucleus.api.jdo) has 
explicit dependencies declared on the packages it exports, specifically 
package org.datanucleus.plugin.
 
Is this framework behavior reasonable?  Additional detail is below.  Any 
thoughts greatly appreciated.
 
Caused by: java.lang.NullPointerException
                at 
org.datanucleus.plugin.OSGiPluginRegistry.registerExtensions(OSGiPluginRegistry.java:104)
                at 
org.datanucleus.plugin.OSGiPluginRegistry.registerExtensionPoints(OSGiPluginRegistry.java:89)
                at 
org.datanucleus.plugin.PluginManager.<init>(PluginManager.java:63)
                at 
org.datanucleus.plugin.PluginManager.createPluginManager(PluginManager.java:430)
                at 
org.datanucleus.AbstractNucleusContext.<init>(AbstractNucleusContext.java:85)
                at 
org.datanucleus.PersistenceNucleusContextImpl.<init>(PersistenceNucleusContextImpl.java:164)
                at 
org.datanucleus.PersistenceNucleusContextImpl.<init>(PersistenceNucleusContextImpl.java:153)
                at 
org.datanucleus.api.jdo.JDOPersistenceManagerFactory.<init>(JDOPersistenceManagerFactory.java:426)
 
Lines 100-104 of class org.datanucleus.plugin.OSGiPluginRegistry are shown 
below.  Clearly ‘ctx” must be null.
 
        BundleContext ctx = 
FrameworkUtil.getBundle(this.getClass()).getBundleContext();
 
        // parse the plugin files
        DocumentBuilder docBuilder = 
OSGiBundleParser.getDocumentBuilder();
        org.osgi.framework.Bundle[] osgiBundles = ctx.getBundles();
 _______________________________________________
OSGi Developer Mail List
[email protected]
https://mail.osgi.org/mailman/listinfo/osgi-dev

_______________________________________________
OSGi Developer Mail List
[email protected]
https://mail.osgi.org/mailman/listinfo/osgi-dev

Reply via email to