Wildfly Application Server - Leistungsfähiges Server-Management
Seit der Neuimplementierung des bekannten Application Server der JBoss Community sind die zahlreichen XML-Konfigurationsdateien verschwunden und neue Management-Konzepte haben Einzug gefunden. Ab der Version 7 des JBoss AS stehen zentralisierte Managementschnittstellen, wie die Web Console, das Command Line Interface (CLI) oder HTTP-basierte Schnittstellen für die Administration und Konfiguration bereit.
Die aktuelle Version, Wildfly 8 ist die Weiterentwicklung des JBoss AS 7 unter neuem Namen. Im Fokus dieser Version steht die Unterstützung der Java EE 7 Spezifikation sowie die Reduzierung der Ports um einen vereinfachten Betrieb des Servers in einer Cloud-Umgebung zu ermöglichen. Dieser Artikel gibt eine kurze Einführung in die Verwendung des Command Line Interface (CLI).
Das Managementkonzept des Application-Servers basiert auf einer generischen nicht typisierten Management API. Unabhängig welche Management-Schnittstelle verwendet wird, werden alle Änderungen persistiert und versioniert. Dabei sind standardmäßig alle Management-Schnittstellen des Servers abgesichert.
Das CLI bietet auf Basis der generischen Management-API eine vollständige Sicht auf alle verwaltbaren Ressourcen des Servers. Mit dem Skript jboss-cli.sh bzw. jboss-cli.bat kann eine Verbindung zu einer lokalen oder entfernten Instanz aufgebaut werden.
$ ./bin/jboss-cli.sh You are disconnected at the moment. Type 'connect' to connect to the server or 'help' for the list of supported commands. [disconnected /] connect 192.168.1.1:9990 Authenticating against security realm: ManagementRealm Username: admin Password: [standalone@192.168.1.1:9990 /]
Die Verwaltung erfolgt dabei über CLI-Kommandos. Ein CLI-Kommando entspricht einer sortierten Map bestehend aus der Adresse einer Ressource sowie einer Operation mit Parametern. Das unten gezeigte Beispiel liest die vollständige Konfiguration des Subsystems undertow aus.
[standalone@192.168.1.1:9990 /] /subsystem=undertow/:read-resource(include-defaults=true, include-runtime=true, recursive=true)
Jede Ressource bietet dabei generische Operationen für Schreib- und Leseaktionen an. Eine Tab-completion vereinfacht die Navigation durch den Ressourcenbaum und den angebotenen Operationen.
Mehrere CLI-Kommandos können im Batch ausgeführt werden und im nicht-interaktive Modus aus einer Datei gelesen werden. Dieses ermöglicht die Verwaltung der Server-Konfiguration über CLI-Skripte innerhalb eines Konfigurationsmanagements.
Die API des CLIs ist darüberhinaus auch mit JVM-basierten Skriptsprachen, wie z. B.: Jython oder Groovy verwendbar. Das beispielhafte Groovy-Skript liest den aktuellen Zustand des Servers aus.
import org.jboss.as.cli.scriptsupport.* cli = CLI.newInstance() cli.connect("localhost", 9990, "admin", "password".toCharArray()) result = cli.cmd(":read-attribute(name=server-state) ") response = result.getResponse() serverstate = response.get("result") println("Current server state: " + serverstate) cli.disconnect()
Zusammenfassend ist das CLI ein mächtiges Werkzeug für die Konfiguration und Verwaltung von JBoss-Instanzen. Die Verwendung mit JVM-basierten Skriptsprachen ermöglicht dabei die Integration in bestehenden DevOps- und Monitoring-Tools. Als Alternative zum CLI stehen aber auch noch weitere Schnittstellen wie die Web-Console oder HTTP-basierte REST-Schnittstellen zur Verfügung.