Karaf:Bundles Instances和classloaders

时间:2017-10-06 18:09:47

标签: osgi karaf

每个Karaf包是否由单独的类加载器加载?

SAME类加载器是否加载了所有功能包?

如果我在我正在尝试开发的新功能中包含依赖功能,那么该功能的捆绑包是否会使用SAME类加载器作为我正在尝试开发的功能?

1 个答案:

答案 0 :(得分:2)

在OSGi中,通常每个bundle都有自己的类加载器。这个类加载器提供bundle的类,并委托给bundle捆绑导入包的classloader。所以基本上每个类通常由类所在的bundle的类加载器加载。然后,Manifest和OSGi解析器中的Import-Package和Export-Package语句确保bundle也能看到其他bundle的类。

Karaf功能与类加载器完全无关。他们只是定义了哪些包被加载。