2014-09-04 4 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). Я исправлю это. Похоже, что безопасно быть «Частным пакетом». –

Смежные вопросы