我正在开发一个基于OSGi的应用程序。在记录自己的OSGi框架功能时,我偶然发现了扩展包概念。引用R4规范(OSGi R4):
Extension bundle可以提供Framework的可选部分 实现或提供必须驻留在引导上的功能 阶级路径。这些包裹不能正常提供 进出口机制。引导类路径扩展是必需的 因为某些包实现假设它们在 引导类路径或要求所有客户端都可用。一个 引导类路径扩展的示例是一个实现 java.sql,如JSR 169
可能这只是我的愚蠢,但我在理解这个概念时遇到了困难。我有几个问题:
根据我的理解,扩展包似乎正在执行org.osgi.framework.system.packages.extra
和org.osgi.framework.bootdelegation
的相同工作(即com.sun.*
或{{1 }})。我对吗?如果没有,它们之间有什么区别?
您能告诉我扩展包的真实用例场景吗?有些东西说:“除非你使用扩展捆绑,否则你不能这样做!” Here有人已经尝试为扩展程序包提供示例,但(至少对我而言)似乎可以通过调整sun.*
和org.osgi.framework.system.packages.extra
来获得相同的结果;
我知道已经有this SO answer但对我而言并没有完全达到目的。
感谢所有回复!
答案 0 :(得分:1)
扩展束可用于覆盖任何类,甚至是java.lang类。
您可能想要跟踪何时调用System.gc()(例如,将堆栈跟踪写入日志文件)