java - 何时关闭 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 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 的代理)是 self 维持的?

我试图在 JNDI-Spec 中找到一些东西……但一无所获……但我可能只是瞎了眼 ;-)

通过 JNDI 查找和使用 EJB 的最佳实践是什么,原因是什么。

最佳答案

第一个版本包含多余的声明,没有什么可推荐的,但是从上下文的角度来看,这两者之间没有区别。返回的对象在任何一种情况下都是有效的。

关于java - 何时关闭 JNDI 上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30320248/

相关文章:

java - 在 EJB 3 (SLSB) 中处理 JDBC 连接的正确方法

jakarta-ee - 将@Dependent CDI bean 注入(inject) EJB 会导致内存泄漏

java - 具有百分比高度和宽度的相对布局

java - GSON 可以使用 LinkedList 作为 java.util.List 接口(interface)的默认反序列化吗?

java - 获取Java EE项目中的相对路径

java.net.ConnectException : after adding weblogic-application. xml

jakarta-ee - Java中j_security_check完成认证后如何触发Bean

ejb - 在 EJB 方法/@RequestScoped 和 @Stateless 之间传递状态

java - Spring中DataBinder和ConversionService的区别

java - 当我在 install4j 中使用相对路径,然后在该相对路径上使用 getCanonicalPath() 方法时,它返回错误的绝对路径?