Я пробовал инъекцию CDI и инъекцию EJB без учета состояния в диалоговом окне Rivr. Они не работают. Я также попытался JNDI поиск из EJBs через имя Global JNDI, но я получаю следующее сообщение об ошибке (обратите внимание, я использую Java: глобальный, но я получаю это сообщение):EJB или CDI в Nu Echo Rivr (библиотека Java VoiceXML)
операции по JNDI на Java: комп/имя env не может быть завершено, потому что текущий поток не связан с компонентом приложения Java Enterprise Edition. Это условие может возникнуть, если клиент JNDI, использующий имя java: comp/env, не встречается в потоке запроса на серверный запрос. Убедитесь, что приложение Java EE не запускает JNDI-операции с именами java: comp/env в статических блоках кода или в потоках, созданных этим приложением. Такой код не обязательно запускается в потоке запроса серверного приложения и поэтому не поддерживается операциями JNDI для java: имена comp/env.
Есть ли все-таки я могу вставить или найти CDI @Named или EJB в диалоговом окне Rivr?
благодаря Игнасио
Я не знаком с Ривром, но с [страницы документации] (https://github.com/nuecho/rivr/wiki/Getting-Started) Я не вижу связи библиотеки с платформой Java EE. Чтобы получить доступ к EJB и CDI-компонентам, вам нужно запустить приложение как WAR или EAR на сервере приложений JavaEE. Можете ли вы опубликовать некоторые фрагменты кода о том, как вы используете Rivr и как вы хотите внедрить EJB с помощью JNDI? – OndrejM
Кажется, что более подходящий вопрос заключается в том, как вы развертываете свое приложение на основе rivr? –
Привет, приложение запускается как стандартная война. Проблема не была связана с тем, как я запускаю приложение Rivr, поскольку я использовал сервер приложений JEE7 и Injecting CDI и EJB успешно в других местах моего кода. Проблема заключалась в том, что диалоговые окна по умолчанию Rivr запускаются в потоке из контекста JEE или Servlet, поэтому EJB недоступны даже в дереве JNDI. Я только что опубликовал решение, надеясь, что он может помочь кому-то другому. – icordoba