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

我试图在jndi-spec中找到一些东西...但是什么都没有……但是我可能只是盲目; - )

通过JNDI查找EJB的最佳实践是什么,出于什么原因。

第一个版本包含一个冗余声明,无需推荐它,但是从上下文的角度来看,这两个声明没有区别。返回的对象在任何一种情况下都是有效的。

最新更新