3

EJB 3.1 JSR では、セクション 16.3.4 に記載されています

コンテナーは、エンタープライズ Bean インスタンスがその環境変数への読み取りアクセスのみを持つようにする必要があります。コンテナは、環境ネーミング コンテキストとそのサブコンテキストを変更する javax.naming.Context インターフェイスのすべてのメソッドから javax.naming.OperationNotSupportedException をスローする必要があります。

質問 1 : JSR によると、ステートレス Bean メソッドから JNDI にオブジェクトを追加/編集することは合法ではありません。

したがって、次のコードは、それが当てはまる場合は失敗するはずですが、jboss 6 でテストすると問題なく動作します。

public void RebindVars() throws NamingException{
    Context ctx = new InitialContext();
    String testString = (String) ctx.lookup("java:comp/env/testString");
    String newString = "helloRebindFromJndi"; //Assume that this is a valid call.
    if (!testString.equals(newString)) {
        ctx.rebind("java:comp/env/testString", newString);
    }
}

質問 2 : 私の jboss で動作するのは、必要以上のものを許可する jboss の実装ですか、それとも JSR を完全に誤解していますか?

私は EJB 認定を受けています。それが私がこれを求めている理由なので、私がこれを行う理由についてコメントする必要はありません =)

4

1 に答える 1

1

私はEJB仕様が言っていることが真実だと信じています。ENCは読み取り専用のネーミングスペースです。JBossAS7.1.1で試してみると、失敗するはずです。

あなたが興味を持っているかもしれないいくつかのさらなる読書:

于 2012-10-10T14:26:54.327 に答える