在 EJB 3.1 JSR 中,它在第 16.3.4 节中声明
容器必须确保企业 bean 实例对其环境变量只有读访问权。容器必须从修改环境命名上下文及其子上下文的 javax.naming.Context 接口的所有方法中抛出 javax.naming.OperationNotSupportedException。
问题 1:根据 JSR,从无状态 bean 方法向 JNDI 添加/编辑对象(例如字符串“hello”)是不合法的?
因此,如果这是真的,下面的代码应该会失败,但是在我的 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 认证,这就是我问这个的原因,所以不需要评论我为什么会这样做 =)