JBoss

Inhalt

Diese Seite beschreibt einige Dinge im Zusammenhang mit dem JBoss Server.

Installation

  • Man lädt sich die aktuellste Version des Servers JBoss Wildfly von http://wildfly.org/downloads/ herunter. (Zur Zeit dieser Dokumentation war dies die Datei wildfly-12.0.0.Final.zip.)
  • Man entpackt die zip Datei in ein Verzeichnis und kann danach direkt mit der Datei standalone.bat (Windows) bzw. standalon.sh (Linux) im Verzeichnis bin den Server starten.
  • Man kann dann im Browser sofort die URL http://localhost:8080/ aufrufen und man gelangt auf die Startseite des Servers, wo man einige Dokumentationen abrufen kann. (Man kann parallel dazu auch den IIS verwenden.)
log Dateien findet man nach dem Start des Servers im Verzeichnis standalone/log. Das Logging kann mit der Datei standalone/configuration/logging.properties konfiguriert werden.

war Dateien, die auf den Server deployed wurden kann man im Verzeichnis standalone/deployments finden.

Der Server kann in der Commandline bzw. im Terminal mit Strg+c wieder gestoppt werden.

Deploy einer statischen Homepage

Die folgende Vorgangsweise habe ich hier gefunden.
  • Man wechselt in das Verzeichnis standalone/deployments der JBoss Server Installation.
  • Man erstellt ein Verzeichnis namens test.war
  • Man erstellt ein Verzeichnis namens test.war.dodeploy
  • Man wechselt in das Verzeichnis test.war.
  • Man kopiert die Webseite, die angezeigt werden soll in dieses Verzeichnis.
  • Man erstellt ein Verzeichnis namens WEB-INF
  • Man erstellt eine Datei namens web.xml mit diesem Inhalt.
          <?xml version="1.0" encoding="utf-8" ?>

          <web-app xmlns="http://java.sun.com/xml/ns/j2ee"  
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
              version="2.4">
          </web-app>
          
        
Wenn man danach den JBoss startet, dann kann man die Webseite unter http://localhost:8080/test/ aufrufen. (Das Verzeichnis test.war.dodeploy wird dabei vom Server in eine Datei namens test.war.deployed umgewandelt.)

Diese Schritte kann man natürlich auch in ein Skript verpacken. Dafür legt man die statische Homepage in ein Verzeichnis seiner Wahl und speichert darin auch die web.xml.

Danach führt man dieses Windows-Script bzw. dieses Linux-Script aus. Damit dieses Skript funktioniert müssen zunächst folgende Variablen in den ersten Zeilen des Skripts festgelegt werden:
  • HOMEPAGE_PATH: Pfad zum Homepage-Verzeichnis vom Skript aus gesehen.
  • JBOSS_DEPLOY_PATH: Pfad zum JBoss Deploy-Verzeichnis vom Skript aus gesehen.
  • HOMEPAGE_NAME: Name der Homepage auf dem Server. (Wichtig für die URL der Homepage)
Nach der Ausführung des Skripts muss der JBoss Server gestartet werden.

Wenn man dann die Homepage ändert kann man das Skript auch bei laufendem JBoss ausführen. Bei einer statischen html-Seite wurden die Änderungen ohne Probleme übernommen.

Deploy einer statischen Homepage mit Ant

Alternativ zur davor beschriebenen Vorgangsweise kann man auch Ant verwenden, um eine war Datei zu erzeugen und diese dann auf den Server zu deployen. Die Anleitung dafür habe ich hier gefunden.

Dafür muss man zunächst eine Verzeichnis anlegen, in dem die Daten passend strukturiert werden:
  • Ich habe dafür das Verzeichnis anttest angelegt.
  • Darin habe ich die Ordner bin, src und web angelegt.
  • Im Verzeichnis web ist die statische Homepage zu kopieren bzw. zu erstellen.
  • Zusätzlich muss im Verzeichnisweb das Unterverzeichnis WEB-INF angelegt werden.
  • In diesem neuen Unterverzeichnis web/WEB-INF muss die web.xml kopiert werden.
Nun muss Ant eingerichtet werden, um die war Datei erstellen zu können. Dafür benötigt man die Datei build.xml mit folgendem Inhalt:
          
          <project name="anttest" default="war" basedir=".">

            <property name="project-name" value="${ant.project.name}" />
            <property name="builder" value="wanderinformatiker" />

            <property name="war-file-name" value="${project-name}.war" />
            <property name="source-directory" value="src" />
            <property name="classes-directory" value="bin" />
            <property name="web-directory" value="web" />
            <property name="web-xml-file" value="web/WEB-INF/web.xml" />
            <tstamp prefix="build-info">
              <format property="current-date" pattern="d-MMMM-yyyy" locale="en" />
              <format property="current-time" pattern="hh:mm:ss a z" locale="en" />
            </tstamp>
            <property name="build-directory" value="build" />
            <property name="jboss-deployment-directory" value="../server/standalone/deployments" />
            
            <target name="war" depends="">
              <mkdir dir="${build-directory}" />
              <delete file="${build-directory}/${war-file-name}" />
              <war warfile="${build-directory}/${war-file-name}" webxml="${web-xml-file}">
                <classes dir="${classes-directory}" />
                <fileset dir="${web-directory}">
                  <!-- Need to exclude it since webxml is an attribute of the war tag above -->
                  <exclude name="WEB-INF/web.xml" />
                </fileset>
                <manifest>
                  <attribute name="Built-By" value="${builder}" />
                  <attribute name="Built-On" value="${build-info.current-date}" />
                  <attribute name="Built-At" value="${build-info.current-time}" />
                </manifest>
              </war>
            </target>
            
            <target name="deploy" depends="war">
                <copy todir="${jboss-deployment-directory}">
                  <file file="${build-directory}/${war-file-name}"/>
                </copy>
            </target>

          </project>
        
In dieser Datei habe ich lediglich in Zeile 2 den Projektnamen auf anttest und in Zeile 17 den relativen Pfad zum JBoss Deployment Verzeichnis gesetzt.. Eine genaue Beschreibung der build.xml kann man im Abschnitt Beschreibung der build.xml für die Erstellung einer war Datei nachlesen.

Die build.xml kopiert man gemeinsam mit einem Skript für den Aufruf von ant (createAndDeployWar.bat für Windows / createAndDeployWar.sh für Linux) in das Root-Verzeichnis (anttest). Ruft man dann das Skript auf, so wird der Ordner build erstellt und darin die Datei anttest.war. Abschließend kopiert das Skript die erstellte war Datei in das Deployment- Verzeichnis des Servers.

Beschreibung der build.xml für die Erstellung einer war Datei

Im Folgenden gibt es ein paar allgemeine Erklärungen zu den verwendeten Tags in der build.xml:
  • project: Dabei kann man den Projektnamen, das Root-Verzeichnis und das Default-Target festlegen.
  • target: Targets beinhalten Anweisungen, die Ant ausführen sollen. Targets können über Kommandozeile mit ant <targetname> aufgerufen werden.
  • property: Mit properties kann man Variablen und deren Werte definieren. Die Werte können dann mittels ${<property-name>} angewendet werden.
Im folgenden werden einige Angaben zum Thema der Erstellung einer war-Datei sowie zum Deployment dieser angeführt:
  • Mit dem Target war wird die war Datei erstellt. Dafür ist es notwendig Pfad und den Dateinamen der war Datei anzugeben, die erstellt werden soll. Weiters sind die Pfade zum Verzeichnis, in dem sich die kompilierten Java-Dateien befinden, und zum Verzeichnis, in dem sich die Web-Dateien (html, jsp, ...) befinden. Der Pfad zur web.xml muss auch angegeben werden. Zusätzlich kann festgelegt werden, welche Informationen im Manifest gespeichert werden sollen.
  • Mit dem Target deploy wird die erzeugte war Datei in das Deployment-Verzeichnis des JBoss Servers kopiert.