# Tomcat - Dienst bricht bei Aufruf einer JSP-Datei ab



## KartoffelKiffer (26. Jan 2007)

Hallo,

bisher habe ich den Tomcat 5.5 immer über die Console der startup.bat gestartet. Dies wollte ich nun durch den Dienst ersetzen und habe die service.bat mit dem Parameter install aufgerufen. Er installiert den Tomcat auch als Dienst und er lässt sich auch problemlos starten.

Wenn ich jedoch eine JSP aufrufen möchte, geschieht ein paar Sekunden erst garnichts, bis der Tomcat-Dienst sich dann von alleine beendet. Ich kann ihn im Dienste-Manager dann wieder starten.

Zuvor hat über den Start der Console alles wunderbar funktioniert. Zwei Sachen fallen mir da spontan ein, weiß sie aber nicht so recht zuzuordnen: Zum Einen habe ich den Tomcat-Server auf Port 80 laufen, das habe ich in der server.xml geändert. Zum Anderen greift meine JSP auf Dateien in dem Tomcat-ROOT Verzechnis im webapps-Ordner zu.

Der angemeldete Beuntzer, der den Dienst startet ist bereits Administrator, kann es sein, dass es durch den Dateizugriff zu einer Exception im Tomcat führt?

Ich müsste das System als Dienst bis heute Abend laufen habe, daher bitte ich Euch mir mitzuteilen, wenn Euch etwas einfällt  :bahnhof: 




Mfg Tom


----------



## Anselmus (26. Jan 2007)

das problem ist wahrscheinlich folgendes:

wenn du tomcat vom bin verzeichnis aus startest sind alles pfadangaben die du machst relativ zum bin verzeichnis. wenn du denn tomcat als service startest sind alle pfade relativ zum c:\windows verzeichnis (oder irgendwas da in der nähe). ich nehme mal an deine webanwendung findet die datei nicht. hatte ich auch mal das problem...

--anselmus


----------



## KartoffelKiffer (26. Jan 2007)

Hi,

danke für die Hilfe. Habe nicht daran gedacht zu erwähnen, dass ich für den Fall mit Umgebungsvariablen arbeite. Es ist also alles relativ zum tomcat-Verzeichnis, welches in einer Umgebungsvariable steht. Ich arbeite also nicht vom bin-Verzeichnis ausgehend, sondern von variable/tomcat/webapps(...).

Die Umgebungsvariable ist die des Benutzervezeichnisses des Betriebssystems. Unter Linux heisst sie HOME und unter Windows HOMEPATH. Aufgrund dieser Tatsache setze ich auch meine Slashes, wenn Variable HOME gefunden, dann variable/tomcat/webapps/(...), wenn HOMEPATH gefunden, dann variable\tomcat\webapps(...), für Windows halt.

Die Windows-Ereignisanzeige spricht ebenfalls mit mir und wirft einen Fehler aus, wenn der Dienst beendet: "Ereignistyp:	Fehler
Ereignisquelle:	Service Control Manager
Ereigniskategorie:	Keine
Ereigniskennung:	7034
Datum:		26.01.2007
Zeit:		12:17:26
Benutzer:		Nicht zutreffend
Computer:	TDN-DESKTOP
Beschreibung:
Dienst "Apache Tomcat" wurde unerwartet beendet. Dies ist bereits 3 Mal passiert.

Weitere Informationen über die Hilfe- und Supportdienste erhalten Sie unter http://go.microsoft.com/fwlink/events.asp."

Auch wenn ich in dem Dienst unter "Anmelden" klicke, dann als Konto den Administrator auswähle, beendet der Dienst ohne Mucken.

Der Fehler besteht auf 2 Rechnern in unserem Hause, ich kann ihn an einer Windows2000-, wie auf einem XP-Rechner nachvollziehen.




Mfg Tom


----------



## Anselmus (26. Jan 2007)

hast du mal andere anwendungen probiert als deine?


----------



## KartoffelKiffer (26. Jan 2007)

Hi,

ist doch ein Fehler in der Hinsicht Verzeichnisse. Habe eine Log-Datei vom Tomcat gefunden, die mir sagt er findet das Verzeichnis C:\WINDOWS\System32\null\tomcat\(...) nicht.

Der Wert null resultiert sich aus meiner HOMEPATH-Variable, die (wenn ich die console öffne, und "set eingebe" gesetzt ist.

Kann ein Programm, durch einen Dienst gestartet denn keine Umgebungsvariablen laden? Und wie hast du es dann gelöst? Hast du dein Programm in den System32 (in meinem Falle) kopiert?




Mfg Tom


----------



## Anselmus (26. Jan 2007)

ich glaube die umgebungsvariable die tomcat standardmäßig benutzt heit CATALINA_HOME, allerdings hab ich mich noch nie damit auseinandergesetzt, wie man da in tomcat rankommt. wahrscheinlicht auch mit System.getProperties.

da ich in meinem fall allerdings nicht davon ausgehen kann, dass der benutzer CATALINA_HOME gesetzt hat, hab ich ne eigene klasse gemacht, die den absoluten pfad zum tomcat-verzeichnis (egal wo das ist) zurückliefert...


----------



## KartoffelKiffer (26. Jan 2007)

Hi,

aber wenn ich den Tomcat über die startup.bat starte, dann funktioniert doch auch alles. Ich habe eine Umgenungsvariable HOMEPATH unter Windows, die zum c:\Doku....\Benutzer\ führt. Ab diesem Pfad kann ich relativ arbeiten. Möchte ich zB zum ROOT-Verzeichnis in den webapps, so gebe ich ein: homepath + "tomcat/webapps/ROOT/".

Die LOG-Datei "stdout_20070126.log" sagt mir da aber etwas anderes, und zwar, dass er ab dem Verzeichnis C.\WINDOWS\System32 den Ordner null/tomcat/(...) haben möchte.

Zum Einen also, warum schreibt er, wenn ich den Tomcat als Dienst starte das C:\WINDOWS\System32 davor? Zum Anderen, warum ist die Umgebungsvariable auf einmal null??




Mfg Tom


----------



## KSG9|sebastian (26. Jan 2007)

Umgebungsvariablen die innerhalb der CMD gesetzt werden sind nur in der aktuellen CMD-Instanz vorhanden.
D.h.
SET blah = blub
startup.bat

Geht schonmal nicht, da die startup.bat die catalina.bat mit dem Parameter "run" aufruft, und zwar in nem neuen Fenster (start catalina.bat run). Wenn du also in der startup.bat Sachen setzt gehts nicht..zumindest bei mir nicht


----------



## Caffè Latte (26. Jan 2007)

Hi,

setz doch einfach beim Starten des Systems die Umgebungsvariablen JAVA_HOME und CATALINA_HOME. Das ist kein Sicherheitsrisiko.


----------

