JSP: Tomcat und Java von CD starten

+ andere TechDocs
+ JSP
+


Auch auf Rechnern, auf denen kein Java, keine JSP-Engine und kein Webserver installiert sind, können Java-Programme und JSP-Anwendungen von CD-ROM gestartet werden.

Der Anwender braucht nichts zu installieren. Wenn die CD eingelegt wird, startet automatisch der Webserver von CD und es wird die erste Startseite von der CD im Webbrowser geöffnet.

Die Webapplikation (JSP-Anwendung) kann sowohl lokal auch auch vernetzt (LAN oder Internet) eingesetzt werden.

Im Folgenden wird die Vorgehensweise zur Erstellung einer solchen CD für Windows und den Tomcat-Webserver beschrieben.



Inhalt

  1. Installation auf der Festplatte
    1. Voraussetzungen
    2. CD-Verzeichnisstruktur
    3. Java 1.4 installieren
    4. Tomcat 4.0 installieren
    5. Tools
    6. Batchdateien
    7. Bemerkungen zu den Batchdateien
  2. Anpassen der JSP-Sourcen
  3. Erstellen der CD-ROM


Installation auf der Festplatte


Voraussetzungen

Der Computer muss folgende Voraussetzungen erfüllen:

Auch Linux und andere Java-1.4-fähige Betriebssysteme kommen in Frage. Allerdings ist die Installationsprozedur etwas anders.


CD-Verzeichnisstruktur

In der Root der CD werden im folgenden Beispiel drei Verzeichnisse und drei Dateien angelegt:


CD-Root:
  ¤Java  (Java-Verzeichnis)
  ¤Tomcat  (Tomcat-Verzeichnis)
  ¤Tools  (Tools-Verzeichnis)
  Autorun.inf  (automatischer CD-Start)
  StartUnderWindows.bat  (manueller Start)
  StopUnderWindows.bat  (Beenden)

Vorläufig wird diese Struktur noch nicht auf CD, sondern auf der Festplatte erzeugt. Da in den Batchdateien nur relative Pfade verwendet werden, kann als Root-Pfad ein beliebiges Verzeichnis auf der Festplatte verwendet werden, zum Beispiel: 'd:\Tomcat-von-CD'. Unter alten Windows-Versionen (z.B. Windows 98) darf der Verzeichnisname keine Leerzeichen enthalten und nicht länger als acht Zeichen sein, erlaubt wäre zum Beispiel: 'd:\TomcatCD'


Java 1.4 installieren

In das Java-Verzeichnis für die CD (vorläufig auf der Festplatte z.B. 'd:\Tomcat-von-CD\Java') werden einfach alle Dateien einer normalen Installation einer aktuellen Java Standard Edition (J2SE) kopiert.

Zwei Möglichkeiten gibt es:
Sie können nur ein Java Runtime Environment (JRE) installieren (z.B. die Datei 'j2re-1_4_1_01-windows-i586-i.exe', 10 MByte).
Oder Sie installieren ein komplettes Java Software Development Kit (SDK) (z.B. die Datei 'j2sdk-1_4_1_01-windows-i586.exe', 37 MByte).

Auf der CD reichen die Dateien des JREs. Auf der Festplatte ist es in der Regel sinnvoller, das komplette J2SE-SDK zu installieren, da Sie nur damit Java-Sourcen kompilieren können, was auch beim erstmaligen Aufruf von JSP-Seiten erfolgen muss.

Installieren Sie für unser Beispiel das SDK. Sie erhalten es von: http://java.sun.com/j2se/1.4/. Zur Installation genügt einfaches Starten der .exe-Datei. Weitere Hinweise zur Installation finden Sie unter: java-install.htm#InstallationUnterWindows.

Anschließend kopieren Sie alle Dateien inklusive aller Unterverzeichnisse aus dem Java-Installationsverzeichnis (z.B. 'c:\Programme\j2sdk-1_4_1_01') in das für die CD-Zusammenstellung vorgesehene Java-Verzeichnis 'd:\Tomcat-von-CD\Java'.

Wenn Sie wollen, können Sie anschließend das im Windows installierte Java wieder deinstallieren, zum Beispiel unter Windows XP über: 'Start' | 'Systemsteuerung' | 'Software' | 'Java' | 'Entfernen'.


Tomcat 4.0 installieren

Auch für Tomcat werden in das Tomcat-Verzeichnis für die CD (vorläufig 'd:\Tomcat-von-CD\Tomcat') einfach alle Dateien einer normalen Tomcat-Installation kopiert.

Auch hier gibt es wieder unterschiedliche Installationsdateien:
- Aktuelle Versionen, zum Beispiel Tomcat 4.1.18 ('jakarta-tomcat-4.1.18...'),
- Tomcat 4.0.6 für Java 1.4, als .exe ('jakarta-tomcat-4.0.6-LE-jdk14.exe'),
- Tomcat 4.0.6 für Java 1.4, als .zip ('jakarta-tomcat-4.0.6-LE-jdk14.zip'),
- Tomcat 4.0.6 für Java 1.3 ('jakarta-tomcat-4.0.6.exe /.zip')

Bei anderen Versionen als Tomcat 4.0.6 muss genau geprüft werden, ob sie für den Betrieb von CD-ROM geeignet sind. Mit der Version Tomcat 4.1.18 gibt es folgende Probleme:
1.) Den Tomcat-4.1.18-Batchdateien zum Starten und Beenden genügt nicht das JRE, sondern es wird das SDK erwartet. 'd:\Tomcat-von-CD\Tomcat\bin\setclasspath.bat' enthält die Checks:
if not exist "%JAVA_HOME%\bin\jdb.exe" goto noJavaHome
if not exist "%JAVA_HOME%\bin\javac.exe" goto noJavaHome

2.) Tomcat 4.1.18 benötigt Schreibrechte im Verzeichnis 'd:\Tomcat-von-CD\Tomcat\conf\', um dort die Datei 'tomcat-users.xml.new' anzulegen. Funktioniert dies nicht (z.B. wegen CD-ROM), wird abgebrochen mit der Fehlermeldung:
GlobalResourcesLifecycleListener:
Exception processing Global JNDI Resources javax.naming.NamingException:
...\Tomcat\conf\tomcat-users.xml.new (Zugriff verweigert)

Tomcat 4.0.6 ohne den Zusatz 'LE-jdk14' ist für ältere Java-Versionen, die weniger Module enthalten. Mit Java 1.4 sollte die abgespeckte und angepasste Tomcat-Version mit dem Zusatz 'LE-jdk14' verwendet werden.

Tomcat 4.0.6-LE-jdk14 als .exe-Datei ('jakarta-tomcat-4.0.6-LE-jdk14.exe') enthält ein kleines Installationsprogramm, welches hier keinen Sinn macht.

Tomcat 4.0.6-LE-jdk14 als .zip-Datei ('jakarta-tomcat-4.0.6-LE-jdk14.zip') ist für unsere Zwecke die geeigneteste Version. Downloaden Sie sie von http://jakarta.apache.org/builds/jakarta-tomcat-4.0/release/v4.0.6/bin/ und entzippen Sie die Datei in das Verzeichnis 'd:\Tomcat-von-CD'. Umbenennen Sie das entstandene Verzeichnis 'd:\Tomcat-von-CD\jakarta-tomcat-4.0.6-LE-jdk14' zu 'd:\Tomcat-von-CD\Tomcat'. Weitere Hinweise zur Tomcat-Installation finden Sie unter: jsp-install.htm#InstallationUnterWindows.


Tools

Die folgenden Batchdateien verwenden folgende Tools im Verzeichnis 'd:\Tomcat-von-CD\Tools':


Tools:
  Choice.com  (Pause von 10 Sekunden)
  GrabURL.exe  (prüft Tomcat-Bereitschaft)
  SetEnvVar.txt  (Hilfsdatei für aktuellen Pfad)

Damit die Batchdateien aus beliebigen Rootverzeichnissen heraus gestartet werden können, dürfen nur relative Verzeichnisbezüge verwendet werden. Um in den von Java und Tomcat erwarteten Environmentvariablen 'JAVA_HOME' und 'CATALINA_HOME' für deren Rootverzeichnisse absolute Pfade setzen zu können, muss der aktuelle Pfad der Programme auf der CD ermittelt werden.

Dazu wird die besondere Hilfsdatei 'SetEnvVar.txt' benötigt mit folgendem Inhalt:

set %1=

Das Besondere an dieser Datei ist, dass sie kein abschließendes Carriage Return oder Linefeed (CR/LF) enthalten darf. Viele Texteditoren fügen diese Zeilenendezeichen automatisch an. Am einfachsten erzeugen Sie diese Datei deshalb im Kommandozeilenfenster mit:

copy con SetEnvVar.txt
set %1=^Z

Beenden Sie die beiden Zeilen mit der 'Enter'-Taste. Für '^Z' benutzen Sie bitte nicht die '^'-Taste, sondern betätigen 'Strg+Z'. Kontrollieren Sie im Windows-Explorer mit der rechten Maustaste unter Eigenschaften, dass die Datei wirklich nur sieben Bytes groß ist.

Zwei weitere Tools sind nicht unbedingt notwendig, aber empfehlenswert. Sie dienen nur dazu, abzuwarten, bis Tomcat fertig gestartet ist, um dann direkt die Startseite aufrufen zu können. Fehlen Ihnen diese Tools, können Sie vorläufig einfach in der weiter unten präsentierten Datei 'StartTomcat.bat' die unteren Zeilen hinter 'call %CATALINA_HOME%\bin\startup.bat' weglassen.

Benötigt wird ein Tool, um eine Pause von 10 Sekunden einzulegen. In den folgenden Batchdateien wird hierfür das in einigen Windows-Versionen im Verzeichnis 'c:\Windows\Command' enthaltene 'Choice.com' eingesetzt. Da diese Datei nicht in allen Windows-Versionen enthalten ist, sollten Sie sie auf der CD mitliefern. Falls sie auch in Ihrer Windows-Version nicht enthalten ist, kopieren Sie sie von einem anderen Rechner mit einer anderen Windows-Version. Finden Sie kein 'Choice.com'-Tool, verwenden Sie ein anderes 'Sleep'- oder 'Delay'-Tool. Notfalls können Sie auch das 'Ping'-Kommando missbrauchen. Folgendes Kommando wartet auch etwa zehn Sekunden:
Ping -n 11 127.0.0.1 >nul

Um die Bereitschaft des Tomcat-Webservers zu überprüfen, wird das Tool 'GrabURL.exe' eingesetzt, welches Sie frei aus dem Internet downloaden können. Verwenden Sie eine Version, die geeignete DOS-Errorlevel returniert.


Batchdateien

Im Verzeichnis 'd:\Tomcat-von-CD' werden folgende drei ASCII-Textdateien erzeugt:

Autorun.inf:

[autorun]
OPEN=StartUnderWindows.bat

StartUnderWindows.bat:

if not "%COMSPEC%"=="" goto usecomspec
pause "The environment variable COMSPEC isn't set properly!"
exit
:usecomspec
cd Tools
start /min %COMSPEC% /E:4096 /C StartTomcat.bat

StopUnderWindows.bat:

if not "%COMSPEC%"=="" goto usecomspec
pause "The environment variable COMSPEC isn't set properly!"
exit
:usecomspec
cd Tools
start /min %COMSPEC% /E:4096 /C StopTomcat.bat

Die Datei 'Autorun.inf' sorgt für einen automatischen Start beim Einlegen der CD.

Die Datei 'StartUnderWindows.bat' erfüllt zwei Zwecke: Zum einen kann sie ausgeführt werden, falls der automatische Start beim CD-Einlegen abgeschaltet ist. Zum anderen ist sie unter den alten Windows-Versionen (z.B. Windows 98) wichtig, um den Speicherplatz für die Environment-Settings zu vergrößern.

Mit 'StopUnderWindows.bat' kann der Tomcat-Webserver geordnet beendet werden.


Im Verzeichnis 'd:\Tomcat-von-CD\Tools' werden folgende Batchdateien erzeugt. Dabei müssen Sie statt 'http://localhost:8080/MyWebAppl/MyStartPage.jsp' natürlich an beiden Stellen die korrekte Portnummer und den Pfad zu Ihrer Webapplikation eintragen.

StartTomcat.bat:

rem -------- Check 'Temp' environment setting --------
if "%Temp%" == "" goto TempErr
if exist %Temp%\NUL goto TempOk
:TempErr
set Temp=C:\Temp
md %Temp%
if exist %Temp%\NUL goto TempOk
pause Error with 'Temp' environment setting!
exit
:TempOk

rem -------- Store programm root path in environment variable --------
cd > %Temp%\__Tmp__.txt
copy ..\Tools\SetEnvVar.txt + %Temp%\__Tmp__.txt %Temp%\__Tmp__.bat > nul
call %Temp%\__Tmp__.bat __ActToolRootPath__
del %Temp%\__Tmp__.txt
del %Temp%\__Tmp__.bat
if exist %__ActToolRootPath__%\NUL goto PathOk
pause Error with retrieving the actual program root path (%__ActToolRootPath__%)!
exit
:PathOk

rem -------- Start Tomcat --------
set CLASSPATH=
set JAVA_HOME=%__ActToolRootPath__%\..\Java
set CATALINA_HOME=%__ActToolRootPath__%\..\Tomcat
call %CATALINA_HOME%\bin\startup.bat

rem -------- Wait until Tomcat is ready started --------
set __counter__=
:LoopLabel
@..\Tools\Choice.com /c:. /t:.,10 /n Pausing for 10 seconds
..\Tools\GrabUrl.exe -h http://localhost:8080/MyWebAppl/MyStartPage.jsp > NUL
if not errorlevel 1 goto TomcatReady
set __counter__=%__counter__%.
if not "%__counter__%" == "........................" goto LoopLabel
:TomcatReady
set __counter__=

rem -------- Start web browser with start page --------
start /min http://localhost:8080/MyWebAppl/MyStartPage.jsp

StopTomcat.bat:

rem -------- Store programm root path in environment variable --------
cd > %Temp%\__Tmp__.txt
copy ..\Tools\SetEnvVar.txt + %Temp%\__Tmp__.txt %Temp%\__Tmp__.bat > nul
call %Temp%\__Tmp__.bat __ActToolRootPath__
del %Temp%\__Tmp__.txt
del %Temp%\__Tmp__.bat
if exist %__ActToolRootPath__%\NUL goto PathOk
pause Error with retrieving the actual program root path (%__ActToolRootPath__%)!
exit
:PathOk

rem -------- Stop Tomcat --------
set CLASSPATH=
set JAVA_HOME=%__ActToolRootPath__%\..\Java
set CATALINA_HOME=%__ActToolRootPath__%\..\Tomcat
call %CATALINA_HOME%\bin\shutdown.bat

Bemerkungen zu den Batchdateien

start /min %COMSPEC% /E:4096 /C StartTomcat.bat

'/min' startet das Kommandozeilenfenster minimiert.
'%COMSPEC%' verweist je nach Windows-Version auf 'Command.com' oder 'Cmd.exe' (inkl. Pfad).
'/E:4096' definiert die Speicherplatzgröße für die Environment-Settings (bei den alten Windows-Versionen).

if exist %Temp%\NUL goto TempOk
if exist %__ActToolRootPath__%\NUL goto PathOk

Mit '<Pfad>\NUL' kann die Existenz eines Verzeichnisses überprüft werden.

cd > %Temp%\__Tmp__.txt
copy ..\Tools\SetEnvVar.txt + %Temp%\__Tmp__.txt %Temp%\__Tmp__.bat > nul
call %Temp%\__Tmp__.bat __ActToolRootPath__

Diese drei Zeilen speichern den aktuellen Pfad in die Umgebungsvariable '__ActToolRootPath__'.
'cd > __Tmp__.txt' kopiert den aktuellen Pfad vorläufig in die Datei '__Tmp__.txt'.
'copy SetEnvVar.txt + __Tmp__.txt __Tmp__.bat' kopiert 'set %1=' zusammen mit dem aktuellen Pfad in die Batchdatei '__Tmp__.bat'.
'call __Tmp__.bat __ActToolRootPath__' ruft dann diese Batchdatei mit dem Parameter '__ActToolRootPath__' als Namen der Environmentvariablen auf, wodurch die Environmentvariable gesetzt wird.
Das resultierende Kommando in der Batchdatei kann zum Beispiel lauten:

set __ActToolRootPath__=e:\Tools

Beachtet werden muss, dass der resultierende aktuelle Pfad mal mit und mal ohne abschließenden Backslash erzeugt wird: Das Rootverzeichnis eines Laufwerks wird mit abschließendem Backslash erzeugt, zum Beispiel 'c:\', aber Unterverzeichnisse ohne, zum Beispiel 'c:\MeinPfad'.

set JAVA_HOME=%__ActToolRootPath__%\..\Java
set CATALINA_HOME=%__ActToolRootPath__%\..\Tomcat

Da die Batchdateien aus dem Unterverzeichnis 'Tools' gestartet werden, ist sichergestellt, dass der gemeldete aktuelle Pfad in '__ActToolRootPath__' stets einen abschließenden Backslash enthält. Allerdings muss jetzt mit '\..\' auf die nächsthöhere Ebene zurückverwiesen werden.

..\Tools\Choice.com /c:. /t:.,10 /n Pausing for 10 seconds

Dieses Kommando legt eine Wartepause von 10 Sekunden ein.

..\Tools\GrabUrl.exe -h http://localhost:8080/MyWebAppl/MyStartPage.jsp > NUL

Über den Errorlevel von 'GrabUrl.exe' wird getestet, ob der Tomcat-Webserver fertig hochgefahren ist.

set __counter__=%__counter__%.
if not "%__counter__%" == "........................" goto LoopLabel

Die erste Zeile verlängert in jedem Schleifendurchlauf den Textstring '__counter__' um ein '.'-Zeichen.
Die zweite Zeile prüft, ob der Textstring '__counter__' die maximale Länge erreicht hat.



Anpassen der JSP-Sourcen

Wenn Ihre JSP-Applikation Daten auf die Festplatte speichern soll, sollten Sie keine festen Pfade einprogrammieren, sondern sich ein Unterverzeichnis im User-Home-Verzeichnis erstellen und darunter Ihre Daten ablegen.

Benutzen Sie folgende Vorgaben, damit Ihr Programm unter allen Betriebssystemen korrekt funktioniert:

String sPathUserHome  = System.getProperty( "user.home" );
String sFileSeparator = File.separator;    // '\' oder '/'


Erstellen der CD-ROM

  1. Konfigurieren Sie eine Portnummer, die sehr wahrscheinlich noch nicht durch andere Applikationen besetzt ist. 80 und 8080 sind sehr häufig belegt, es sollte deshalb eine andere gewählt werden wie beschrieben ist unter: jsp-install.htm#InstallationUnterWindows.
  2. Testen Sie die Installation auf der Festplatte durch Aufruf der Batchdatei 'd:\Tomcat-von-CD\StartUnderWindows.bat'.
  3. Stellen Sie sicher, dass Sie wirklich jede JSP-Seite aufgerufen haben. Jede JSP-Seite muss einmal gestartet worden sein, da sie beim erstmaligen Aufruf kompiliert wird, was später auf der CD nicht mehr möglich ist.
  4. Löschen Sie alle Dateien im Verzeichnis 'd:\Tomcat-von-CD\Tomcat\logs'.
  5. Brennen Sie alle Dateien und Verzeichnisse unterhalb von 'd:\Tomcat-von-CD' auf eine CD-R (oder zum Testen auf eine CD-RW). Die Datei 'Autorun.inf' muss sich anschließend in der Root der CD befinden.
  6. Öffnen Sie den CD-Laufwerksschacht und schließen Sie ihn wieder. Die CD muss automatisch starten. Auf sehr langsamen Rechnern oder CD-ROM-Laufwerken kann der Startvorgang mehrere Minuten dauern.
  7. Prüfen Sie, ob wirklich alle JSP-Seiten funktionieren.
  8. Falls Sie JSP-Seiten haben, die Daten auf der Festplatte speichern oder Datenbankanwendungen nutzen: Prüfen Sie diese Funktionalität.
  9. Weisen Sie den Benutzer an, den Webserver mit der Batchdatei 'StopUnderWindows.bat' herunterzufahren.
  10. Testen Sie die CD mit verschiedenen Windows-Versionen (Windows 98, Me, 2000, XP).
  11. Sie können natürlich auch die gesamte CD wieder auf eine Festplatte kopieren (wodurch der Tomcat-Start beschleunigt wird). Dabei können Sie ein beliebiges Unterverzeichnis auf der Festplatte wählen. Ausnahme: Bei alten Windows-Versionen (z.B. Windows 98) sollten Sie den CD-Inhalt nicht auf den Windows-Desktop oder in ein Verzeichnis unterhalb von c:\Windows kopieren und die Bestandteile des Pfades dürfen keine Leerzeichen enthalten und nicht länger als acht Zeichen sein.
  12. Um die Wartezeit beim Starten des Tomcat-Webservers zu überbrücken, können Sie parallel ein anderes Dokument präsentieren. Um ein Dokument (z.B. eine HTML-Seite oder einen AVI-Film) auf dem Clientrechner mit dem damit verknüpften Anwendungsprogramm (z.B. Webbrowser oder Mediaplayer) zu starten, sollten Sie nicht 'Start ...' benutzen, da dies nicht unter allen Windows-Versionen funktioniert. Benutzen Sie stattdessen das Hilfsprogramm 'ShelExec.exe' (z.B. 'ShelExec.exe MeinVorspann.htm' oder 'ShelExec.exe c:\Windows\clock.avi'). Sie finden 'ShelExec.exe' entweder mit Google oder unter http://www.naughter.com/shelexec.html.



Weitere Themen: andere TechDocs | JSP | SQL | Webanwendungen
© 1998-2007 Torsten Horn, Aachen