Является ли модульность Java 9 для файлов WAR?

Сервер приложений Java EE 7 и, в частности, контейнер Servlet 3.1, должны позволить нам развернуть WAR файл, содержащий веб-приложение. И WAR файл по существу является JAR с дескриптором развертывания (web.xml) и несколькими другими элементами.

С другой стороны, Java 9 вводит понятие модульного JAR файла, то есть JAR с дескриптором модуля (module-info.class), который делает модуль в терминах проекта Jigsaw.

Итак, может ли файл WAR содержать дескриптор модуля и сделать "модульный WAR файл"?

Есть ли уже серверы приложений, способные принять развертывание "модульного WAR файла"?

В общем, каково будущее контейнеров сервлетов и файлов WAR с точки зрения модульности Java 9?

Ответ 1

В настоящее время нет связей между модулями Java EE и java 9 (Jigsaw). Будущие выпуски Java EE могут вводить специфицированное поведение определенных функций в отношении взаимодействия с моделями головоломки.

В этот момент все серверы приложений работают в режиме "classpath" при работе на JDK9, что на практике означает, что они не используют лобзик.

В большинстве случаев введение модуля-информации в развертывание войны может привести к возникновению проблем с развертыванием, поскольку JDK может попытаться загрузить его по-другому, чем другие части сервера приложений. Или это даже не может иметь значения, поскольку большинство серверов приложений имеют пользовательскую логику для загрузки банок и классов.

Некоторые серверы приложений сегодня уже реализуют некоторую модульность, такую ​​как OSGi (GlassFish, Liberty) или jboss-modules (Wildfly) Но в это время у головоломки все еще есть некоторые ограничения, позволяющие запускать такие модульные системы поверх нее.

Короче говоря, до тех пор, пока не появится спецификация EE (вероятно, 9+), которая будет обновлена, чтобы описать, как развертывание EE должно выполняться во время выполнения, на котором установлена ​​игра, не существует "официального" способа поведения такого развертывания. До этого времени каждый сервер приложений может реализовать некоторую пользовательскую поддержку для него, но он не будет стандартным.

Ответ 2

Итак, может ли файл WAR содержать дескриптор модуля и сделать "модульный WAR файл"

Да, это возможно. Так как теперь он может быть Модульный JAR файл с дескрипторами развертывания, такими как web.xml.


В общем, каково будущее контейнеров сервлетов и файлов WAR с точки зрения модульности Java 9?

Из аспект динамической конфигурации в модульной системе,

Для платформы Java EE, в частности, целью является будущий модульный стандарт военных файлов, в котором компоненты в военном файле могут быть модулями разработчика.


Есть ли уже серверы приложений, способные принять развертывание "модульного WAR файла"?

Хотя я в настоящее время не знаю ни одного такого существующего инструмента или серверов, но возможность создать Modular Jar уже добавлена ​​в JMOD и JAR, которые обеспечивают футуристический вид интеграции серверов приложений и модульной системы.