当我们通过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();
}
}
那让我想知道,要使用哪一个?关闭上下文后,返回的对象甚至有效吗?这项工作是通过纯粹的重合而进行的,还是仅供查找的上下文,而对象(作为EJB的代理)是自我维持的?
我试图在jndi-spec中找到一些东西...但是什么都没有……但是我可能只是盲目; - )
通过JNDI查找EJB的最佳实践是什么,出于什么原因。
第一个版本包含一个冗余声明,无需推荐它,但是从上下文的角度来看,这两个声明没有区别。返回的对象在任何一种情况下都是有效的。