我有一些所有EJB都需要的常见数据,因此我决定编写1个EJB来获取数据,而其他EJB将调用第一个EJB来获取数据。现在我想在EJB中缓存数据,这样每次要求数据时都不必返回数据库。
那么,我如何在EJB中缓存数据,并且每隔1小时左右就可以提取一份新的副本。 我可以用Ehcache做到这一点吗?或者我认为这一切都错了,而且还有更好的方法。
由于
答案 0 :(得分:2)
我认为你必须使用已经完成这项工作的框架。例如:
答案 1 :(得分:1)
是的,您可以将ehcache用于此目的,但这仍然不会在EJB内“缓存”并保留在运行服务器的节点的内存中。
在无状态EJB中,您只有这个选项,而在有状态EJB中,您可以将数据保存在EJB中(但是长时间拥有有状态EJB只是愚蠢的),所以这不是一个真正的替代方案。 / p>
另一种方法是以静态方式在EJB中使用某些数据持有者。例如。创建一个保存数据或静态列表的静态映射。当然这只是每个类加载器,但只要不从类加载器中删除类,静态数据就会保留在那里。这真的是在记忆中。为了刷新,您可以创建一个石英作业,定期更新静态成员内的数据。