Java 何时关闭JNDI上下文
当我们通过JNDI查找对象时,我们会执行如下操作:Java 何时关闭JNDI上下文,java,jakarta-ee,ejb,jndi,Java,Jakarta Ee,Ejb,Jndi,当我们通过JNDI查找对象时,我们会执行如下操作: public SomeResult doSomething() { Context ctx; try { ctx = new InitialContext(properties); SomeClass someObject = (SomeClass) ctx.lookup("jndiName"); SomeResult someResult = someObject.getResult(); return
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();
}
}
一位同事的做法有些不同,如下所示:
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并使用它的最佳实践是什么,原因是什么。第一个版本包含一个冗余声明,没有什么可推荐的,但从上下文的角度来看,这两者之间没有区别。返回的对象在任何情况下都有效