我在Rivr对话框中尝试过CDI注入和@EJB注入无状态EJB。它们不起作用。 我也尝试通过全局JNDI名称对EJB进行JNDI查找,但是我得到了以下错误(注意我使用的是java:global但是我得到了这个消息):
无法完成对java:comp / env名称的JNDI操作,因为当前线程未与Java Enterprise Edition应用程序组件关联。当使用java:comp / env名称的JNDI客户端未出现在服务器应用程序请求的线程上时,可能会发生此情况。确保Java EE应用程序不在静态代码块中的java:comp / env名称或该应用程序创建的线程中运行JNDI操作。此类代码不一定在服务器应用程序请求的线程上运行,因此不受JNDI对java:comp / env名称的操作的支持。
无论如何我可以在Rivr对话框中注入或定位CDI @Named或EJB吗?
感谢 伊格纳西奥
答案 0 :(得分:1)
我检查了Rivr cookbook中的Spring示例,发现DialogFactories是在ServletThread中执行的。这使我能够成功使用Global JNDI名称执行标准JNDI查找,并将EJB传递给正在创建的Dialog。
Rivr团队通过电子邮件证实了这一点,我现在正以这种方式成功访问EJB。
我无法执行标准的@Inject或@EJB注射,但JNDI"传统"解决方案对我有用。