java - OSGi 片段是否应该导出为其主机贡献的包?

标签 java osgi osgi-fragment

我注意到我的一个片段使用 Export-Package贡献给其主机的包的指令:

Fragment-Host: org.eclipse.jetty.osgi.boot
Export-Package: org.eclipse.jetty.osgi.boot.utils;version="1.0.1.felix"
-buildpath: osgi.core;version=4.3.0,\
    org.eclipse.jetty.osgi.boot;version=7.6.1.v20120215
-sources: false
Import-Package: !org.eclipse.jetty.osgi.boot.utils.internal,\
    *

此 bundle 向主机中的 org.eclipse.jetty.osgi.boot.utils 包贡献了一些额外的类。

理想情况下,我认为我应该尽可能保持包的私密性,但这种情况又如何呢?我的其余代码都不需要 org.eclipse.jetty.osgi.boot.utils .

最佳答案

来自 OSGi 核心规范 (6.0):

A host bundle's class path is searched before a fragment's class path.

“此 bundle 提供了一个新的 org.eclipse.jetty.osgi.boot.utils,其类覆盖了主机的类”

片段 bundle 无法覆盖主机 bundle 的类(如果这就是您的意思)。

如果一个包不打算被其他包使用,则不应导出它。主机包可以看到其附加的片段包的类和资源,但前提是它没有相同的类或资源。

关于java - OSGi 片段是否应该导出为其主机贡献的包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25670577/

相关文章:

java - JsonString 列表到用户对象列表的转换

java - 如何将OSGi连接到SAP?

java - RDF-Gravity 1.0 - 无法启动应用程序

java - Axis2 与 WSDL 2.0 教程

java - 将字符串子集转换为数组变量的最佳方法是什么?

java - 使用 Spring-DM 扩展器

java - eclipse4 RCP 片段 "Unable to load class from bundle"

java - Wicket调用冗长的操作并通过ajax更新

java - 在 Apache Geronimo 中安装 Oracle jdbc 驱动程序

java - 在 OSGi 扩展包内注册服务