gpt4 book ai didi

java - 具有自注入(inject) EJB 的空指针

转载 作者:行者123 更新时间:2023-12-02 11:53:51 25 4
gpt4 key购买 nike

我正在使用 JEE7,我有一个无状态 EJB,它使用自注入(inject)来解决事务性问题。当我调用方法 selfMethod 并且它是公共(public)的时,一切正常。如果是私有(private)的,则注入(inject)的组件为空。我猜这与代理模型和自注入(inject)有某种关系,但不太明白为什么。

@Stateless
public class AnEjb {

@Inject
@EJB
private AnEjb self;

@Inject
private AClass anObject;

public void normalMethod() {
self.selfMethod();
}

public/private void selfMethod() {
anObject.anyMethod(); // Null pointer exception if selfMethod is private, no problem if it is public
}
}

最佳答案

EJB API 提供了一种自调用机制:

    @Stateless
public class AnEjb {

@Resource
private SessionContext sessionContext;

private AnEjb self;

@PostConstruct
void initialise() {
self = sessionContext.getBusinessObject(AnEjb.class);
}

public void normalMethod() {
self.selfMethod();
}

public void selfMethod() {
anObject.anyMethod();
}

}

请注意,SessionContext.getBusinessObject 方法返回外部客户端将看到的相同的 EJB“ View ”,因此只能访问其公共(public)方法。

关于java - 具有自注入(inject) EJB 的空指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47717564/

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