当您想从客户端调用 an时,首先您需要通过 JNDI 查找EJBBean
来获取对象引用。EJBHome
每次您需要使用此代码时都需要执行此代码,EJBBean
这样会变得多余且昂贵。
要解决此问题,您可以缓存EJBHome
对象引用并从缓存中一次又一次地重用它们,而无需重复 JNDI 查找。
这是EJBHomeFactory Pattern
(或更通用的服务定位器模式)。
我见过的大多数实现都使用同步Map
作为缓存,或者Hashtable
. 如果缓存是在应用程序部署在服务器上时构建的,并且之后没有对缓存进行任何修改(仅执行 get() 方法),我真的需要同步Map
或HashMap
意志吗?
我知道HashMap
如果至少有一个线程修改了地图是不安全的(这里甚至有一个 SO 帖子),但在这种情况下线程只执行读取。
那么,在HashMap
中使用安全EJBHomeFactory Pattern
吗?