小编mer*_*xbj的帖子

如何将EJB无状态会话Bean正确注入Web模块?

作为Java EE的新手(但不是Java本身)我正在尝试构建一个非常简单的"企业应用程序",其中Hibernate作为JPA提供程序,JSF作为实际的UI框架.为此,我使用NetBeans 7和GlassFish 3.1.

{应用程序名称} -ejb:

我已经完成了从这些实体的数据库和本地sesssion bean生成实体类.Beans.xml已经到位.

@Stateless
public class QuestFacade extends AbstractFacade<Quest> implements QuestFacadeLocal {
    // some methods here as well as EntityManager injection ...
}
Run Code Online (Sandbox Code Playgroud)

{应用程序名称} -war:

我已经创建了一个简单的POJO作为JSF页面的辅助bean.我用javax.inject.@Named和注释了它javax.enterprise.context.@SessionScoped.现在可以从JSF页面访问此辅助bean,并在访问实际页面时进行注入.Beans.xml也已就位.

@Named
@SessionScoped
public class QuestBean implements Serializable {

    @EJB
    protected QuestFacade questFacade;

    // several methods delegating lookups to the questFacade ...
}
Run Code Online (Sandbox Code Playgroud)

有了这个部署和页面访问,我从GlassFish得到一个错误,QuestFacadeJNDI无法查找.

堆栈跟踪很长,但最初的原因可能就足够了:

Caused by: javax.naming.NamingException: Lookup failed for 'model.session.QuestFacade#model.session.QuestFacade' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} …
Run Code Online (Sandbox Code Playgroud)

java netbeans dependency-injection java-ee ejb-3.1

9
推荐指数
1
解决办法
2万
查看次数

标签 统计

dependency-injection ×1

ejb-3.1 ×1

java ×1

java-ee ×1

netbeans ×1