Как и JSF 2.3, аннотации @ManagedBean и другие javax.faces.bean. * Устарели и заменены CDI JavaEE 6.
Я успешно создал образец JSF-проекта и развернул его в WebLogic с использованием серверных реализаций glassfish.jsf.jar и без реализации JSF и CDI в WEB-INF / lib.
Но я боюсь застрять в реализации Сервера, которая иногда может устареть + мое приложение ведет себя по-разному во время работы на разных серверах приложений, поэтому я думаю, что было бы лучше, если бы я контролировал реализацию JSF.
Последние 4 дня я потратил на поиск способа использования пользовательской реализации JSF (Mojarra или MyFaces) с использованием новых аннотаций CDI или любой другой инфраструктуры DI, но безуспешно.
Я понял, что должен использовать реализацию JSF и CDI на сервере JavaEE, если я хочу избавиться от @ ManagedAnnotations.
Мой вопрос: есть ли способ включить мою предпочитаемую реализацию JSF и CDI в мою WAR, которая будет развернута на разных серверах приложений, таких как WebLogic и WildFly.
Примечание: я нашел старый вопрос от 2013 года с ответом "Нет", но я хочу знать, является ли этот ответ еще действительным
Изменить 02/11/2018:
Я успешно устанавливаю проект со встроенными JSF (Mojarra) и CDI (Weld) без каких-либо проблем на Tomcat Server. Я думаю, это потому, что Tomcat является контейнером сервлетов, поэтому нет конфликтов.
Я думаю, что моя проблема из-за конфликта между моим встроенным CDI и версией Weld для реализации на сервере. Я не могу найти решение, чтобы сделать мое приложение как черный ящик.
Я использовал этот weblogic.xml
ложь
<prefer-application-packages>
<package-name>!javax.servlet.*</package-name>
</prefer-application-packages>
<prefer-application-resources>
<resource-name>!javax.servlet.*</resource-name>
</prefer-application-resources>