我正在使用缓存javax.naming.Context#lookup
调用结果的服务定位器实现,并将其映射到请求的 EJB 接口,因此第一个请求之后的所有后续请求(对于同一个 EJB)都返回缓存的实例。
我的担忧是:
- 由于使用了相同的实例,因此没有使用服务器 EJB 池,该池将同时为多个 EJB 的多个请求提供服务(除非底层服务器逻辑以某种方式使用 EJB 池)
- 无状态和有状态 EJB 是线程安全的,但同样,每个 EJB 类只使用一个实例,并且 EJB 通过 @PersistenceContext 注入了 EntityManager,我假设这意味着多个线程可以使用同一个 EntityManager 实例(不仅仅是持久性上下文),这绝对不是线程安全的
您是否认为最好不要在服务定位器中使用缓存,或者我对 EJB 行为的担忧是不合理的?