是否应该缓存InitialContext实例?

时间:2014-07-03 08:15:37

标签: java java-ee caching ejb

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

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

所以问题是: 是否应该缓存InitialContext实例?如果是,那么我应该将这个实例保持多久以及为什么?

2 个答案:

答案 0 :(得分:3)

请记住,InitialContext实例未同步,因此,如果并发线程访问同一实例,则缓存可能会很危险。

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

答案 1 :(得分:2)

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

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

进一步阅读:JNDI trail of Java Tutorial