Jboss 如何获取无状态EJB JNDI路径?

Jboss 如何获取无状态EJB JNDI路径?,jboss,ejb-3.0,jndi,Jboss,Ejb 3.0,Jndi,有没有办法获取我的无状态EJB JNDI路径?假设我已经编写了这样一个EJB: @Stateless public class BookBean implements IBookBeanLocal { @Resource SessionContext sctx; .... @PostConstruct public void afterInit(){ // sctx?? } } 有没有办法在初始化期间发现BookBeans JNDI路径?我需要它在初始化期间将某些be

有没有办法获取我的无状态EJB JNDI路径?假设我已经编写了这样一个EJB:

@Stateless
public class BookBean implements IBookBeanLocal {

 @Resource SessionContext sctx;

 ....

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

}

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

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


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

在JavaEE6中,jndi路径是标准化的,并记录在

因此,假设您只在一只耳朵内进行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();
    }
}
或通过
查找
获取模块名称:

@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();
    }
}