Внедрение JSF-2.3 и CDI вместе в WebSphere Application Server
Недавно я обновился до использования Oracles new JSF-2.3, который включал добавление зависимости в качестве внешней библиотеки в моем pom.xml, поскольку я я использую maven, в отличие от ранее используемого сервера WebSphere Application (WAS) встроенной функции JSF-2.2. Я хотел обновиться, чтобы использовать новую функцию f: websocket, которая позволяет мне отправлять сообщения от сервера к клиенту для некоторой умной асинхронной загрузки страницы.
Но прежде чем мы перейдем к этому, как только я обновился, я заметил, что мои аннотации @ManagedBean устарели. После некоторого быстрого поиска в google я нашел, что должен использовать аннотации CDI, такие как @Named и т.д., Что привело меня к JSF-2.3, не находя мой управляемый @Named CDI-1.2 bean вопрос, из которого я узнал, что я не мог использовать внешнюю библиотеку JSF с WAS встроенной функцией CDI-1.2 вместе.
Моя проблема в том, что в соответствии с JSF-2.3 spec на стороне сервера мне нужно ввести "PushContext" в переменную on мой управляемый bean, используя аннотацию CDI @Inject, например:
@Inject @Push(channel="foo")
private PushContext bar;
Мне не удалось найти эквивалентную аннотацию JSF для @Inject, которая работает для ввода экземпляра в мою переменную PushContext и, например, попробовала @ManagedProperty. Поэтому мне нужно получить реализацию CDI, работающую с JSF 2.3, чтобы сделать эту работу.
Вещи, которые я пробовал:
- Я попытался использовать встроенную функцию CDI в WAS с кодом, указанным в моем вышеупомянутом вопросе.
- Я попытался не использовать функцию CDI по умолчанию и добавить зависимость CDI-1.2 в моем pom.xml(поэтому добавление CDI как внешняя библиотека), которая также не работала
- Попробовали только добавить Javax.inject library, так как все, что мне понадобилось, было аннотация @Inject как зависимость, а не CDI, которая также не была работа (стоит попробовать)
Я проиграл относительно того, как я должен использовать новые функции JSF-2.3 в WAS, если я не могу получить реализацию CDI, работающего с пользовательской библиотекой JSF, конечно, я что-то пропустил...
Я также слышал о чем-то, называемом "cdi-enablers", могут ли это помочь мне? являются ли они законными? или просто некоторые хаки, которые кто-то собрал, чтобы что-то сработало?
help!!!
Ответы
Ответ 1
После долгих исследований и тралового форума я пришел к выводу, что совместное использование JSF-2.3 и CDI-1.2 для использования функции f: websocket в WAS практически невозможно. См. мой пост на странице поддержки IBM, которая подтверждает это.
Еще один способ использования веб-сокетов с использованием JSF-2.2 - использовать пакет Javax.websocket как @Gas, указанный в предыдущем вопросе . Однако ограничение этой реализации веб-сокета заключается в том, что почти так же легко отправить данные, содержащиеся в SessionScoped ManagedBean, клиенту этого сеанса только так, как это было бы с использованием f: websocket из JSF-2.3, как мне бы хотелось сделать.