Undertow 2 не поддерживает механизм плагинов Servlet 4.0

Согласно 8.2.4 спецификации Servlet 4.0, все совместимые контейнеры должны реализовывать механизм подключаемых модулей, предоставляемый javax.servlet.ServletContainerInitializer и Undertow действительно рекламируется как таковой на главной странице, но он этого не делает (хотя на самом деле механизм существует с версии 3.0).

Его можно легко воспроизвести, создав приложение с поддержкой CDI с сервлетом Weld и попытавшись развернуть его во встроенном Undertow. Хотя Weld предоставляет SPI для ServletContainerInitializer, CDI не будет включен, если org.jboss.weld.environment.servlet.Listener вручную добавляется к соответствующему DeploymentInfo дескриптор.

Это нарушает совместимость спецификаций, и я видел все виды обходных путей на github (например, https://github.com/StephanSchrader/undertow-jaxrs-cdi), компенсирующие это поведение, из-за которого у меня кровоточат глаза, такие не могут быть использованы в производстве. Здесь также задан вопрос ( Embedded JAX-RS CDI (Undertow, RestEasy & Weld)), который приводит к еще одному из таких хаков, но не содержит надлежащего объяснения причинности.

Я хотел бы услышать от разработчиков Undertow: это намеренно, это когда-нибудь будет исправлено? Undertow jira содержит множество критических ошибок, которым более полугода, и на них вообще не обращают внимания, стоит ли добавлять еще одну такую? Учитывая все это, возможно ли использовать Undertow отдельно от WildFly?

0 ответов

Другие вопросы по тегам