我想问一下您是否会推荐EJB3.1 singleton beans作为应用程序内存共享数据的存储。想象一些简单的应用程序需要将数据保存在内存中(而不是数据库中) - 例如某些即时消息服务器获取谁在线和谁不在线的数据(用户状态)。
您会推荐使用 EJB3.1 单例还是您更喜欢一些典型的缓存机制(例如 Coherence 等)?我可以想象一个具有多个 JVM 的集群,然后我想到使用 JMS 告诉其他单例应用程序内存发生了变化。
最佳答案
EJB 单例对于提供对少量应用程序范围数据的访问非常方便,但我不建议仅使用它们来管理集群中共享的大量数据。
典型的缓存解决方案(例如 Coherence 或 Infinispan)具有许多功能,例如逐出策略、集群复制拓扑、溢出到磁盘等,在这些情况下您会非常欣赏这些功能。
单例可以方便地用于让其他 bean 访问全局资源,例如 Infinispan 缓存。
关于caching - EJB 单例作为共享内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6940790/