java - 扩展包在 OSGi 框架中的含义

标签 java osgi osgi-bundle

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

Extension bundles can deliver optional parts of the Framework implementation or provide functionality that must reside on the boot class path. These packages cannot be provided by the normal import/export mechanisms. Boot class path extensions are necessary because certain package implementations assume that they are on the boot class path or are required to be available to all clients. An example of a boot class path extension is an implementation of java.sql such as JSR 169

可能只是我太笨了,但我很难理解这个概念。我有几个问题:

  1. 据我了解,扩展包似乎在做 org.osgi.framework.system.packages.extra相同工作org.osgi.framework.bootdelegation(即 com.sun.*sun.*)。我对吗?如果不是,它们之间有什么区别?

  2. 您能否展示扩展包的真实用例场景?上面写着:“除非使用扩展包,否则你无法做到!” Here有人已经尝试提供扩展包的示例,但(至少对我而言)似乎可以通过调整 org.osgi.framework.system.packages.extraorg 来获得相同的结果.osgi.framework.bootdelegation;

我知道已经有 this SO answer但对我来说,它并没有完全切中要害。

谢谢大家的回复!

最佳答案

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

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

关于java - 扩展包在 OSGi 框架中的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39868428/

相关文章:

java - org.osgi.framework.BundleException : Unresolved constraint in bundle SampleModel

java - 在 OSGi 中,尝试使用系统导出包中的类时获取 ClassNotFoundExceptions

java - 读取 OSGI 捆绑版本

java - 如何获取config.properties文件中Felix Framework的属性?

java - 将图片旋转90度时我做错了什么

java - Spring.mvc.servlet.path 与 Server.servlet.context-path

java - 覆盖接口(interface)中的方法是否有意义

java - 为什么 Lucene 会锁定整个目录?为什么不只锁定单个 lucene 文件?

osgi - <osgi :reference> and <osgi:service> in spring DM 和有什么区别

java - 在 apache servicemix 中以编程方式启动 OSGI 包