Mit WebSphere eXtreme Scale können Sie eine programmgesteuerte API verwenden, um den Lebenszyklus integrierter Server und Container zu verwalten. Sie können den Server über das Programm mit jeder der Optionen konfigurieren, die Sie auch über die Befehlszeilenoptionen oder dateibasierten Servereigenschaften konfigurieren können. Sie können den integrierten Server als Container-Server und/oder Katalogservice konfigurieren.
Viele Verwaltungstasks können über die Verwaltungs-API ausgeführt werden. Die API wird häufig als interner Server für die Speicherung des Webanwendungsstatus eingesetzt. Der Webserver kann als integrierter WebSphere eXtreme Scale-Server gestartet werden, den Container-Server dem Katalogservice melden, und anschließend wird der Server als Member eines größeren verteilten Grids hinzugefügt. Diese Verwendung kann aus einem ansonsten flüchtigen Datenspeicher einen skalierbaren und hoch verfügbaren Datenspeicher machen.
Sie können den vollständigen Lebenszyklus eines integrierten eXtreme-Scale-Servers über das Programm steuern. Die Beispiele sind so generisch wie möglich und enthalten nur direkte Codemuster für die beschriebenen Schritte.ServerProperties props = ServerFactory.getServerProperties();
props.setCatalogServiceBootstrap("host:port");
// Für Verbindungsherstellung zu einem bestimmtem Katalogserver erforderlich
props.setServerName("ServerOne"); // Server benennen
props.setTraceSpecification("com.ibm.ws.objectgrid=all=enabled"); // Tracespezifikation festlegen
Weitere Informationen zur Schnittstelle "CatalogServerProperties" finden Sie im Abschnitt Schnittstelle "CatalogServerProperties".
CatalogServerProperties catalogProps = ServerFactory.getCatalogProperties();
catalogProps.setCatalogServer(true);
// standardmäßig false; erforderlich für die Einstellung als Katalogservice
catalogProps.setQuorum(true); // Quorum aktivieren/inaktivieren
Weitere Informationen zur Schnittstelle "Server" finden Sie im Abschnitt Schnittstelle "Server". Weitere Informationen zur Klasse "ServerFactory" finden Sie im Abschnitt Klasse "ServerFactory".
Das folgende Beispiel veranschaulicht, wie die Server-Instanz erstellt wird: Server server = ServerFactory.getInstance();
Wenn Sie sich das vorherige
Beispiel ansehen, stellen Sie fest, dass die Klasse "ServerFactory" eine
statische Methode bereitstellt, die eine
Server-Instanz zurückgibt. Die Klasse
"ServerFactory" ist die einzige geplante Schnittstelle
für das Abrufen einer Server-Instanz.
Deshalb stellt die Klasse sicher, dass die Instanz ein Singleton bzw. die einzige
Instanz für jede JVM bzw. jedes isolierte Klassenladeprogramm ist. Die Methode
"getInstance" initialisiert die Server-Instanz.
Sie müssen alle Servereigenschaften konfigurieren, bevor Sie die Instanz initialisieren.
Die Klasse "Server" ist für die Erstellung neuer
Container-Instanzen zuständig. Sie können die Klassen "ServerFactory" und "Server"
verwenden, um den Lebenszyklus der integrierten Serverinstanz zu verwalten.
Weitere Informationen zur Schnittstelle "Container" finden Sie im Abschnitt Schnittstelle "Container".
DeploymentPolicy policy = DeploymentPolicyFactory.createDeploymentPolicy(new
URL("file://urltodeployment.xml"),
new URL("file://urltoobjectgrid.xml"));
Container container = server.createContainer(policy);
Sie können einen Container-Server entfernen und bereinigen, indem Sie die Methode "teardown" für die abgerufene Containerinstanz ausführen. Bei der Ausführung der Methode "teardown" für einen Container wird der Container bereinigt und aus dem integrierten Server entfernt.
container.teardown();
ServerFactory.stopServer(); // Factory zum Beenden des Server-Singletons
// oder
server.stopServer(); // Serverinstanz direkt verwenden
server.waitFor();
// Kehrt zurück, wenn die Beendigungsprozedur für den Server ordnungsgemäß abgeschlossen wurde
Vollständiges
Codebeispiel:
import java.net.MalformedURLException;
import java.net.URL;
import com.ibm.websphere.objectgrid.ObjectGridException;
import com.ibm.websphere.objectgrid.deployment.DeploymentPolicy;
import com.ibm.websphere.objectgrid.deployment.DeploymentPolicyFactory;
import com.ibm.websphere.objectgrid.server.Container;
import com.ibm.websphere.objectgrid.server.Server;
import com.ibm.websphere.objectgrid.server.ServerFactory;
import com.ibm.websphere.objectgrid.server.ServerProperties;
public class ServerFactoryTest {
public static void main(String[] args) {
try {
ServerProperties props = ServerFactory.getServerProperties();
props.setCatalogServiceBootstrap("catalogservice-hostname:catalogservice-port");
props.setServerName("ServerOne"); // Server benennen
props.setTraceSpecification("com.ibm.ws.objectgrid=all=enabled"); // TraceSpec
/*
* In den meisten Fällen dient der Server nur als Container-Server und
* stellt eine Verbindung zu einem externen Katalogserver her. Auf diese
* Weise wird eine höhere Verfügbarkeit erreicht. Der folgende, auf Kommentar
* gesetze Codeauszug aktiviert diesen Server als Katalogserver.
*
*
* CatalogServerProperties catalogProps =
* ServerFactory.getCatalogProperties();
* catalogProps.setCatalogServer(true); // Katalogservice aktivieren
* catalogProps.setQuorum(true); // Quorum aktivieren
*/
Server server = ServerFactory.getInstance();
DeploymentPolicy policy = DeploymentPolicyFactory.createDeploymentPolicy
(new URL("url to deployment xml"), new URL("url to objectgrid xml file"));
Container container = server.createContainer(policy);
/*
* Das Shard wird jetzt an diesen Container verteilt, wenn die
* Implementierungsanforderungen erfüllt sind.
* Dies umfasst die Erstellung des integrierten Servers und des Containers.
*
* Die folgenden Zeilen demonstrieren lediglich den Aufruf der Bereinigungsmethoden.
*/
container.teardown();
server.stopServer();
int success = server.waitFor();
} catch (ObjectGridException e) {
// Container konnte nicht initialisiert werden.
} catch (MalformedURLException e2) {
// Ungültiger URL für XML-Datei(en)
}
}
}