gpt4 book ai didi

java - 为什么EJB不需要初始化?

转载 作者:行者123 更新时间:2023-12-02 06:03:05 24 4
gpt4 key购买 nike

我也是 Struts2 框架和 EJB 的新手。我有一个类 LoginDAO ,它实现了接口(interface) LoginDAOLocalcheckUser 方法。我不明白为什么我会在以下场景中看到不同的行为:

如果我使用 EJB(LoginDAO 是无状态 session bean),方法调用可以完美运行,不会出现任何错误。

@EJB
private LoginDAOLocal loginDao;
loginDao.checkUser(userName,password);

如果我按如下方式使用 Struts2,它会为方法调用提供空指针异常。

public class LoginAction extends ActionSupport {

// Getters setters for userName and password)
private LoginDAOLocal loginDao;
loginDao.checkUser(this.userName,this.password);
}

如果我使用简单的 Java 应用程序(无 EJB 或 Struts2),该方法调用会创建一个编译时错误,提示 loginDao 未初始化

public static void main(String[] args) {

LoginDAOLocal loginDao;
loginDao.checkUser(userName,password);
}

有人可以解释为什么会出现这种不同的行为吗?

最佳答案

无需过多了解 Java EE 规范:EJB 由 J2EE 服务器(JBoss\Websphere 等)中存在的 EJB 容器进行管理。容器控制bean的生命周期,并负责根据应用程序的需要创建\销毁bean。

当容器(简单的java应用程序)耗尽时,您的bean将不会被初始化,并且您没有JNDI上下文来获取bean,即使您向字段成员添加@EJB注释也是如此。

关于java - 为什么EJB不需要初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22513393/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com