![]() |
Wintersemester 2006/2007 | FernUniversität
Hagen Fakultät für Mathematik und Informatik |
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.
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.
Abbildung 1 Die Application Server-Startseite
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. |
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. |
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 |
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
Das Undeployment, also die Deinstallation einer Web- oder Enterprise-Applikation vom Application Server, die Sie z.B. durch das Entfernen der 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 © 1997-2006 FernUniversität in Hagen |