Изучив структуру OSGi, я разработал образец веб-приложения. Пакет веб-приложений (.war или .jar) упакован внутри eba. Файл war содержит кучу встроенных файлов jar в своем каталоге WEB-INF/lib
. Эти jar-файлы были преобразованы в OSGi bundles(using maven-bundle-plugin
) с необходимыми пакетами экспорта и импорта в соответствии с соотношением между jar-файлами. Теперь я должен даже упомянуть все эти jars(WEB-INF/lib)
в пути к классам пакетов. Вышеупомянутое работает, потому что пакет (wab также является пакетом) может включать в себя один или несколько файлов jar и использовать запись Bundle-Classpath manifest.mf для указания на них.
Если я не включаю jar-файлы в путь пакета-класса, я получаю ClassNotFoundException
.
Вопрос в том, что тогда нет смысла конвертировать jar-файлы в пакеты osgi. Очевидно, что все jar-файлы в WEB-INF/lib
загружаются одним и тем же загрузчиком классов (то есть загрузчиком классов wab), поэтому мы не пожинаем основных преимуществ OSGi, в основном концепция загрузчика классов для каждого пакета?