2015-05-19 57 views
4

当我们通过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的最佳实践,并且出于何种原因。

回答

1

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

相关问题