Могу ли я изменить загрузчик родительского класса пакета OSGi?

Постановка задачи: Найдите ресурс (скажем, myClass) в Bundle A и загрузите его, если он не найден Найдите ресурс в Bundle B и загрузите его программно, в то время как элемент управления находится в Bundle C. У меня есть ссылка на ClassLoaders как A, так и Пучок Б.

Что я знаю, так это то, что для каждого пакета OSGi родительский classLoader является загрузчиком класса Bundle 0. и система бла-бла

Будет ли все в порядке, если я изменю родителя CL пакета B --- на --> CL пакета A. и getClass из CL пакета B?

будет ли это соответствовать лучшим практикам?

Ограничения: не использовать импорт, экспорт, требовать инструкции для решения.

Спасибо


person roul ze    schedule 05.10.2012    source источник


Ответы (2)


Лучшей практикой в ​​OSGi является не изменять загрузчики классов. Система в OSGi очень хорошо продумана, и если вы ее измените, у вас возникнут всевозможные проблемы. В идеале вы вообще не должны загружать классы вручную. Если вам нужен экземпляр класса или ресурса, загрузите его в пакет, который его содержит. Если вам это понадобится в другом пакете, лучше всего опубликовать службу с экземпляром или фабрику с экземпляром.

person Christian Schneider    schedule 06.10.2012

Кажется, это невозможно сделать. Java не предоставляет API для установки загрузчика родительского класса. Извините, что задаю этот вопрос.

person roul ze    schedule 05.10.2012