Блоги

Навигационные полоски

WildFly 11
WildFly 11

На днях, после почти полутора лет разработки состоялся новый значительный релиз WildFly - WildFly 11. Кроме обычного исправления багов (более 1000) и обновления компонентов (обновили более 150) в релизе содержится ряд крупных изменений и улучшений.

Elytron - новая система безопасности

На замену двух существующих параллельно систем безопасности (PicketBox и security-realms) пришла единая система - Elytron. Кроме поддержки всего функционала старых систем, Elytron привносит целый ряд новшеств, среди которых можно выделить:

  • Передача прав в рамках множественных вызовов сервисов
  • Переключение учетных записей между обращениями к сервисам
  • TLS-верификация перед обращением к сервису
  • Расширенные политики безопасности
  • Более плотная интеграция с сервисами SSO/IDP, наподобие KeyCloak

В рамках сохранения обратной совместимости старые системы пока продолжают работать параллельно с новой, но их более не рекомендуется использовать.

OpenSSL & HTTP/2

В WildFly 11 появился провайдер JSSE. С его помощью становится возможных передать работу с TLS с JVM на системную библиотеку OpenSSL, тем самым увеличив скорость работы с TLS. Если системная библиотека имеет версию 1.0.2 или выше, то WildFly 11 будет использовать ее ALPN для предоставления поддержки HTTP/2.
HTTP/2 может работать и вовсе без OpenSSL - из коробки, если Wildfly запускается на Java 8 (только на JVM, основанных на OpenJDK), или на Java 9 (в которой появилось новое стандартное ALPN API).

Оптимизация запросов к EJB/JNDI поверх HTTP

Начиная с WildFly 8 все протоколы (за исключением IIOP) могут использовать механизм HTTP Upgrade для взаимодействия с сервером всего по двум портам - один для приложений и один для управления. Однако, этот механизм изменяет тип протокола при первом обращении к серверу, что вызывает проблемы с балансировкой подобных запросов балансировщиками, отличными от WildFly.
В WildFly 11 был добавлен новый, “чистый” протокол HTTP для решения этой проблемы. Поскольку новый протокол ведет себя как стандартный HTTP, он поддается эффективной балансировке любым балансировщиком. Клиенты, использующие ссылки типа http:// (не remoting+http://) получают новое поведение по умолчанию.

Корректное завершение/начало работы

Управление распределенными транзакциями теперь осуществляется механизмом корректного завершения работы. На этапе завершения работы сервера существующие транзакции продолжат выполнение до конца, а все новые транзакции будут отвергнуты.
Так же, изменился механизм запуска сервера. Теперь сервер запускается в режиме ожидания и находится в нем до тех пор, пока не стартуют все необходимые сервисы. После этого он выходит из режима ожидания и начинает принимать запросы.

Новая конфигурация балансировщика нагрузки

Для упрощения настройки WildFly в качестве балансировщика нагрузки, представлена поддержка нового конфигурационного файла standalone-load-balancer.xml. С помощью этой конфигурации настраивается минимальный набор сервисов, обеспечивающий возможности балансировщика и его максимальное быстродействие.

Новые возможности веб-консоли

Веб-консоль получила ряд нового функционала, среди которого можно выделить:

  • Просмотр последних изменений в конфигурации
  • Управление активными транзакциями JMS
  • Управление активными пакетными задачами
  • Управление фильтрами Undertow

Java 9

Реализована поддержка работы сервера на Java 9. На данный момент работа на Java 9 возможна только в режиме совместимости (то есть без использования JPMS, с выключенными ограничениями рефлексии и т. д.).
Поддержка Java 9 будет постоянно развиваться. Например, для WildFly 12 в планах есть интеграция модулей сервера с JPMS.

Java EE 8

WildFly 11 остается сертифицирован только под Java EE 7. В его модулях есть поддержка отдельных новинок Java EE 8 (например, JSON-B 1.0), но она носит экспериментальный характер.
К сожалению, в связи с последними событиями, происходящими с платформой Java EE (передача ее из Oracle в Eclipse Foundation), сертификация под Java EE 8 в принципе под большим вопросом.

25.10.2017