Фрагменты OSGi: исправление ошибок в плагинах Eclipse - PullRequest
0 голосов
/ 22 декабря 2010

Услышав о фрагментах OSGi, мне стало интересно:

Можно ли использовать фрагмент для внедрения исправления, то есть заменить существующий класс в существующем подписанном пакете?

Есть ли документация, как это сделать?

Ответы [ 2 ]

2 голосов
/ 24 декабря 2010

Я не играл с подписанными пакетами, но это способ получить фрагменты для переопределения классов в пакете хоста. Однако вы должны запланировать это заранее.

В вашем Host Bundle определите Bundle-Classpath таким образом:

Bundle-Classpath: jar-not-in-host.jar;.

Этот файл jar не должен существовать на хосте. Тогда ваш фрагмент может содержать jar-файл с именем jar-not-in-host.jar. Когда фрагмент прикреплен, классы в jar-not-in-host.jar будут загружены перед классами в корне пакета хоста.

Не очень приятно, я знаю, но это работает.

1 голос
/ 24 декабря 2010

Ответ нет .

У фрагментов OSGi нет собственного загрузчика классов, и они рассматриваются как часть хоста. Они не могут внедрить новый код в замену существующего класса. Обычное использование фрагмента - предоставление разных реализаций для разных хостов. Другие комплекты, которым требуется его возможность (экспортируется хост-комплектом), не будут зависеть от конкретной реализации.

Bundle уже является концептом атома OSGi, вы должны предоставить более новую версию, если вы хотите что-то исправить.

...