Включите весь JDK8 в комплект OSGI и разверните на OSGI, работающем в среде JDK 9 (или выше) - PullRequest
0 голосов
/ 23 января 2020

Я работал как разработчик AEM, основанный на OSGI, и именно отсюда вытекает моя рудиментарная (и немного устаревшая) идея. Вот что мне нужно сделать на новом проекте, полностью связанном с AEM.

  • Создание библиотеки служб на основе сторонней библиотеки, совместимой с JDK8
  • Развертывание их как весеннее веб-приложение на tomcat, работающее на JDK9 или новее.

Сторонняя библиотека является лицензионным программным обеспечением и не может быть обновлена ​​из-за определенного юридического тупика. Прямое развертывание на JDK9 завершается неудачно из-за проблем Java API.

Теория заключается в том, чтобы включить всю среду выполнения JDK8 в виде связанной зависимости и развернуть ее как пакет OSGI на JDK9 +. совместимая среда выполнения OSGI.

Вот небольшая диаграмма, которую я создал, чтобы отразить основную идею: enter image description here

Может ли это сработать? Теоретически это верно, потому что каждый пакет OSGI использует свой собственный загрузчик классов, поэтому сторонняя библиотека не должна ломаться из-за проблем Java API. Кроме того, планируется использовать maven для создания толстой (убер) банки.

Еще один вопрос, мучающий меня: действительно ли создание супер-jar, включая JDK, вообще вещь? Я создавал Uber-Jars и раньше, но не уверен, как бы я включил JDK. Некоторая часть этого кажется неправильной. Любое предложение?

Спасибо всем!

1 Ответ

1 голос
/ 24 января 2020

Нельзя упаковать библиотеки классов JDK из одной реализации JDK и использовать их в другой реализации JDK. Даже если вы положите их в пачку. Библиотеки классов JDK тесно связаны с базовой реализацией JVM, и существует множество ожидаемых синглетонов, которые при наличии нескольких библиотек классов JDK могут нарушать.

...