Jboss 6 Cluster Singleton Clustered

时间:2011-03-13 00:06:11

标签: jboss singleton ejb-3.1 cluster-computing

我正在尝试在集群环境中设置Jboss 6,并使用它来托管集群状态单例EJB。

到目前为止,我们在集群中成功安装了Singleton EJB,其中我们应用程序的不同入口点(通过部署在每个节点上的网站)指向托管EJB的单个环境(因此保留了静态变量的状态) 。我们使用以下配置实现了这一目标:

Bean接口:

@Remote
public interface IUniverse {
  ...
}

Bean实现:

@Clustered @Stateful
public class Universe implements IUniverse {
  private static Vector<String> messages = new Vector<String>();
  ...
}

jboss-beans.xml配置:

<deployment xmlns="urn:jboss:bean-deployer:2.0">
    <!-- This bean is an example of a clustered singleton -->
    <bean name="Universe" class="Universe">
    </bean>
    <bean name="UniverseController" class="org.jboss.ha.singleton.HASingletonController">
        <property name="HAPartition"><inject bean="HAPartition"/></property>
        <property name="target"><inject bean="Universe"/></property>
        <property name="targetStartMethod">startSingleton</property>
        <property name="targetStopMethod">stopSingleton</property>
    </bean>
</deployment>

此实现的主要问题是,在主节点(包含单例EJB状态的节点)关闭后,Singleton的状态将丢失并重置为默认值。请注意,所有内容都是按照JBoss 5 Clustering文档构建的,因为没有找到关于此主题的JBoss 6文档。有关如何解决此问题或在何处查找有关群集的JBoss 6文档的任何信息都表示赞赏。

1 个答案:

答案 0 :(得分:1)

我认为你实际上不需要“单独”有状态会话bean,因为调用有状态会话bean的方法是保持对bean的获取引用并调用相同的引用实例。应用程序服务器集群将通过维护集群中的ejb会话来维护有状态会话Bean的状态。

但最后,我同意你可能想重新考虑使用有状态会话bean的必要性。