Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

web.xml pfadangabe

9 views
Skip to first unread message

Martin Müßler

unread,
Nov 13, 2001, 10:01:06 AM11/13/01
to
Hallo,
ich habe folgendes Problem, unter Windows habe ich eine Webapplikation unter
Tomcat-4.0.1 am Laufen. Im web.xml file der Applikation habe ich folgende
Angabe drinstehen

<init-param>
<param-name>confFile</param-name>
<param-value>G:\Eigene Dateien\myapp\conf\xyz.conf</param-value>
</init-param>

Jetzt möchte ich das ganze auch unter Linux zum laufen bringen, dazu habe
ich natürlich die web.xml wie folgt abgeändert.

<init-param>
<param-name>confFile</param-name>

<param-value>/opt/jakarta-tomcat-4.0.1/webapp/myapp/conf/xyz.conf</param-val
ue>
</init-param>

Tomcat liefert mir jetzt folgende Exception:
javax.servlet.ServletException: Path does not start with a "/"
character

Weiss jemand was ich da machen muss? Kennt jemand eine Möglichkeit, relative
Pfadangaben anzugeben.
Gruss Martin

Manfred Schenk

unread,
Nov 13, 2001, 10:18:48 AM11/13/01
to
"Martin Müßler" <in...@maisy.de> wrote:

[...]

> <init-param>
> <param-name>confFile</param-name>

> <param-value>/opt/jakarta-tomcat-4.0.1/webapp/myapp/conf/xyz.conf</param-val
> ue>
> </init-param>

> Tomcat liefert mir jetzt folgende Exception:
> javax.servlet.ServletException: Path does not start with a "/"
> character

Bist du dir sicher, dass vor dem "/" kein anderes (evtl. unsichtbares
Zeichen) in der web.xml steht. Wenn man Codeschnipsel aus Webbrowsern
kopiert hat man oft ein paar &nbsp;(nonbreakspace) im Code, die in vielen Editoren nicht
auffallen, aber compiler und parser zum meckern bringen.

> Weiss jemand was ich da machen muss? Kennt jemand eine Möglichkeit, relative
> Pfadangaben anzugeben.
> Gruss Martin


tschuess,
Manfred

--

| Manfred Schenk | born between RFC638 and RFC640
| |
| | WWW: http://www.ZEROByte.de/

Martin Müßler

unread,
Nov 13, 2001, 10:52:16 AM11/13/01
to
Hallo,
wie erkenne ich das mit den versteckten Zeichen? Habe die web.xml Datei von
meinem Windows Rechner auf den Linux Rechner kopiert und mit dem vi dann
bearbeitet. Dürfte doch dann OK sein, oder?
Gruss Martin

Manfred Schenk

unread,
Nov 13, 2001, 12:31:32 PM11/13/01
to

a) Datei mit einem Hexeditor oder aehnlichem anschauen
b) sichtbare Zeichen zaehlen und mit angegebener Zeichenzahl vergleichen,
ACHTUNG hier auf Zeilenendezeichen aufpassen!

c) Manche Editoren koennen solche Sonderzeichen markieren

d) eigenes Programm schreiben, welches die Datei einliest und die
entsprechenden Unicode-Codes der Zeichen ausgibt und dann nachschauen, ob
evtl. ein paar Zeichen "zuviel" da sind

Tobias Trelle

unread,
Nov 14, 2001, 3:59:46 AM11/14/01
to
"Martin Müßler" <in...@maisy.de> schrieb ...

> <init-param>
> <param-name>confFile</param-name>
> <param-value>G:\Eigene Dateien\myapp\conf\xyz.conf</param-value>
> </init-param>

Absolute Pfadangaben sind pfui! Nein ... oberpfui ;-)

> Weiss jemand was ich da machen muss? Kennt jemand eine Möglichkeit,
> relative Pfadangaben anzugeben.

Ja:

<init-param>
<param-name>confFile</param-name>
<param-value>conf/xyz.conf</param-value>
</init-param>

conf/xyz.conf muss sich dann lediglich unterhalb des CLASSPATH
befinden. Das hat u.a. den angenehmen Vorteil, dass man beim Wechsel
des OS nichts ändern muss.

HTH
--
Tobias Trelle
adesso AG
www.adesso.de


Martin Müßler

unread,
Nov 14, 2001, 4:24:02 AM11/14/01
to
Danke für den Hinweis. Hab es jetzt hinbekommen mit der relativen
Pfadangabe.
Wusste nur nicht wie und wo ich den CLASSPATH setze, oder ob ich das
überhaupt machen muss! Hab jetzt meine Angabe relativ zum WEB-INF
Verzeichnis gesetzt. Die Fehlermeldung, aus meinem ersten Posting rührte
auch nicht von der fehlenden xyz.conf Datei.
Bekomme diese Fehlermeldung und die bezieht sich ja gar nicht auf mein conf
File, wie ich jetzt erst bemerke...

java.lang.IllegalArgumentException: Path does not start with a "/"
character
at
org.apache.catalina.core.ApplicationContext.getRequestDispatcher(Application
Context.java:570)
at
org.apache.catalina.core.ApplicationContextFacade.getRequestDispatcher(Appli
cationContextFacade.java:174)

Gruss Martin


Martin Erren

unread,
Nov 14, 2001, 6:03:27 AM11/14/01
to
"Martin Müßler" schrieb


Richtig. offenbar liest Du diesen Parameter als normalen String ein,
was Du aber damit machst, ist einen RequestDispatcher damit starten zu wollen.
Der akzeptiert *nur* Kontext-Paths, und die müssen mit / beginnen, z.B. /examples
(der eigentliche Pfad kann ruhig absolut sein, wird aber woanders eingestellt,
in der server.xml mit <Context docBase="...">)

Dann kansst Du mit ServletContext#getRealPath() eine absolute
Addressierung erreichen.

> Gruss Martin
dito.

--
You instanciate a class derived from abstract gun, which implements
the shoot producer interface, another from abstract foot - it must
implement the shoot consumer interface - and add the consumer to
the producer and invoke the shooting method of the gun.


Martin Müßler

unread,
Nov 14, 2001, 8:30:30 AM11/14/01
to
Komisch ist nur, dass er mir die Fehlermeldung unter dem Tomcat-4.0.1 unter
Windows2000 nicht bringt. Und da kopiere ich auch nur die .war Datei ins
webapps Verzeichnis. Debuggen kann ich das ganze Zeug auch nicht auf meinem
Linux Rechner, da dieser nicht so gut bestückt ist und der JBuilder da nicht
anständig läuft.
gruss martin


Martin Müßler

unread,
Nov 16, 2001, 5:36:38 AM11/16/01
to
Habe das mit den relativen Pfadangaben wieder aufgegeben? Es ist doch
normalerweise so, das im webapps Verzeichnis die Webapplikation liegt und
das ist meine document root. Darin liegen meine html und jsp Seiten und im
WEB-INF Verzeichnis existiert dann die web.xml Datei und das Verzeichnis
classes und lib. In classes liegen meine Java .class Dateien und in lib mein
jdbc mysql Treiber. Einen CLASSPATH setze ich aber gar nicht, muss ich das
machen für den Tomcat?
Gruss Martin

Martin Erren

unread,
Nov 16, 2001, 6:18:32 AM11/16/01
to
"Martin Müßler":

Ne, du has das sehr gut beschrieben. Wenn Du alle classes nach /WEB-INF/classes
und alle .jars nach /WEB-INF/lib/ spielst, werden die Klassen gefunden.

> Gruss Martin
dito.

--
Es existiert ein Interesse an der generellen Rezension der Applikation
relativ primitiver Methoden komplementaer zur Favorisierung adaequater
komplexer Algorithmen. (Warum einfach, wenn's auch kompliziert geht?)


Martin Müßler

unread,
Nov 16, 2001, 7:11:20 AM11/16/01
to
> Ne, du has das sehr gut beschrieben. Wenn Du alle classes nach
/WEB-INF/classes
> und alle .jars nach /WEB-INF/lib/ spielst, werden die Klassen gefunden.

Soweit so gut, aber wenn ich dann folgendes in der web.xml Datei realisieren
will:

<init-param>
<param-name>confFile</param-name>
<param-value>conf/xyz.conf</param-value>
</init-param>

Wo muss sich dann jetzt die xyz.conf Datei auf dem Tomcat-Server befinden?

Gruss Martin

Martin Erren

unread,
Nov 16, 2001, 7:23:51 AM11/16/01
to
"Martin Müßler":

das hängt jetzt davon ab, was Du mit dem String (und hier ist es nur ein
String) machst.

Für

String confFile = myServlet.getInitParameter("confFile");
myServlet.getServletContext().getRealPath(confFile);

ist das eine sehr gute Lösung.
(führender Slash muss sein: /conf/xyz.conf)

Einfach ausprobieren :-)

> Gruss Martin
dito.

0 new messages