osgi中bootdelegation和DynamicImport-Package有什么区别

时间:2013-02-06 12:52:40

标签: java osgi

两者都将解决osgi中的包依赖关系

之间的区别

2 个答案:

答案 0 :(得分:14)

Bootdelegation是一个需要的hack,因为VM中的某些代码假定应用程序类加载器具有com.sun。*类的可见性。在OSGi中,显然不是这种情况。引导委派是一个参数,它指定框架可以在引导类路径上执行查找的包。由于这不是模块化的,所以不要这样做。它是框架的全球性。

DynamicImport-Package类似,但仅适用于定义的包,仅适用于导出的包。如果在普通包内容或Import-Package中找不到包,则DynamicImport-Package指定允许在导出包集中搜索的包的模式。这个想法类似于类路径,你不知道你将得到什么版本。找到包后,它将永久使用。但是,如果没有找到,每次访问都会继续查看。即您可以在事后安装软件包,而无需重新启动软件包。

答案 1 :(得分:2)

每次需要包中的类时,都会解析通过DynamicImport-Package导入的包。因此,如果由于解决过程而导致包不可用,则不会失败。 通过这种方式,可能会在运行时抛出ClassNotFoundExceptions。 (将此与可选导入进行比较)

BootDelegation类将从bootdelegation类加载器加载,该类加载器是将OSGi框架加载到JVM中的类加载器 http://wiki.osgi.org/wiki/Boot_Delegation http://www2.sys-con.com/itsg/virtualcd/java/archives/0808/chaudhri/index.html http://de.slideshare.net/honnix/osgi-class-loading