gpt4 book ai didi

java - 在成员实例化中查找 EJB

转载 作者:行者123 更新时间:2023-12-01 14:21:01 25 4
gpt4 key购买 nike

我在将对 EJB 的引用保存为非 EJB 类的成员(在 EJB 中用作静态成员)时遇到问题

说我有

@EJB(...)
@Stateless
public Class SessionBean implements MySession{
protected static MyHelper helper = new MyHelper();
}

public Class MyHelper{
protected AnotherSessionBean ejb = lookup("jndi");

public void doSomething(){
ejb.foo();
}
}

由于辅助类不是 EJB,因此我有一个名为 int the member instantiating 的查找方法。使用这段代码我在运行时遇到异常java.lang.NoClassDefFoundError:无法初始化 SessionBean 类上的类

当我将 MyHelper 更改为这个时,它起作用了:

public Class MyHelper{
protected AnotherSessionBean getEjb(){
return (AnotherSessionBean)lookup("jndi");
}

public void doSomething(){
getEjb().foo();
}
}

想知道为什么第一种方法不起作用......

最佳答案

这可能是因为当第一个代码片段中发生 JNDI 查找时 AnotherSessionBean 可能尚未初始化。这意味着 SessionBean 首先被初始化。在初始化 SessionBean 时,MyHelper 的构造函数被调用。这又被称为尚未加载的 AnotherSessionBean 的 jndi。

这在第二个代码片段中起作用,因为调用 getEjb() 时,所有 EJB 都已初始化。所以 JNDI 可以找到 AnotherSessionBean。

关于java - 在成员实例化中查找 EJB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17564382/

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