caching - 用于缓存的 Java EE @Singleton EJB

标签 caching jakarta-ee singleton ejb

我正在 Java EE 中开发一个应用程序,我想使用 @Singleton EJB 实现缓存。这会缓存引用数据,因此我只需要从数据库中检索一次,然后将其存储在内存中。

我想从实现的角度知道使用 @Singleton EJB 这是否正确?或者你能推荐我另一种方法吗?从 OOP 的角度来看这是否正确?

并且 @Singleton EJB 是只读的,我可能会遇到任何并发问题吗?

问候,

最佳答案

这个方法还可以,但缺点是以后增强解决方案并不简单——没有漂亮的界面。 但每个 JavaEE 服务器都可以实现,无需任何迁移工作,因为它是标准 JavaEE。

另一个解决方案有点取决于您使用的服务器。

WildFly(社区):您可以使用内部 infinispan 子系统并以 HashMap 方式使用。如果缓存增长并且您需要更多内存来缓存它,您可以简单地在本地使用它,然后将配置更改为集群(复制或分发)。

JBoss EAP(企业产品):这里您不能使用Infinispan 子系统,技术上可以,但不支持。您需要使用基于 infinispan 的附加 JBossDataGrid (JDG)。 这里你有更多的选择,与上面相同,在同一个 JVM 本地或 dist/repl 中使用缓存。或者在具有远程访问缓存的不同实例上 - 通常足够快,但您有一个远程访问 - 但 JVM 与服务器完全分离,并且可以以不同的方式启动和维护。而且服务器和缓存不会影响彼此的内存。

对于其他供应商,您也可以使用 JDG 方法(或 Infinispan 作为 OpenSource)。

关于caching - 用于缓存的 Java EE @Singleton EJB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38520317/

相关文章:

java - 可缓存注解有什么用

java - 单例类的公共(public)方法应该同步吗?

javascript - 如何使用 AngularJS $templateCache.get()?

c# - 单个与多个 MemoryCache 实例

.htaccess - 强制浏览器忘记缓存的重定向?

http - ETag header 是否使 Cache-Control header 过时?那么如何确保 Cache-Control 无害呢?

java - Jboss/Tomcat监控

java - 在 ResourceContext initResource 创建的 JAX-RS 子资源实例中不可能进行 CDI 注入(inject)

c++ - 在单例类上调用的复制构造函数

ruby - 如何在 ruby​​ 中将一个类的对象数量限制为给定数量?