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

Servlet-Anfaenger-Frage

0 views
Skip to first unread message

Wilfried Grupe

unread,
Dec 23, 2001, 9:41:12 AM12/23/01
to
Hallo Leute,


nun habe ich unter Einsatz von TOMCAT (servlet.jar)
das folgende Servlet kompiliert.
Wie bringe ich es dazu, im Browser (Internet Explorer)
die programmierten Informationen wachzurufen?


>java HelloClientServlet bringt micht nicht weiter ... :-)
http://localhost/java/HelloClientServlet ebensowenig.


Wo muss ich was konfigurieren?


1000 Dank im voraus!


Gruss
Willy


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


public class HelloClientServlet extends HttpServlet
{
protected void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
res.setContentType("text/html");
PrintWriter out = res.getWriter();
out.println("<HTML><HEAD><TITLE>Hello Client!</TITLE>"+
"</HEAD><BODY>Hello Client!</BODY></HTML>");
out.close();
}
public String getServletInfo()
{
return "Hi ich bin dein Server ";
}
}
--
__________________________________________________________
News suchen, lesen, schreiben mit http://newsgroups.web.de

Marcel Stoer

unread,
Dec 23, 2001, 11:29:39 AM12/23/01
to

"Wilfried Grupe" <wgr...@web.de> schrieb

> Hallo Leute,
>
>
> nun habe ich unter Einsatz von TOMCAT (servlet.jar)
> das folgende Servlet kompiliert.
> Wie bringe ich es dazu, im Browser (Internet Explorer)
> die programmierten Informationen wachzurufen?
>
>
> >java HelloClientServlet bringt micht nicht weiter ... :-)
> http://localhost/java/HelloClientServlet ebensowenig.
>
>
> Wo muss ich was konfigurieren?
>
>
> 1000 Dank im voraus!
>
>
> Gruss
> Willy
>
[code]

Hallo Willy

unter DEINPFAD:\Tomcat\webapps\tomcat-docs gibt es die Tomcat Doku...

Gruss
Marcel


Ulf Jaehrig

unread,
Dec 23, 2001, 11:15:41 AM12/23/01
to
Hallo,

> Wie bringe ich es dazu, im Browser (Internet Explorer)
> die programmierten Informationen wachzurufen?

Öhm. Du weisst schon, was Servlets sind, oder?
Ein Servlet wird immer unter der Kontrolle eines Servlet-Containers (z.B.
des Tomcat) gestartet.
Du musst also zuerst den Tomcat starten, das Servlet entsprechend
konfiguriert im Tomcat deployen und kannst dann per z.B. Browser Tomcat
nach den Daten fragen.
Eine Empfehlung dafür: Schau Dir mal die im Tomcat mitgelieferten
Beispiel-Servlets an. Die sind ferig einkonfiguriert und Du kannst sehen,
wie alles funktioniert.


> http://localhost/java/HelloClientServlet ebensowenig.

Wenn Tomcat unverändert gestartet wird, dann lauscht er auf Port 8080.

Bis denne,
Ulf

--
I really hate this damned machine
I wish that they would sell it.
It never does quite what I want
But only what I tell it.

Wilfried Grupe

unread,
Dec 24, 2001, 7:16:58 AM12/24/01
to

Hallo,


tut mir leid, wenn ich nochmal nachfragen muss,
aber ich komme auch mit der TOMCAT-Doku nicht ganz klar.
Irgendwo mache ich noch einen Fehler mit der Installation.


Zuerst habe ich das JDK 1.3 downgeloadet und unter C:\>JAVA_HOME installiert.
Dort arbeitet das JDK auch problemlos (javac ...).


Dann: TOMCAT downgeloadet und in das Verzeichnis C:\>CATALINA_HOME gepackt.


Weiteres Vorgehen nach der Doku:


C:\>cd CATALINA_HOME


C:\CATALINA_HOME>cd bin


C:\CATALINA_HOME\bin>startup
Kein Speicherplatz mehr im Umgebungsbereich
Kein Speicherplatz mehr im Umgebungsbereich
Unable to determine the value of CATALINA_HOME
C:\CATALINA_HOME\bin>


Daraufhin habe ich (entspr. der Doku) den Rechts-Maus-Click auf Startup
gemacht,
Eigenschaften-> Speicher-> anfänglicher Umgebungsspeicher auf 4096 gesetzt,
dann kam eine Verknüpfungsinfo MSDOS-Box -> Startup.
Analog bei Shutdown.


Der Click auf beide Verknüpfungen brachte jeweils folgende Fehlermeldung:


You must set JAVA_HOME to point at your Java Development Kit installation


Das ist aber bereits geschehen (s.o.).


Watt nu?


Meine Autoexec.bat sieht derzeit folgendermassen aus:


SET CLASSPATH=C:\java
@ECHO OFF
PROMPT $p$g
PATH C:\WIN95;C:\WIN95\COMMAND;C:\DOS;C:\JAVA_HOME\bin;CATALINA_HOME\bin
PATH=C:\BC45\BIN;%PATH%
SET TEMP=C:\DOS


Anm.: Im Verzeichnis C:\java liegen alle meine Java-Source-Dateien. Hat das mit
meinem Problemchen was zu tun?


Ok, nochmals Dank im voraus!
Ich wuensche Euch allen frohe Feiertage!


Gruss
Willy

Paul Ebermann

unread,
Dec 24, 2001, 8:32:50 AM12/24/01
to
[...]

> Zuerst habe ich das JDK 1.3 downgeloadet und unter C:\>JAVA_HOME installiert.
> Dort arbeitet das JDK auch problemlos (javac ...).
>
> Dann: TOMCAT downgeloadet und in das Verzeichnis C:\>CATALINA_HOME gepackt.
>
> Weiteres Vorgehen nach der Doku:
>
[...]

> C:\CATALINA_HOME\bin>startup
> Kein Speicherplatz mehr im Umgebungsbereich
> Kein Speicherplatz mehr im Umgebungsbereich
> Unable to determine the value of CATALINA_HOME
> C:\CATALINA_HOME\bin>
>
> Daraufhin habe ich (entspr. der Doku) den Rechts-Maus-Click auf Startup
> gemacht,
> Eigenschaften-> Speicher-> anfänglicher Umgebungsspeicher auf 4096 gesetzt,
> dann kam eine Verknüpfungsinfo MSDOS-Box -> Startup.
> Analog bei Shutdown.
>
> Der Click auf beide Verknüpfungen brachte jeweils folgende Fehlermeldung:
>
> You must set JAVA_HOME to point at your Java Development Kit installation
>
> Das ist aber bereits geschehen (s.o.).

Nein. Du hast das Verzeichnis JAVA_HOME genannt,
das ist etwas ganz anderes. Du brauchst eine
Umgebungsvariable namens JAVA_HOME, die den
Verzeichnisnamen enthält.

> Meine Autoexec.bat sieht derzeit folgendermassen aus:
>
>
> SET CLASSPATH=C:\java

Besser:
SET CLASSPATH=.;C:\Java

> @ECHO OFF
> PROMPT $p$g
> PATH C:\WIN95;C:\WIN95\COMMAND;C:\DOS;C:\JAVA_HOME\bin;CATALINA_HOME\bin
> PATH=C:\BC45\BIN;%PATH%
> SET TEMP=C:\DOS

also hier noch:

SET JAVA_HOME=C:\JAVA_HOME

> Anm.: Im Verzeichnis C:\java liegen alle meine Java-Source-Dateien. Hat das mit
> meinem Problemchen was zu tun?

Nicht direkt.

HTH
Paul

Wilfried Grupe

unread,
Dec 27, 2001, 7:23:57 AM12/27/01
to
Hallo,


tausend Dank, hat geholfen, TOMCAT meldet sich,
leider kann ich unter http://localhost:8080/
immer noch keine Servlets aufrufen.


Stattdessen kommt unter http://localhost:8080/index.html
eine Webseite, die mich informiert: "you've setup Tomcat successfully. "
Es ist die Standardseite CATALINA_HOME/webapps/ROOT/index.html die mich wiederum
hilfreich an die Doku verweist.


Ein (korrekt kompiliertes) HelloWorld-Servlet, das in demselben Verzeichnis
steht wie $CATALINA_HOME/webapps/ROOT/index.html
(oder mit entsprechenden Pfadangaben in anderen Verzeichnissen) wird nicht
gefunden:


Apache Tomcat/4.0.1 - HTTP Status 404 - java/HelloClientServlet
type Status report
message /java/HelloClientServlet
description The requested resource (/java/HelloClientServlet) is not available.

Tomcat-Troubleshooting empfiehlt fuer solche Faelle eine Aenderung des Ports:
"The most common hiccup is when another web server (or any process for that
matter) has laid claim to port 8080. ... To change this, open the file:
$CATALINA_HOME/conf/server.xml
and change '8080' to a port that isn't in use, and is greater than 1024...
Restart Tomcat and you're in business.


Gesagt, getan: Port-Aenderung auf 1905,
Neustart Tomcat,
http://localhost:1905/HelloClientServlet
alternativ
http://localhost:1905/java/HelloClientServlet :
keine Aenderung des Ergebnisses (s.o.: ... is not available),
wiederum erscheint unter http://localhost:1905/ dieselbe Seite
$CATALINA_HOME/webapps/ROOT/index.html die mich wissen laesst, dass ich noch
einen Fehler mache, ..., siehe Doku.


Nun habe ich mich mit Eurer Hilfe schrittweise bis hierher durchgearbeitet,
deshalb lasst mich bitte auch jetzt nicht haengen: Wer hat eine Idee??


Nochmals: herzlichsten Dank!
Gruss
Willy

P.S.:
BTW, wie erfahre ich,welcher Port gerade frei ist?
Kann ich irgendeinen beliebigen Port nehmen, der mir gerade einfällt?

Ulf Jaehrig

unread,
Dec 27, 2001, 1:26:43 PM12/27/01
to
Hallo,

> Stattdessen kommt unter http://localhost:8080/index.html
> eine Webseite, die mich informiert: "you've setup Tomcat successfully. "

Ja, das ist doch schon mal okay...

> Ein (korrekt kompiliertes) HelloWorld-Servlet, das in demselben
> Verzeichnis steht wie $CATALINA_HOME/webapps/ROOT/index.html
> (oder mit entsprechenden Pfadangaben in anderen Verzeichnissen) wird nicht
> gefunden:

Hmm, normalerweise muss ein Servlet korrekt in der web.xml angemeldet sein.
Probier doch mal, es in das examples/WEB-INF/classes Verzeichnis zu
kopieren. Die examples/WE-INF/web.xml legt einen passenden Eintrag für die
Servlets an. Schau Dir dazu doch ruhig die Beispielservlets in examples mal
an.


> Tomcat-Troubleshooting empfiehlt fuer solche Faelle eine Aenderung des
> Ports: "The most common hiccup is when another web server (or any process
> for that matter) has laid claim to port 8080.

Nö. Nicht ganz. Hier wird das Problem beschrieben, wenn bereits ein anderer
Dienst auf dem gleichen Port läuft. Der Fehler, den Du dann bekommst, ist
allerdings ein anderer. Normalerweise wird woas eine Exception geben der
Art: "Port already bound".



> BTW, wie erfahre ich,welcher Port gerade frei ist?

Per "netstat"

> Kann ich irgendeinen beliebigen Port nehmen, der mir gerade einfällt?

Prinzipiell ja. Allerdings gibt es eine Anzahl an sog. "Well known ports",
auf denen bestimmte Dienste defaultmässig installiert sind.

Bis denne,
Ulf

--
"The chain which can be yanked is not the eternal chain."
-- G. Fitch

Wilfried Grupe

unread,
Dec 28, 2001, 7:17:07 AM12/28/01
to
Sorry, aber das Ganze ist sehr verwirrend. Ich habe nun wiederholt in
verschiedenen Verzeichnissen versucht, meine kompilierte Datei aufzurufen, aber
es klappt nicht.


Die unten dokumentierte Datei wurde korrekt kompiliert und in das Verzeichnis
C:\CATALINA_HOME\webapps\examples\Web-Inf\Classes\HelloClientServlet
gelegt.


Tomcat ist gestartet, meldet


Starting service Tomcat-Standalone
Apache Tomcat/4.0.1
Starting service Tomcat-Apache
Apache Tomcat/4.0.1


waehrend der Cursor blinkt. Mit Shutdown laesst sich Tomcat problemlos wieder
runterfahren.


Browser-Aufruf
http://localhost:8080/examples/Web-Inf/Classes/HelloClientServlet


Ergebnis:
Apache Tomcat/4.0.1 - HTTP Status 404 - /examples/Web-
Inf/Classes/HelloClientServlet
type Status report
message /examples/Web-Inf/Classes/HelloClientServlet
description The requested resource (/examples/Web-Inf/Classes/HelloClientServlet)
is not available.


Ulf verweist auf examples/WE-INF/web.xml
Ich habe mir die Datei angesehen und einen Schreck gekriegt.
Liegt die Lösung meines Problems etwa darin, meine simple HelloClientServlet.
class-Datei in diesem Horrorgebilde anzumelden??


Ich wollte Java programmieren, nichts anderes... nun haenge ich seit ueber einer
Woche an der Konfiguration von Tomcat. Bin frustriert und ratlos. Wer hat noch ne
Idee??


Ich frage mich, ob Tomcat eine geeignete Umgebung darstellt, um Servlets zu
testen.


Ich habe das Thema so verstanden, daß das untenstehende Servlet von der Engine
aufgerufen wird und HTML-Code an den Browser zurueckgibt.


Ok, nochmals danke im voraus!
Gruss
Willy


Folgende Datei wurde korrekt kompiliert, liegt nun im examples/WEB-INF/classes
Verzeichnis:


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


public class HelloClientServlet extends HttpServlet
{
protected void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
res.setContentType("text/html");
PrintWriter out = res.getWriter();
out.println("<HTML><HEAD><TITLE>Hello Client!</TITLE>"+
"</HEAD><BODY>Hello Client!</BODY></HTML>");
out.close();
}
public String getServletInfo()
{
return "Hi ich bin dein Server ";
}
}

--

Nico Seessle

unread,
Dec 28, 2001, 2:18:56 PM12/28/01
to
"Wilfried Grupe" <wgr...@web.de> schrieb im Newsbeitrag
news:3c2c70d3$1...@netnews.web.de...

> Die unten dokumentierte Datei wurde korrekt kompiliert und in das
Verzeichnis
> C:\CATALINA_HOME\webapps\examples\Web-Inf\Classes\HelloClientServlet

Das Verzeichnis "Web-Inf" sollte korrekterweise eigentlich "WEB-INF"
heissen, aber ich vermute mal unter Windows ist das egal (zu faul das
auszuprobieren...)

> Browser-Aufruf
> http://localhost:8080/examples/Web-Inf/Classes/HelloClientServlet

Das sollte http://localhost:8080/examples/servlet/HelloClientServlet sein
(und dann auch funktionieren).

Alle Servlets die in unterhalb von WEB-INF liegen (entweder "lose" als
class-File in "classes", oder "gepackt" als Jar-Datei in "lib") können (in
Tomcat, ich vermute aber mal das sollte in jedem Servlet-Container so sein -
wieder zu faul nachzuschauen) über
http://<hostname>:<port>/<web-name>/servlet/<voll qualifizierter Name>
aufgerufen werden. In deinem Fall also wie oben geschrieben.

Das gehört jetzt nicht mehr zu deinem Problem, nur weitere Erläuterung:

Wenn du nun ein package-Statement in deiner Klasse angibst, dann muesstest
du auch den Package-Namen angeben, also z.B.
http://localhost:8080/meineApp/servlet/de.domain.paket.Klasse. Da das vielen
zu kompliziert ist (bzw. auch der Aufruf "einfacher" Klassen mit dem
"servlet" in der URL schon "hässlich" aussehen kann), kann man über die
Datei WEB-INF/web.xml das Standardverhalten beeinflussen, also z.B. einen
Aliasnamen für ein Servlet vergeben:

<servlet>
<servlet-name>
snoop
</servlet-name>
<servlet-class>
SnoopServlet
</servlet-class>
</servlet>

Das Servlet kann dann sowohl als
http://localhost:8080/examples/servlet/snoop, als auch als
http://localhost:8080/examples/servlet/SnoopServlet angesprochen werden.

Weiterhin können dann noch weitere "Mappings" definiert werden, wie z.B.

<servlet-mapping>
<servlet-name>
snoop
</servlet-name>
<url-pattern>
/snoop
</url-pattern>
</servlet-mapping>

was dazu führt, das auch der Aufruf http://localhost:8080/examples/snoop
funktioniert.

> Ich wollte Java programmieren, nichts anderes... nun haenge ich seit ueber
einer
> Woche an der Konfiguration von Tomcat. Bin frustriert und ratlos. Wer hat
noch ne
> Idee??

Tja, da stellt sich mir nun so die Frage... Warum? (also warum willst du
Java programmieren?) Willst du eine Web-Anwendung bauen, oder reicht es die
auch erst einmal die Sprache an sich zu lernen? Dafür braucht man nämlich
keine Servlets. Ansonsten muss man in Tomcat eigentlich nichts(!!)
konfigurieren, wenn man "einfach so" erstmal ein Servlet zum laufen bringen
will - nur man muss schon grundlegend wissen, wie dann so eine
Web-Application aufgebaut ist, in welchem Verzeichnis welche Dateien liegen
müssen, und wozu das ganze dann gut ist. Das sollte ja aber hoffentlich mit
meiner Erklärung laufen, so das du nun erst einmal weiterkommst...

> Ich frage mich, ob Tomcat eine geeignete Umgebung darstellt, um Servlets
zu
> testen.

Meiner Meinung nach: Ja! Tomcat ist schließlich die
Referenz-Implementierung, auch wenn nocht von Sun selber entwickelt.

> Ich habe das Thema so verstanden, daß das untenstehende Servlet von der
Engine
> aufgerufen wird und HTML-Code an den Browser zurueckgibt.

Ja, sieht spontan so aus...

Nico

Ulf Jaehrig

unread,
Dec 28, 2001, 4:19:53 PM12/28/01
to
Hallo,

> Browser-Aufruf
> http://localhost:8080/examples/Web-Inf/Classes/HelloClientServlet

Okay. Nochmal:
So, wie Du die Klasse implementiert und einkonfiguriert hast, sollte der
Aufruf eigentlich heissten:

http://localhost:8080/examples/servlet/HelloClientServlet

Zur Erklärung: Du verwendest das examples web.xml. Dort wird ein Servlet
Mapping eingetragen, dass alle Servlets auf ihre entsprechenden
Klassennamen mappt (in Deinem Fall also HelloClientServlet). Da Du Dich im
Context "examples" bewegst, musst Du natürlich das examples vorne
anstellen.

Die Klassen selbst werden in WEB-INF/classes (oder in den libs, die in
WEB-INF/lib liegen) gesucht. Die Servlet-Engine wird dabei NIEMALS
freiwillig Daten aus einem Verzeichnis, das unter WEB-INF liegt,
herausrücken. Und das ist auch gut so, da dort schliesslich
Verwaltungsinfos liegen. Stell Dir vor irgendjemand würde Deine web.xml
lesen können...

Die URL wird nun von der Servlet Engine geparst. Vereinfacht gesagt, wird
der Context (examples) ermittelt und dann wird in diesem Context die
Konfiguration durchsucht. Dort stellt die Engine fest, dass das o.g.
Mapping existiert. Es wird also versucht, eine Klasse namens
HelloClientServlet zu finden. Ist diese gefunden, werden die dazugehörigen
HttpRequest/HttResponse Objekte erzeugt und in einem Aufruf an die
entsprechende Klasse übergeben.

> Ulf verweist auf examples/WE-INF/web.xml
> Ich habe mir die Datei angesehen und einen Schreck gekriegt.

Kann ich verstehen ;-)
Gerade die web.xml in examples deckt sehr viele Bereiche ab. Aber es ist ja
auch ein Beispiel! Es liegen in anderen Verzeichnissen weitere web.xml
Dateien, die wesentlich einfacher gestrickt sind. So reicht es Dir in
vielen Fällen wahrscheinlich aus, ein Servlet zu benennen und ein dazu
passendes Servlet Mapping.

z.B:

<web-app>
<servlet>
<servlet-name>Name</servlet-name>
<servlet-class>pack.ServletClass</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>Name</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>

Mit diesem Beispiel definierst Du, dass es ein Servlet namens "Name" gibt,
dass durch die Klasse "pack.ServletClass" dargestellt wird. Durch das
Mapping gibst Du schliesslich an, dass alle Requests (da /*) durch dieses
Servlet behandlet werden sollen.

> Ich frage mich, ob Tomcat eine geeignete Umgebung darstellt, um Servlets
> zu testen.

Typische Radio Eriwan Antwort: Im Prinzip schon. Das ist schliesslich die
Servlet-Container Referenzimplementierung. Und für Servlets brauchst Du
das. Das System mit der web.xml Datei ist sogar so im Standard definiert.
Also auch da kommst Du im Grossen und Ganzen nicht drum herum.
Ich weiss nicht, aber wahrscheinlich ist die Lernkurve hier ziemlich steil,
da man sich nicht nur mit Java, sondern auch mit den zusätzlichen Dingen
wie Tomcat-Konfiguration und Servlet-Konfiguration herumschlagen muss.

> Ich habe das Thema so verstanden, daß das untenstehende Servlet von der
> Engine aufgerufen wird und HTML-Code an den Browser zurueckgibt.

Ja, genau. Der Servlet Container kümmert sich um den gesamten Netzwerk-Kram
usw. Es wird der HTTP Request geparst und schliesslich nur noch eine
einfache Methode bei Dir im Servlet aufgerufen.

Bis denne,
Ulf

--
Acid absorbs 47 times it's weight in excess Reality.

Wilfried Grupe

unread,
Dec 29, 2001, 9:20:42 AM12/29/01
to

Hallo,


zunaechst danke für Eure Tips, ich kam ein gutes Stueck vorwaerts, aber: tut mir
leid, aber ich bin immer noch nicht durch.


1. Ich habe Web-inf in WEB-INF umbenannt, aber windows wandelt das automatisch
wieder in Web-inf um.


2. Ich habe die Tomcat-Beispiel-Servlets in /servlets kopiert und mit
http://localhost:8080/examples/servlet/<dateiname>
aufgerufen; klappt fehlerfrei. Wenigstens ein Erfolgserlebnis.


Leider funktioniert das nicht bei meinem eigenen Source, auch nicht mit Eintrag
in Web-inf/web.xml:
<servlet>
<servlet-name>
HelloClientServlet
</servlet-name>
<servlet-class>
HelloClientServlet
</servlet-class>
</servlet>


Der Aufruf mit
http://localhost:8080/examples/servlet/HelloClientServlet
erbrachte die uebliche Fehlermeldung.


Auch ein anderes, furchtbar einfaches Servlet, das reines HTML zurueckgibt, wird
kompiliert, aber nicht ausgefuehrt.


Daraufhin kam mir der Verdacht, das Problem laege vielleicht an meinem Source.
Ich aenderte das TOMCAT-Beispiel HelloWorldExample in HelloWorldExampleWilly,
kompilierte es fehlerfrei (Source siehe unten), schob HelloWorldExampleWilly.
class in /servlet und rief es auf:
http://localhost:8080/examples/servlet/HelloWorldExampleWilly
und erhielt eine sehr ausfuehrliche Fehlermeldung (Internal Server Error, siehe
unten), die mich leise vermuten laesst, dass immer noch nicht alles in Ordnung
ist ...


Ok, was hat der Server denn nun auf dem Herzen?
Gruss und Dank im voraus
Willy

Hier der Source:


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


// Abaenderung der HelloWorldExample-Klasse am 29.12.2001
// C:\>javac -classpath CATALINA_HOME/common/lib/servlet.jar;
java/HelloWorldExampleWilly.java
// C:\>
// Kompilierung erfolgreich 29.12.2001

public class HelloWorldExampleWilly extends HttpServlet {


public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
ResourceBundle rb = ResourceBundle.getBundle("LocalStrings",request.
getLocale());
response.setContentType("text/html");
PrintWriter out = response.getWriter();


out.println("<html>");
out.println("<head>");


String title = rb.getString("helloWorldExampleWilly.title");


out.println("<title>" + title + "</title>");
out.println("</head>");
out.println("<body bgcolor=\"white\">");
out.println("<body>");


out.println("<a href=\"/examples/servlets/helloworld.html\">");
out.println("<img src=\"/examples/images/code.gif\" height=24 " +
"width=24 align=right border=0 alt=\"view code\"></a>");
out.println("<a href=\"/examples/servlets/index.html\">");
out.println("<img src=\"/examples/images/return.gif\" height=24 " +
"width=24 align=right border=0 alt=\"return\"></a>");
out.println("<h1>" + title + "</h1>");
out.println("</body>");
out.println("</html>");
}
}


Hier die Fehlermeldung:

Apache Tomcat/4.0.1 - HTTP Status 500 - Internal Server Error
type Exception report
message Internal Server Error
description The server encountered an internal error (Internal Server Error) that
prevented it from fulfilling this request.
exception
java.util.MissingResourceException: Can't find resource for bundle java.util.
PropertyResourceBundle, key helloWorldExampleWilly.title
at java.util.ResourceBundle.getObject(ResourceBundle.java:382)
at java.util.ResourceBundle.getString(ResourceBundle.java:354)
at HelloWorldExampleWilly.doGet(HelloWorldExampleWilly.java:27)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.
internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.
doFilter(ApplicationFilterChain.java:193)
at filters.ExampleFilter.doFilter(ExampleFilter.java:149)
at org.apache.catalina.core.ApplicationFilterChain.
internalDoFilter(ApplicationFilterChain.java:213)
at org.apache.catalina.core.ApplicationFilterChain.
doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.
java:243)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.
java:566)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.
java:201)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.
java:566)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.
java:472)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.
java:564)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2344)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.
java:164)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.
java:566)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.
java:170)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.
java:564)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.
java:170)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.
java:564)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:462)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.
java:564)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.
java:163)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.
java:566)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.
java:1011)
at org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.
java:1106)
at java.lang.Thread.run(Thread.java:484)

Wilfried Grupe

unread,
Dec 29, 2001, 11:54:55 AM12/29/01
to

Hi Ulf,


danke für Deine Antwort, in der web.xml scheint mein Problem zu liegen, nun habe
ich den folgenden Code in der web.xml eingefuegt, unmittelbar vor
<taglib>
<taglib-uri>
http://jakarta.apache.org/tomcat/debug-taglib
</taglib-uri>
<taglib-location>
/WEB-INF/jsp/debug-taglib.tld
</taglib-location>
</taglib>


Gespeichert, auf localhost:8080 aufgerufen, trotzdem tut sich nichts (abgesehen
von der obligaten Fehlermeldung: "... The requested resource
(/examples/servlet/HelloClientServlet) is not available.")


Wieso nicht? Gibts eine bestimmte Reihenfolge, in der der Code eingefuegt werden
muss? Oder muss ich dreimal "Abrakadabra" rufen, damit's klappt? :-))


(Die Beispielservlets laufen unveraendert problemlos.)


Gruss
Willy

in web.xml eingefuegt:

<!-- Eigenes Servlet wgrupe -->


<servlet>
<servlet-name>
HelloClientServlet
</servlet-name>
<servlet-class>
HelloClientServlet
</servlet-class>
</servlet>


<servlet-mapping>
<servlet-name>
HelloClientServlet


</servlet-name>
<url-pattern>
/*
</url-pattern>
</servlet-mapping>


<servlet>
<servlet-name>
Willydatei
</servlet-name>
<servlet-class>
Willydatei
</servlet-class>
</servlet>


<servlet-mapping>
<servlet-name>
Willydatei


</servlet-name>
<url-pattern>
/*
</url-pattern>
</servlet-mapping>

<!-- Ende Eigenes Servlet wgrupe -->


Ulf Jaehrig <ujae...@gmx.de> wrote:


><web-app>
> <servlet>
> <servlet-name>Name</servlet-name>
> <servlet-class>pack.ServletClass</servlet-class>
> </servlet>
>
> <servlet-mapping>
> <servlet-name>Name</servlet-name>
> <url-pattern>/*</url-pattern>
> </servlet-mapping>
></web-app>
>
>Mit diesem Beispiel definierst Du, dass es ein Servlet namens "Name" gibt,
>dass durch die Klasse "pack.ServletClass" dargestellt wird. Durch das
>Mapping gibst Du schliesslich an, dass alle Requests (da /*) durch dieses
>Servlet behandlet werden sollen.

Aljoscha Rittner

unread,
Dec 29, 2001, 11:02:48 AM12/29/01
to
Wilfried Grupe schrieb:

[...]


> 1. Ich habe Web-inf in WEB-INF umbenannt, aber windows wandelt das automatisch
> wieder in Web-inf um.

[...]

IMHO ist das nur die Explorer-Ansicht.
Öffne mal cmd (Start -> Ausführen -> cmd [Enter])

Wechsel in den Ordner, wo sich WEB-INF befindet und gib:

dir

ein. Dort siehst du dann die tatsächliche Groß/Kleinschreibung der
Datei- und Ordnernamen.

Wenn tatsächlich keine Großbuchstabn zu sehen sind, dann nimm den
Befehl ren

ren "web-inf" "WEB-INF"

Gruß,
Josch.
--
Einige Tags in de.comp.lang.java ( siehe http://www.dclj.de/dcljstart.html )
[XML] - Fragen zu den XML Parsern und Long Time Persistence in Java
[IO] - Frage bezüglich Eingabe/Ausgabe in Java
[SWING] - Frage bezüglich Swing

Nico Seessle

unread,
Dec 29, 2001, 7:50:32 PM12/29/01
to
"Wilfried Grupe" <wgr...@web.de> schrieb im Newsbeitrag
news:3c2ddf4a$1...@netnews.web.de...

>
> zunaechst danke für Eure Tips, ich kam ein gutes Stueck vorwaerts, aber:
tut mir
> leid, aber ich bin immer noch nicht durch.
>

Lade dir bitte mal http://www.seessle.de/simple.war.bin herunter, kopiere
das in CATALINA_HOME/webapps, benenne es in simple.war um und starte Tomcat
neu.

Du solltest dann

http://localhost:8080/simple/index.html aufrufen können und die Links
erfolgreiche aufrufen können. Source-Code und web.xml sind dann zum angucken
dabei, alles da wo es sein muss und nicht zu viel und nicht zu wenig.

(Und es läuft bei mit unter Tomcat 4.0.1)

Nico

0 new messages