Über unsMediaKontaktImpressum
Heinz Wilming 24. Februar 2015

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.

Autor

Heinz Wilming

Heinz Wilming ist Leiter des JBoss Competence Center der akquinet AG. Er beschäftigt sich mit Technologien und Architekturen für verteilte Anwendungen. Sein Fokus liegt auf der Java EE Plattform und Open Source Technologien.
>> Weiterlesen
botMessage_toctoc_comments_9210