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