我正在尝试在集群环境中设置 Jboss 6,并使用它来托管集群有状态单例 EJB。
到目前为止,我们成功地在集群中安装了一个 Singleton EJB,我们的应用程序的不同入口点(通过部署在每个节点上的网站)指向托管 EJB 的单个环境(从而保持静态变量的状态)。我们使用以下配置实现了这一点:
豆接口:
@Remote
public interface IUniverse {
...
}
豆实现:
@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 状态的节点)正常关闭后,单例的状态会丢失并重置为默认值。请注意,所有内容都是根据 JBoss 5 Clustering 文档构建的,因为没有找到关于此主题的 JBoss 6 文档。任何关于如何解决这个问题或在哪里可以找到关于集群的 JBoss 6 文档的信息都非常感谢。