jsp-develop.de presents:

WEB-Archive

von shark,  25.08.2001 19:57:59

Servlets und JSP-Seiten passen bezüglich der Namensgebung nicht hundertprozentig zusammen. Wenn man ein Servlet ansprechen möchte gibt man das Präfix "/servlet/" an. Wenn das Servlet eine JSP-Seite aufruft, ist es nötig den kompletten Pfadnamen der JSP-Seite zu definieren. Ändern sich Verzeichnisstrukturen, müssen entsprechend alle Servlets und JSP-Seiten per Hand angepasst werden.

Damit man WEB-Anwendungen pfadunabhängig installieren kann, bietet es sich an die Servlets, JSP-Seiten und Java Beans zu bündeln. Das Bündel nennt man WEB-Archiv ("filename.war"). WEB-Archive können sehr einfach auf einem WEB-Server installiert ("deployment") werden.

Das nachfolgende Beispiel zeigt wie ein WEB-Archiv aufgebaut ist und wie man das WEB-Archiv erzeugt.

Beispiel Servlet (Dispatcher):
------------------------------------------

package jsp.war.example;

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

public class WarServlet extends HttpServlet
{
  public void service( HttpServletRequest  request,
                      HttpServletResponse response
                    )
  {
    // Aufruf der JSP-Seite

    // Erzeuge Request Dispatcher
    RequestDispatcher oDispatcher = getServletContext().getRequestDispatcher("/WarJsp.jsp");
   
    // Fuehre den Aufruf durch
    oDispatcher.forward(request, response);   
  }
}

Beispiel fuer die JSP-Seite ("WarJsp.jsp"):
-------------------------------------------------------------

<html>
<body>
<h1>Hallo ich bin im WEB-Archiv!</h1>
</body>
</html>

Beispiel des Deployment Descriptors (web.xml):
----------------------------------------------------------------------

<!DOCTYPE web-app PUBLIC ".//Sun Microsystems, Inc.//DTD Web Application2.2//EN"
"http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">

<web-app>

  <display-name>WARBeispiel</display-name>
  <description>Beispiel WEB-Archive</description>

  <servlet>
    <servlet-name>WarServlet</servlet-name>
    <servlet-class>jsp.war.example.WarServlet</servlet-class>
  </servlet> 

  <servlet-mapping>
    <servlet-name>WarServlet</servlet-name>
    <url-pattern>/WarServlet</url-pattern>
  </servlet-mapping>
</web-app>

Die "web.xml" Datei weist dem Servlet einem Namen zu und führt auch das URL-Mapping durch. Das Mapping ist relativ zu dem Basispfad der installierten Applikation.

Für das Erzeugen des WEB-Archives muss die Datei "web.xml" in dem Verzeichnis WEB-INF vorliegen. Die Klassendateien (Java Beans und Servlets) der Anwendung werden in einem "classes" Verzeichnis unterhalb des WEB-INF Verzeichnisses untergebracht. Die JSP-Seite und die Datei "web.xml" müssen im selben Verzeichnis liegen.

Vor dem Erzeugen des Archives sollte man folgendes tun:
-----------------------------------------------------------------------------------

mkdir WEB-INF
copy web.xml WEB-INF
mkdir WEB-INF\classes


Danach kompiliert man die Java Klassen:
------------------------------------------------------------

javac -d WEB-INF\classes WarServlet.java

Das WEB-Archiv wird folgendermaßen erzeugt:
--------------------------------------------------------------------

jar cvf example.war *.jsp WEB-INF

Tomcat entpackt und konfiguriert die WEB Anwendung automatisch, wenn man das WEB-Archiv ("war file") in das "webapps" Verzeichnis von Tomcat kopiert. Der Pfad der von Tomcat für die WEB-Anwendung angelegt wird, entspricht dem Archiv-Namen. In unserem Beispiel ist das der Name "example".

Die Servlet Engine JRun von Allaire verfügt über ein Werkzeug für die Installation des WEB-Archives. Man startet die JRun Management Konsole und schaltet den Dialog "Deploy a Web Application" auf. Innerhalb des Dialoges können Parameter wie der Name des WEB-Archives, den Hostnamen, den JRun Server, die "Application URL" und das "Deploy" Verzeichnis definiert werden.

WEB-Archive sind ein nützliches Hilfsmittel zum Strukturieren von komplexen WEB-Anwendungen. WEB-Archive bieten außerdem auch die Möglichkeit, Anwendungen leicht in einem Paket auf verschiedene WEB-Server verteilen zu können.
URL dieses Beitrags:
http://www.jsp-develop.de/forumbeitrag/view/174/