当前位置: 首页 > 面试题库 >

我可以(以及如何)在EJB模块中使用javax.naming.Context#lookup查找CDI托管的bean吗?

邓令
2023-03-14
问题内容

我可以(如果可以的话,如何?)查找javax.naming.Context#lookup在EJB模块中使用的CDI托管bean ?

我正在使用GlassFish
v3。我想我可以使用@Named,但是CDI托管bean的JNDI名称是什么?我想从非托管POJO查找它们,所以我不能使用@Inject


问题答案:

您可以BeanManager通过JNDI(java:comp/BeanManager)查找,然后使用挂起的JSR-299 API
BeanManager来获取对托管bean的上下文引用。

JSR-299托管bean不可用于直接JNDI查找。



 类似资料:
  • 我有一个web模块和一个ejb模块打包到一个EAR中。 我有JSF支持bean成功地从ejb模块注入会话ejb,这些ejb模块能够从数据库中提取数据,例如。 为了支持Primefaces LazyDataModel,会话EJB将其EntityManager公开给LazyDataModel: 这会导致以下异常: 这是不是因为PersistenceContext只是一个在ejb模块中传递的有效bean

  • 我使用的是Maven、eclipse和WebSphere Application Server liberty V16.0.0.4,不知道哪里做错了,以下是相关文件: controller.java: index.xhtml: 就我所知,我已经做了所有正确的事情,我没有竞争的JSF或CDI实现,也没有使用JSF包中的任何作用域。我完全不知道为什么这不起作用...

  • 我正在用CDI开发一个库。这个很好用。但是,当我试图将这个库用作项目中包含的Jar时,CDI抱怨说它无法解决对父项目中定义的托管bean的依赖关系。 MyProject-MyLib。jar-MyManagedBean 所以MyLib需要注入一个带有原型@foo注释的bean。此原型应用于MyManagedBean。 我加了豆子。我的父项目也使用xml。但好像有两个不同的CDI容器,MyLib无法访

  • 我正计划将一个web应用程序从使用JSF托管bean转换为使用CDI托管bean。我知道我需要做以下工作: 在WEB-INF中添加空beans.xml文件。 将所有JSF@ManagedBean替换为CDI@Named Annotations。 用CDI或OmniFaces作用域注释替换所有JSF作用域注释。 将所有JSF@ManagedProperty替换为CDI@Inject Annotati

  • 我试图以编程方式查找并注入一个CDI托管bean,其中限定符包含一个类的名称(不是我想要注入的类),但是我遇到的问题是,我用来查找正确bean的代码总是返回。 我要注入的bean使用名为的自定义注释进行注释,该注释包含用作限定符的类的名称,bean还实现了名为的接口。我使用的类实现了接口。 基于我对CDI的有限了解,我认为为了以编程方式查找使用注释限定的正确bean,我需要扩展,然后我可以使用来选

  • 我在NetBeans中创建了一个带有EJB模块和web模块的Java EE应用程序。业务逻辑驻留在EJB模块内部的EJB中。web模块的托管bean是否可以访问EJB模块内部的EJB?怎么做? (JDK 1.7、Java EE 6、Glassfish 3.1.2.2、NetBeans IDE 7.2)