【问题标题】:Use cache in EJB remote interface在 EJB 远程接口中使用缓存
【发布时间】:2012-01-24 13:11:47
【问题描述】:

我有一个部署在 Glassfish 服务器上的应用程序,它的方法被远程调用(使用标准 JNDI 和 RMI over IIOP 功能)。我想在客户端安装一些缓存功能,以避免多次网络调用并优化应用程序行为。

那么,我怎么能有一个缓存功能,最优化,

  • 我声明可以使用接口上的注释来缓存哪些远程接口调用
  • 所有缓存都是透明处理的

另外,我必须提到我的客户端应用程序使用 Weld 来使用远程 EJB 实例,它可以选择性地用于拦截 EJB 方法调用。

【问题讨论】:

  • 我早在 1998 年就研究过这个问题(没有注释、拦截器或 CDI)。我认为我们从未提出过好的解决方案!
  • 好吧,看来javax.cache 是一个很好的起点。 (博客条目甚至提到了如何在 Weld 应用程序中引入该缓存)。
  • @Riduidel javax.cache 将在 Java EE 7 中引入
  • @yatskevich,是的,但是像任何 java JSR 一样,它可以与旧版本一起使用(在我的例子中是 JavaEE6)。根据我之前提到的博客条目,JavaEE6 包含了我需要在我的代码中拥有可用缓存管理器的所有内容,所以我想我会这样做。

标签: java caching glassfish ejb-3.0


【解决方案1】:

其中一个选项是在客户端使用 ServiceLocator 模式,它封装了缓存行为。缓存存根类,您在 JNDI 查找后收到的内容。稍后您可以重新使用它。它允许避免额外的 JNDI 调用。

【讨论】:

    【解决方案2】:

    看起来,从JCache JSR 开始,今天大多数开源缓存“供应商”都提供了一些准标准化的缓存注释:

    仅此而已。 根据我目前的堆栈,最好的选择(目前)可能是 Infinispan,因为 ehcache 实现被标记为“实验性”并随着规范不断发展。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-23
      • 1970-01-01
      • 2012-09-13
      • 1970-01-01
      • 2011-04-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多