OSGi框架中的扩展束含义

时间:2016-10-05 07:59:11

标签: java osgi osgi-bundle

我正在开发一个基于OSGi的应用程序。在记录自己的OSGi框架功能时,我偶然发现了扩展包概念。引用R4规范(OSGi R4):

  

Extension bundle可以提供Framework的可选部分   实现或提供必须驻留在引导上的功能   阶级路径。这些包裹不能正常提供   进出口机制。引导类路径扩展是必需的   因为某些包实现假设它们在   引导类路径或要求所有客户端都可用。一个   引导类路径扩展的示例是一个实现   java.sql,如JSR 169

可能这只是我的愚蠢,但我在理解这个概念时遇到了困难。我有几个问题:

  1. 根据我的理解,扩展包似乎正在执行org.osgi.framework.system.packages.extraorg.osgi.framework.bootdelegation相同工作(即com.sun.*或{{1 }})。我对吗?如果没有,它们之间有什么区别?

  2. 您能告诉我扩展包的真实用例场景吗?有些东西说:“除非你使用扩展捆绑,否则你不能这样做!” Here有人已经尝试为扩展程序包提供示例,但(至少对我而言)似乎可以通过调整sun.*org.osgi.framework.system.packages.extra来获得相同的结果;

  3. 我知道已经有this SO answer但对我而言并没有完全达到目的。

    感谢所有回复!

1 个答案:

答案 0 :(得分:1)

扩展束可用于覆盖任何类,甚至是java.lang类。

您可能想要跟踪何时调用System.gc()(例如,将堆栈跟踪写入日志文件)