当我们通过JNDI查找对象时,我们会这样做:
public SomeResult doSomething() {
Context ctx;
try {
ctx = new InitialContext(properties);
SomeClass someObject = (SomeClass) ctx.lookup("jndiName");
SomeResult someResult = someObject.getResult();
return someResult;
} finally {
ctx.close();
}
}
一位同事这样做有点不同:
public SomeClass getSomeClass() {
Context ctx;
SomeClass someObject = null;
try {
ctx = new InitialContext(properties);
SomeClass someObject = (SomeClass) ctx.lookup("jndiName");
return someObject;
} finally {
ctx.close();
}
}
这让我感到疑惑,使用哪一个?关闭Context后返回的对象是否有效?这是通过纯粹的巧合工作还是仅用于查找的上下文,并且对象(作为ejb的代理)是自我维持的?
我试图在JNDI-Spec中找到一些东西......但什么都没有......但我可能只是盲目的; - )
通过JNDI查找EJB并使用它的最佳做法是什么,以及出于什么原因。
答案 0 :(得分:2)
第一个版本包含冗余声明,没有任何建议,但从上下文的角度来看,这两者之间没有区别。无论哪种情况,返回的对象都有效。