初始上下文实例应该被缓存吗?

4

我在我的应用程序中使用InitialContext来查找远程EJBs。有一些外部系统会通知我一些事件,当发生这种情况时,我将此通知委托给适当的远程EJB。

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

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


需要注意的是,远程服务器的JNDI是否稳定。 - Wundwin Born
2个回答

3
请注意,InitialContext实例未同步,因此,如果并发线程访问相同的实例,则缓存可能会很危险。
也许你已经知道了,但是以防万一,一种有效提高远程方法调用过程性能的常见做法是缓存通过查找操作获取的ejb引用。

2

既然您的IntialContext不过是对命名空间起始点的引用,因此无论您每次都进行新建还是将其引用存储在某处,都不应该有影响。

仅当其背后的服务提供商在初始化时执行了大量工作并且重复执行会降低性能时,才可能会有影响。

进一步阅读:Java教程中的JNDI指南


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接