2010-12-06 4 views
5

Gibt es eine Möglichkeit, alle Knoten zu finden, die zum Cluster der Web-Anwendung gehören? Ich weiß auf JBoss kann ich HAServiceMBeanSupport verwenden, um Informationen über alle Knoten (Hostname, IP-Adresse) zu erhalten, aber wie kann ich etwas Ähnliches auf Tomcat, WebSpere, Glassfish, Oracle AS, Jetty, WebLogic erreichen? (Am besten wäre eine Schnittstelle, die für alle von ihnen funktioniert)Wie programmiere ich alle Knoten in einem J2EE Application-Cluster?

Antwort

0

Soweit ich weiß, hängt es von den Fähigkeiten Ihres Applicationserver.

Es gibt keinen "Standardweg", um dies zu tun.

können Sie versuchen, die folgenden:

Die Klasse ServletContextListener hat zwei Methoden. Sie können den Hostnamen und die IP-Adresse (n) innerhalb der create-Methode berechnen und den Knoten in der Methode destroy löschen.

Dieser Weg hat Probleme während eines VM-Absturzes, zum Beispiel wird die destroy-Methode nicht aufgerufen.

EDIT: Braucht Ihre Software eine Datenbank? Wenn dies der Fall ist, müssen alle Clusterknoten die gleiche Datenbankinstanz verwenden. Wenn Ihre App ohne Cluster bereitgestellt wird, verwendet sie eine "private" Datenbank. Sie benötigen einen gemeinsamen DB:

Tabelle: NODES


HOST | IP


as1.cluster | < ip>

as2.cluster | < ip2>

Wenn nur eine Zeile in diesen DB eingefügt wird, gibt es keinen Cluster.

Aber diese Tabelle beschädigt werden kann, wenn ein Knoten abstürzt und nicht entfernt den Eintrag aus dieser Tabelle.

+0

hmm, aber wie kann die Anwendung erkennen, dass es überhaupt in einem Cluster ist? Angenommen, Sie haben die App auf zwei Computern bereitgestellt, die NICHT in einem Cluster ausgeführt werden. Wie auch immer, ich habe Probleme, eine app-server-spezifische Lösung dafür zu finden ... –

+0

Wenn sie in einem Cluster laufen, müssen sie dieselbe Datenbank teilen (wenn eine Datenbank verwendet wird). Wenn sie in einem anderen Cluster oder als einzelner Anwendungsserver ausgeführt werden, sollten sie unterschiedliche Datenbanken verwenden. Wenn Sie EJB 3.1 (?) Verwenden können, gibt es eine Clusterwide Singleton-Bean. –

+0

Das Problem ist die App kann in einem Cluster bereitgestellt werden, muss aber nicht. Derzeit weiß ich nicht, dass, wenn das App-Archiv erstellt wird, ich deshalb versuche, festzustellen, ob es gruppiert ist oder nicht, wenn die Anwendung ausgeführt wird. Wenn das nicht möglich ist, müssen wir eine andere Konfiguration für Cluster-Anwendungen vornehmen (eigentlich wollen wir das nicht, da es mehr Konfiguration von unserem Kunden erfordert). –

Verwandte Themen