在EJB 3.1 JSR中,它在第16.3.4节中说明
容器必须确保企业bean实例具有 只读取对其环境变量的访问权限。容器必须 抛出所有的javax.naming.OperationNotSupportedException 修改的javax.naming.Context接口的方法 环境命名上下文及其子上下文。
问题1 :根据JSR,从无状态bean方法添加/编辑一个对象,让字符串“hello”到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认证,这就是为什么我要问这个,所以没有必要评论为什么我会这样做=)
答案 0 :(得分:1)
我确实相信EJB规范所说的是真的。 ENC是一个只读命名空间 - 在JBoss AS 7.1.1上试一试,它应该失败。
您可能感兴趣的一些进一步阅读: