OSGi片段是否应该导出为其主机提供的包?

时间:2014-09-04 16:26:37

标签: 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,\
    *

此捆绑包为主机中的org.eclipse.jetty.osgi.boot.utils包提供了一些额外的类。

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

1 个答案:

答案 0 :(得分:2)

来自OSGi核心规范(6.0):

  

在片段的类路径之前搜索主机包的类路径。

"此捆绑包提供了一个新的org.eclipse.jetty.osgi.boot.utils,其中的类覆盖了主机的那些"

片段包不能覆盖主机包的类(如果这是你的意思)。

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