Beinahe enzyklopädisch behandelt unser Schwerpunkt-Artikel über IPSEC verschlüsselte Verbindungen zwischen Linux, Windows, BSD, Solaris, Cisco- sowie ... (mehr)

Zugriffsschutz

Server-spezifische Konfigurationsanweisungen liest JBoss aus der Datei »WEB-INF/jboss-web.xml« ein, hierzu zählt beispielsweise die Konfiguration einer Security-Domäne für Ihre Anwendung. Hiermit können dann unter anderem Benutzer authentifiziert und autorisiert werden, bevor diese Zugriff auf die Anwendung oder Teile davon erhalten. Die JSP-Datei ist in Listing 2 dargestellt, den Deployment-Deskriptor zeigen die folgenden Zeilen:

<web-app>
<display-name>Hello World</display-name>
</web-app>

Listing 2

JSP-Webanwendung in hello.jsp

 

Mithilfe des Tools »jar« lässt sich aus diesen Dateien nun ein WAR-Archiv erzeugen (Listing 3). Das so erzeugte Archiv ist dann in das Hot-Deployment Verzeichnis des aktiven JBoss-Konfigurationsverzeichnisses zu kopieren. JBoss nimmt in diesem Falle sofort Notiz von der neuen Web-Anwendung und stellt diese unmittelbar zur Verfügung. Der Aufruf von »http://localhost:8080/helloworld/hello.jsp« im Webbrowser bestätigt dies (Abbildung 4).

Listing 3

Web-Archivpaket erzeugen mit jar

 

Abbildung 4: Im Webbrowser lässt sich schließlich die Ausgabe der Webanwendung bewundern.

Deployment mit Tool

Statt das WAR-Archiv in das Deployment-Verzeichnis zu kopieren, lässt sich auch das bereits erwähnte Admin-Tool »twiddle« verwenden. Mithilfe der Operation »deploy« der JBoss MBean »jboss.system:service=MainDeployer« stellen Sie die Webanwendung auch dann bereit, wenn Sie beispielsweise gar kein Schreibrecht auf das Deployment-Verzeichnis besitzen. Ein Nachteil dieser Methode besteht darin, dass die Anwendung nach einem Neustart des Servers nicht wieder automatisch gestartet wird.

# ./twiddle.sh invoke "jboss.system:service=MainDeployer" deploy/opt/examples/HelloWorld/helloworld.war

Anstelle komprimierter Archiv-Dateien kann JBoss auch mit kompletten Verzeichnis-Strukturen umgehen. Dies ist manchmal einfacher, als Archive bereitzustellen, da sich in Verzeichnissen einzelne Dateien leichter verändern oder hinzufügen lassen, ohne dass bei jeder Änderung ein neues Archiv zu erzeugen ist. Ein Neustart des Servers ist bei dieser Methode nach einer Änderung an einer Anwendung nicht notwendig, JBoss erkennt diese automatisch anhand aktualisierter Zeitstempel an den Dateien. Wichtig vor dem Bereitstellen ganzer Verzeichnisse ist jedoch, dass diese das passende Suffix besitzen, sonst weiß der Server nicht, welchen Deployer er zum Bereitstellen verwenden soll (siehe Listing 4).

Listing 4

Deployment per Verzeichnis

 

Nachdem nun klar ist, wie man eine einfache Webanwendung auf dem JBoss AS bereitstellt, lohnt es sich, einen genaueren Blick in die Konfiguration des Servers zu werfen. Wie bereits weiter oben erwähnt, enthält JBoss AS mehrere Konfigurations-Verzeichnisse. Beim Starten des Servers wurde in unserem Beispiel die »all« -Konfiguration ausgewählt. Der entsprechende Konfigurationsordner »/opt/jboss-5.1.0.GA/server/all« enthält diverse Unterverzeichnisse.

Auch hier ist ein grundlegendes Verständnis der einzelnen Verzeichnisse wichtig:

  • »conf« : enthält sämtliche Konfigurationsdateien für den JBoss-Kernservice, die einzelnen Services sowie für das Logging-Subsystem Log4j [4].
  • »deploy« : Dieser Ordner wurde bereits im letzen Abschnitt vorgestellt. Sämtliche Anwendungen, die in dieses Verzeichnis kopiert werden, erkennt JBoss automatisch und stellt sie dynamisch zur Verfügung. Zum Entfernen einer Anwendung ist diese einfach aus dem »deploy« -Verzeichnis zu löschen, oder besser, in ein »undeploy« -Verzeichnis zu verschieben.
  • »deployers« : enthält Services zum Erkennen der verschiedenen Anwendungs- und Archivtypen aus dem »deploy« -Verzeichnis.
  • »lib« : enthält Bibliotheken, die von sämtlichen JEE Services einer gemeinsamen Serverkonfiguration verwendet werden. Spezielle Bibliotheken, die nur zu einer einzelnen Anwendung gehören, sollte man lieber über die Anwendung selbst zur Verfügung stellen, etwa als Teil eines Webarchives.

Neben diesen Standard-Verzeichnissen erzeugt JBoss noch weitere Ordner zur Laufzeit. Hiervon sind besonders diese interessant:

  • »log« : enthält die Dateien »boot.log« , »server.log« und eventuell »audit.log« (je nach Konfiguration). »boot.log« enthält alle Log-Meldungen des Start-Prozesses des Servers, bis die Kontrolle an log4j übergeben wird. Dieser Service schreibt die Meldungen dann in die Datei server.log. Das Sicherheits-Subsystem von Jboss verwendet die Datei »audit.log« für sicherheitsrelevante Meldungen.
  • »work« : Hier hält der JBoss-Webserver die übersetzten Java-Class-Dateien und Servlets vor. Für die oben aufgeführte Webanwendung existieren hier beispielsweise die beiden Dateien »work/jboss.web/localhost/helloworld/org/apache/jsp/hello_jsp.class« und »work/jboss.web/localhost/helloworld/org/apache/jsp/hello_jsp.java« .

Um den Server anzupassen, sind die Konfigurationsdateien in »conf« am interessantesten. Als Beispiel soll hier das Logging des JBoss-Servers dienen. Wie bereits erwähnt, setzt JBoss das Log4j Logging-Framework ein. In der Konfigurationsdatei »conf/jboss-log4j.xml« existieren in der Standardkonfiguration zwei sogenannte Appender. Diese bestimmen, wohin die Logmeldungen der JBoss-Services oder der bereitgestellten Anwendungen zu senden sind. Der erste Appender schreibt sämtliche Meldungen aller Loglevel (»TRACE« , »DEBUG« , »INFO« , »WARN« , »ERROR« and »FATAL« ) in die Datei »log/server.log« und legt dabei einmal pro Tag eine neue Datei mit einem entsprechenden Datums-Suffix an (Listing 5). Soll der Server stattdessen die Log-Datei rotieren, sobald diese eine bestimmte Größe erreicht hat, so sind die Appender-Parameter entsprechend anzupassen (Listing 6). Der zweite Appender »CONSOLE« sorgt für eine Ausgabe auf der Konsole. Jedoch findet diese erst ab dem Log-Level »INFO« statt, wofür der Parameter »param name="Threshold" value="INFO"« in der Konfiguration des Appenders zuständig ist. Somit vermeidet man, dass das Consolen-Log mit zu vielen Log-Meldungen überflutet wird. Natürlich ist es auch möglich, für die einzelnen Log-Level eigene Dateien zu erzeugen. Hierfür existieren in der Kategorie »Limit categories« Einstellmöglichkeiten, die sich auf einen Appender mit einem bestimmten Namen beziehen (dieser ist hier als Referent anzugeben), und das Logging einer bestimmten Klasse oder einer Anwendung, die von dieser Klasse abgeleitet ist, ab einen bestimmten Log-Level definiert. Die Konfigurationsdatei bietet hierfür sehr viele Beispiele.

Listing 6

File-Appender mit Rotation

 

Listing 5

JBoss-Default-File-Appender

 

Ähnliche Artikel

comments powered by Disqus

Artikel der Woche

Eigene Registry für Docker-Images

Wer selber Docker-Images herstellt, braucht auch eine eigene Registry. Diese gibt es ebenfalls als Docker-Image, aber nur mit eingeschränkter Funktionalität. Mit einem Auth-Server wird daraus ein brauchbares Repository für Images. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Google+

Ausgabe /2019