The thread context classloader has no specified meaning in OSGi. So unless you set it to something specific you can not rely on its value. So I think the observed behaviour is not a bug.

If you want to access the bundle classloader you can access it by this.getClass().getClassLoader().

Christian

On 04.11.2015 13:50, Yogesh Rao wrote:
Hello,

I am using Karaf 3.0.3 on JDK 1.7, I noticed a behaviour by Aries Blueprint which seems a little odd to me. We have created a bundle which gets initialized/activated using blueprint, within the blueprint.xml we have a bean with init-method defined to it. I noticed that the classloader used is sun.misc.Launcher$AppClassLoader instead of the usual bundle specific classloader. Since this wasnt a bundle specific classloader it failed to resolve the dependencies available to it from the other bundles. Sample xml used for the blueprint definition is below

 <?xml version="1.0" encoding="UTF-8"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0";
xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0";
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
           xsi:schemaLocation="
http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0 http://aries.apache.org/schemas/blueprint-cm/blueprint-cm-1.1.0.xsd
           ">
 <bean id="initBean" class="com.example.KickStarter" init-method="init"/>
</blueprint>
 KickStarter.java
 public void init() {
System.err.println( " Classloader " + Thread.currentThread().getContextClassLoader() );
 }
 output :- Classloader sun.misc.Launcher$AppClassLoader@74184b3b
For the code to resolve the dependencies i had to manually set the classloader using
 Bundle bundle1 = FrameworkUtil.getBundle( KickStarter.class );
 ClassLoader newCL = bundle1.adapt(BundleWiring.class).getClassLoader();
My question to the group is whether using of Launcher classloader is normal or should it have been bundle aware classloader ?
 Thank you!
 Regards,
 -Yogesh


--
Christian Schneider
http://www.liquid-reality.de

Open Source Architect
http://www.talend.com

Reply via email to