如何获得无状态EJB JNDI路径?

时间:2009-05-07 14:22:28

标签: jboss ejb-3.0 jndi

有没有办法获得无状态EJB JNDI路径?假设我编写了这样的EJB:

@Stateless
public class BookBean implements IBookBeanLocal {

 @Resource SessionContext sctx;

 ....

 @PostConstruct
 public void afterInit(){
    // sctx??
 }

}

有没有办法在初始化期间发现BookBeans JNDI路径?我需要这个在初始化期间自动将某些bean自动订阅到全局注册表。有没有其他方法可以这样做?

2 个答案:

答案 0 :(得分:1)

在Java EE 6中,JNDI路径标准化并记录在https://docs.oracle.com/javaee/6/tutorial/doc/gipjf.html

假设您只在一只耳朵内进行JNDI呼叫:

@Stateless
public class BookBean implements IBookBeanLocal {

    @Resource(lookup = "java:module/ModuleName")
    private String moduleName;

    @PostConstruct
    public void afterInit() {
        String jndi = "java:app/" + moduleName + "/" + getClass().getSimpleName();
    }
}

或通过lookup获取模块名称:

@Stateless
public class BookBean implements IBookBeanLocal {
    @PostConstruct
    public void afterInit() {
        Context ctx = new InitialContext();
        String jndi = "java:app/" + ctx.lookup("java:module/ModuleName") + "/" + getClass().getSimpleName();
    }
}

答案 1 :(得分:0)

您可以在@Stateless注释或xml ejb配置中编写所需的jndi路径,并在运行时读取该路径。

找出自动生成的jndi路径很麻烦。