【问题标题】:Singleton vs Stateful remote EJB references in clusters集群中的单例与有状态远程 EJB 引用
【发布时间】:2011-03-28 14:24:48
【问题描述】:

我正在使用带有几个项目的 vanilla JBossAS 6 服务器来测试集群 JBoss 环境的功能。我遇到的问题是,如果我将 EJB 引用从节点中的一个 EJB(另一种类型)传输到另一个节点中相同类型的实例,则在方法调用时会引发异常,说明 指定 bean 的 long_alphanumeric_key 键未在缓存 (InfinispanStatefulCache) 中注册。

问题是,当在我需要传输的对象上使用单例注释而不是有状态注释时,传输的对象可以完美地工作,成功地在创建它的服务器上调用共享 EJB 的方法。问题是这种情况与 HA-Singleton 有相同的缺陷。之前通过查找 HA-JNDI 树获得的所有传输引用。

对我想要实现的目标的一些见解:

我目前需要的是在节点之间共享有状态 EJB 的单个实例,例如 HA-Singleton。不使用 HA-Singleton 的原因是这种类型的单例的状态是专门维护在集群的主节点上的,所以如果节点关闭或失败,实例的状态就会丢失。

使用有状态 bean 可以让我维护集群上的状态,从而防止在节点故障时状态丢失。我还没有完全理解 JBoss 和 Infinispan 缓存是如何工作的,但据我所知,@Clustered 带注释的有状态 bean 的状态会自动复制到集群上。

我们已经被警告过在当前 JBoss 版本中使用 Singletons 和 HA-Singletons 的问题,所以任何类型的文档或模式来帮助解决这个设计变更都是受欢迎的。

另外,如果有任何文档可以让我深入了解 Infinispan 缓存和 JBoss 集群是如何工作的,我将不胜感激。到目前为止,我一直在阅读的材料与使用 JBossCache 而不是 Infinispan 的旧 JBoss 版本混合在一起。

提前致谢,
德语

【问题讨论】:

    标签: java jboss singleton cluster-computing stateful-session-bean


    【解决方案1】:

    不幸的是,JBoss AS6 或 AS7 还不支持集群 EJB 单例 - 我认为这正是您正在寻找的。 HA-Singleton 将确保仅在集群的单个节点上启动某些服务的一个实例。这似乎不适合您的用例。看来您真的只需要分发 EJB 单例的状态。 这是我的建议,使用本地 EJB 单例,但使用 infinispan 来存储其分布式状态: * 对于初学者,我建议您使用 AS7 而不是 AS6,因为 Infinispan 集成更加成熟。 * 在 AS7 中,您可以直接在 Singleton 中使用 infinispan 缓存。 例如

    @Singleton
    public class MySingleton {
      // This references the same infinispan cache container used for sfsb replication
      @Resource(lookup="java:jboss/infinispan/container/ejb")
      private CacheContainer container;
      private Cache<?, ?> cache;
    
      @PostContruct
      public void init() {
        // This will create a cache for use by this singleton
        // Any state to be distributed should be stored in the cache.
        this.cache = container.getCache(this.getClass().getName());
      }
    
      @PreDestroy
      public void destroy() {
        this.cache.stop();
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-06
      • 1970-01-01
      • 2015-01-23
      • 2012-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多