Wintersemester 2007/2008 FernUniversität Hagen
Fakultät für Mathematik und Informatik
 Kurs 01794 - Software Engineering II
 Lehrgebiet Software Engineering, Prof. Dr. Six

Schnelleinstieg Sun Java System Application Server

Im Folgenden wird erläutert, wie der Sun Java System Application Server (im Weiteren kurz als Sun Application Server bezeichnet) installiert und gestartet wird. Der auf dieser Seite beschriebene Schnelleinstieg verwendet Windows 2000/XP als Betriebsystem. Die Installation auf Linux/Unix verläuft allerdings ähnlich.

Um so wenig Ärger wie möglich mit der Installation zu haben, empfehlen wir ein Komplettpaket zu installieren. Dieser Schnelleinstieg verwendet das Paket Java EE 5 SDK in dem praktisch alles Nötige enthalten ist. Dieses Paket gibt es für die Plattformen: Windows, Linux, Solaris SPARC und Solaris x86. Es beinhaltet:

Wer darüber hinaus experimentieren oder selber die Pakete zusammenstellen möchte, kann sich unter  https://glassfish.dev.java.net/, der Homepage des Opensource-Basisprojekts, informieren. Allen Anderen empfehlen wir die Installation des Java EE 5 SDK, welches Sie unter http://java.sun.com/javaee/downloads/index.jsp erhalten.

Installation des Java EE 5 SDK

Die Installation des Pakets ist denkbar einfach:
Nach der Installation sollten Sie einen Eintrag im Startmenü namens Sun Microsystems -> Application Server PE 9 finden. Dort finden Sie alle notwendigen Hilfsmittel um mit dem Application Server zu arbeiten.

Starten und Stoppen des Servers

Nach erfolgreicher Installation kann nun über Start -> Programme -> Sun Microsystems -> Application Server PE 9 -> Start Default Server der Sun Application Server gestartet und bzw. über Stop Default Server gestoppt werden.

Um zu testen, ob Sie den Sun Application Server erfolgreich auf Ihrem System installiert haben, starten Sie – sofern dies noch nicht automatisch nach der Installation geschehen ist – zunächst den Application Server. Anschließend sollten Sie unter der URL http://localhost:8080 (bzw. http://127.0.0.1:8080) die Application Server-Startseite aufrufen können, vgl. Abbildung 1. Der Application Server horcht per Voreinstellung auf Port 8080, um Konflikte mit anderen Webservern, die Anfragen auf Port 80 entgegennehmen, zu vermeiden.


SunAppStart
Abbildung 1 Die Application Server-Startseite


Sun Application Server-Verzeichnisse

Die wichtigsten Verzeichnisse des Sun Application Server sind in folgender Tabelle aufgelistet.

Verzeichnis bzw. Datei Inhalt

bin/*

Ausführbare Dateien, u.a. Batch-Dateien für verschiedene Aufgaben

domains

Hier werden die einzelnen Arbeitsdomänen verwaltet. Als Standarddomäne sollte domain1 bereits eingerichtet sein.

domains/domain1/applications

Hier legt der Server, in den beiden Unterverzeichnissen j2ee-apps und j2ee-modules, die deployten Applikationen und Servlets ab.

domains/domain1/autodeploy

Dieses Verzeichnis wird vom Application Server überwacht. Kopiert man z.B. ein WAR-Archiv in dieses Verzeichnis, wird die Webapplikation daraufhin automatisch vom Server installiert (deployt). Löscht man die WAR-Datei wieder, so löst der Server die Deinstallation (Undeploy) aus. Analog können z.B. auch Enterprise Applications durch Hierherkopieren der EAR-Datei installiert werden.
Eine vom Server angelegte Logdatei in diesem Verzeichnis gibt Auskunft über den Zustand des Deployments der Datei.

lib

Java-Bibliotheken des Application Servers (jar-Dateien), die z.B. von Webapplikationen verwendet werden, sind hier von Sun bereits installiert. Dazu gehört unter anderem auch die Datei javaee.jar.


Hello World!

Nachdem der Installation des Sun Application Servers, zeigen wir nun, wie Sie das klassische Hello World Beispiel als Webapplikation erstellen können. Die Applikation besteht nur aus einem einzigen Servlet, das die Meldung „Hello World!“ in Form eines HTML-Dokuments zurück an den Browser sendet.

Im Folgenden gehen wir davon aus, dass die Variable %JavaHome% bereits gesetzt ist. Als Pfad zum Installationsverzeichnis des Application Servers benutzen wir die Variable %AppServerHome% (bei uns ist das c:\Programme\Sun\AppServer).

Zunächst erstellen Sie in einem beliebigen Verzeichnis, z.B. in „c:\JavaProjekte“, das Servlet HelloWorld.java mit folgendem Inhalt:

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class HelloWorld extends HttpServlet {

protected void doGet(HttpServletRequest Request,
HttpServletResponse Response)
throws ServletException, IOException {

Response.setContentType("text/html");
PrintWriter out = Response.getWriter();
out.println("<html><body>Hello World!</body></html>");
}

}

Jetzt erzeugen Sie die folgenden Verzeichnisse

c:\JavaProjekte\WEB-INF
c:\JavaProjekte\WEB-INF\classes
Anschließend kompilieren Sie die Datei HelloWorld.java mit dem Befehl:
javac -cp %AppServerHome%\lib\javaee.jar -d WEB-INF\classes HelloWorld.java

Legen Sie nun im Verzeichnis c:\JavaProjekte\WEB-INF den Deployment Descriptor web.xml mit folgendem Inhalt an:

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">

<servlet>
<servlet-name>HelloWorld</servlet-name>
<servlet-class>HelloWorld</servlet-class>
</servlet>


<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/HelloWorld</url-pattern>
</servlet-mapping>

</web-app>

Als letztes erstellen Sie eine WAR-Datei ihres Miniprojekts mit

jar c -f HelloWorld.war WEB-INF

Kopieren Sie diese WAR-Datei in das Verzeichnis %AppServerHome%\domains\domain1\autodeploy und starten Sie den Application Server. Das Ergebnis sollte jetzt mit einem Browser unter http://localhost:8080/HelloWorld/HelloWorld (bzw. http://127.0.0.1:8080/HelloWorld/HelloWorld) sichtbar sein, vgl. Abbildung 2.



Abbildung 2 Das klassische Hello World Beispiel



Weitere Hinweise

Mögliche Probleme beim Undeployment / Redeployment

Update: Das im Folgenden beschriebene Problem sollte mit aktuellen Versionen des Sun Application Servers (Version 9.0 Update 2 oder neuer) nicht mehr auftreten, jedoch kann es nach wie vor passieren, dass "Relikte" beim Undeployment zurückbleiben, die notfalls wie unten beschrieben gefunden und gelöscht werden können.

Das Undeployment, also die Deinstallation einer Web- oder Enterprise-Applikation vom Application Server, die Sie z.B. durch das Entfernen der war- bzw. ear-Datei aus dem autodeploy-Verzeichnis auslösen können, funktioniert leider nicht immer. Gerade bei Struts-Applikationen ergibt sich oft folgendes Problem:

Der Application Server kann mitunter einige Dateien nicht löschen, da diese von einem Prozess noch blockiert werden.

Das passiert zumindest unter Windows z.B. oft mit Struts-Libraries, die in der Webapplikation eingebunden sind. Ob das Problem auch unter Linux auftritt, haben wir nicht getestet.

Um dieses Problem beim Sun Application Server zu beheben, ist nach dem (unvollständigen) Undeployment der Application Server herunterzufahren und dann das Verzeichnis mit den Resten der Applikation zu löschen (im Verzeichnis domains/domain1/applications/j2ee-apps für Enterprise Applications bzw. domains/domain1/applications/j2ee-modules für einzeln installierte Module wie z.B. reine Webapplikationen, die als WAR deployed wurden).

Das Problem betrifft auch das Redeployment (Aktualisieren einer Applikation), da dies einem Undeployment gefolgt von einem neuen Deployment gleichkommt. Ist das Undeployment aufgrund obigen Problems unvollständig, wird das anschließende Deployment fehlschlagen.
In diesem Fall ist zunächst ein Undeployment auszulösen, der Server herunterzufahren, die Relikte zu löschen, der Server neu hochzufahren und die Applikation dann neu zu deployen.

Während es für den Tomcat Web Container einen Workaround gab, indem eine serverspezifische Konfigurationsdatei im META-INF-Verzeichnis des WAR-Archivs abgelegt wurde, die eine Sperrung der Dateien vermied, ist uns leider für den Sun Application Server derzeit keine vergleichbare Lösung bekannt.


Copyright © 2007 FernUniversität in Hagen Stand: 27.11.2007, Autor: Markus Muckhoff, Update: Immo Schulz-Gerlach