Ich versuche, einen Jboss 6 in einer Clusterumgebung einzurichten und ihn zum Hosten von geclusterten zustandsbehafteten Singleton EJBs zu verwenden.
Bisher haben wir erfolgreich eine Singleton EJB innerhalb des Clusters installiert, bei der verschiedene Einstiegspunkte zu unserer Anwendung (über eine auf jedem Knoten bereitgestellte Website) auf eine einzige Umgebung verweisen, in der die EJB gehostet wird (wodurch der Zustand statischer Variablen erhalten bleibt). Wir haben dies mit der folgenden Konfiguration erreicht:
Bean-Schnittstelle:
@Remote
public interface IUniverse {
...
}
Implementierung der Bohne:
@Clustered @Stateful
public class Universe implements IUniverse {
private static Vector<String> messages = new Vector<String>();
...
}
jboss-beans.xml-Konfiguration:
<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>
Das Hauptproblem bei dieser Implementierung besteht darin, dass nach dem ordnungsgemäßen Herunterfahren des Masterknotens (der den Status des Singleton EJB enthält) der Status des Singletons verloren geht und auf die Standardwerte zurückgesetzt wird. Bitte beachten Sie, dass alles nach den JBoss 5 Clustering-Dokumenten erstellt wurde, da keine JBoss 6-Dokumente zu diesem Thema gefunden wurden. Für jede Information, wie dieses Problem zu lösen ist oder wo man JBoss 6-Dokumente über Clustering finden kann, sind wir dankbar.