2014-09-04 22 views
1

我注意到一個片段我有使用Export-Package指令對於被它的主人作出貢獻的包:應該OSGi碎片導出包的貢獻他們的主機?

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

回答

2

從OSGi核心規範(6.0):

一種宿主bundle的類路徑的片段的類路徑之前搜索。

「這束有助於新org.eclipse.jetty.osgi.boot.utils與覆蓋這些主機的類」

片段束不能覆蓋主機束的類(如果這就是你的意思)。

如果軟件包不打算被其他軟件包使用,則不應導出。主機捆綁包可以查看附加片段包的類和資源,但前提是它不具有相同的類或資源。

+0

你是對的,在這種情況下,包中提供的類通過主機中已有的代碼實例化(請參閱http://grepcode.com/file/repo1.maven.org/maven2/org。 eclipse.jetty.osgi /碼頭-OSGi的啓動/ 9.1.1.v20140108 /組織/蝕/碼頭/ OSGi的/引導/ utils的/ BundleFileLocatorHelper.java)。我會糾正這一點。所以這聽起來像'私人包'是安全的。 – 2014-09-05 10:37:03