2014-07-03 53 views
4

我在我的应用程序中使用InitialContext来查找远程EJB。有一些外部系统通知我有关某些事件,并在发生这种情况时将此通知委托给适当的远程EJB。应该InitialContext实例是否被缓存?

我一直认为我应该为每个查找组创建一个新的InitialContext(甚至可能在这些之后关闭初始上下文)。在上面的例子中,每个查询都是一个InitialContext实例。尽管我的团队中有些成员并不确定。

所以问题是: 应该InitialContext实例缓存?如果是,那么我应该保留这个实例多长时间,为什么?

+0

有一点需要注意,远程服务器的JNDI稳定与否。 –

回答

3

采取记住,InitialContext实例不同步,因此,缓存可如果同一个实例是通过并发线程访问是危险的。

也许你已经知道了,但为防万一,有效提高远程方法调用过程性能的常见做法是缓存查找操作获取的ejb引用。

2

由于您的IntialContext只是对命名空间起点的引用,因此每次执行新操作或将此引用存储在何处都无关紧要。

只有当它背后的服务提供商在初始化时做了大量工作,并因此如果反复进行时会降低性能,它可能只是很重要。

延伸阅读:JNDI trail of Java Tutorial

相关问题