Является ли модульность 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
, которые обеспечивают футуристический вид интеграции серверов приложений и модульной системы.