EJB или CDI в Nu Echo Rivr (библиотека VoiceXML Java)
Я пробовал инъекцию CDI и инжекцию @EJB EJB без сохранения состояния в диалоге Rivr. Они не работают Я также пробовал JNDI-поиск EJB через глобальное имя JNDI, но я получаю следующую ошибку (обратите внимание, что я использую java:global, но я получаю это сообщение):
Операция JNDI над именем java:comp/env не может быть завершена, поскольку текущий поток не связан с компонентом приложения Java Enterprise Edition. Это может произойти, если клиент JNDI, использующий имя java:comp/env, не появляется в потоке запроса приложения сервера. Убедитесь, что приложение Java EE не выполняет операции JNDI с именами java:comp/env в статических блоках кода или в потоках, созданных этим приложением. Такой код не обязательно выполняется в потоке запроса серверного приложения и поэтому не поддерживается операциями JNDI с именами java:comp/env.
В любом случае я могу ввести или найти CDI @Named или EJB в диалоге Rivr?
спасибо Игнасио
1 ответ
Я рассмотрел пример Spring в кулинарной книге Rivr и обнаружил, что DialogFactories выполняются в ServletThread. Это позволило мне успешно выполнить стандартный поиск JNDI с использованием глобального имени JNDI и передать EJB в создаваемый диалог.
Команда Rivr подтвердила это по электронной почте, и теперь я успешно получаю доступ к EJB.
Я не мог выполнить стандартные инъекции @Inject или @EJB, но "традиционное" решение JNDI сработало для меня.