2

ステートレスEJBJNDIパスを取得する方法はありますか?私が次のようなEJBを作成したと仮定します。

@Stateless
public class BookBean implements IBookBeanLocal {

 @Resource SessionContext sctx;

 ....

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

}

初期化中にBookBeansJNDIパスを検出する方法はありますか?初期化中に特定のBeanをグローバルレジストリに自動サブスクライブするためにこれが必要です。他にそうする方法はありますか?

4

2 に答える 2

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();
    }
}
于 2015-08-17T10:00:50.983 に答える
0

必要なjndiパスを@Statelessアノテーションまたはxmlejb構成に記述し、実行時に読み取ることができます。

自動生成されたjndiパスを見つけるのは面倒です。

于 2009-05-10T19:05:16.967 に答える