Serlvet wird nicht gefunden (404) Apache Tomcat 6.0

Status
Nicht offen für weitere Antworten.
M

Moonie

Gast
Hallo zusammen,

ich hoffe ihr könnt mir weiter helfen. Ich bin ziemlich frustriert

Habe nämlich den Apache Tomcat Web Server 6.0 installiert.
Habe mir auch ein kleines HelloWorld Servlet geschrieben.

Nach Anleitung habe ich die *.class Datei in folgendes Verzeichnis kopiert:
./tomcat 6.0/webapps/ROOT/WEB-INF/classes/

Wenn ich den Server starte und localhost:8080 aufrufe erscheint auch die Startseite.

Aber wenn ich localhost:8080/servlet/HelloWorld oder auch
localhost:8080/HelloWorld
eingebe, bekomme ich immer 'HTTP Status 404 - /servlet/HelloWorld' bzw.
HTTP Status 404 - /HelloWorld.

OS habe ich Win XP und die ganzen conf files habe ich nicht geändert.

Ich bin verzweifelt und hoffe, dass ihr mir da weiterhelfen könnt.

Vielen Dank!

Viele Grüsse
Moonie
 

dajos7

Aktives Mitglied
Hallo,

Du musst das ganze auch in der web.xml (liegt direkt im WEB-INF Ordner) bekannt machen, dass der tomcat weis wo er das Servlet findet.

zB

Code:
<?xml version="1.0" encoding="UTF-8"?>

<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

   <display-name>testServer</display-name>


...

   
   <servlet>
      <servlet-name>MyServlet</servlet-name>
      <servlet-class>de.MyServlet</servlet-class>
   </servlet>

   <servlet-mapping>
      <servlet-name>MyServlet</servlet-name>
      <url-pattern>/HelloWorld</url-pattern>
   </servlet-mapping>

...
   
  
   </web-app>

Bist Du Beginner?

Wenn ja:
Du kannst Eclipse verwenden, um Dynamische WebApplikationen zu erstellen, dort gibt es komplette Wizards, um in 3-4 Schritten ein Grundgerüst für eine WebApplikation herzuleiten. Ebenso lässt sich dort Tomcat einbinden und von dort aus kontrolliert ausführen. zB
lomboz ist eine modifizierte eclipse version mit Tools zur Web Entwicklung. Dort kann man auch schön zT die Zusammenhänge sehen und die einzelnen stellen schön modifizieren.

Nochn Tipp, wenn Du da in Zukuft mehr machst mit Web Applikationen und den tomcat beibehälst, solltest Du frühstmöglich auf Linux umsteigen. Da gibt es zT recht arge Unterschiede, da Tomcat eigentlich auf den Produktivservern zu 99% unter Linux fährt. Das fängt ganz banal schon beim setzen von Verzeichnispfaden an.
 
M

Moonie

Gast
Hi,

erstmal danke für deine Antwort :)

Also zur ersten Frage. Ja ich bin in Sachen Webapplikationen totaler Beginner. Mit Java habe ich schon Erfahrung.
Aber das Webzeugs brauche ich jetzt für mein Studium.

Ich bekomme das einfach nicht hin :((

Hab mal in der web.xml folgendes eingetragen

Code:
<servlet>
       <servlet-name>HelloWorld</servlet-name>
       <servlet-class>HelloWorld</servlet-class>
  </servlet>
   
  <servlet-mapping>
      <servlet-name>HelloWorld</servlet-name>
      <url-pattern>/servlets/servlet/HelloWorld</url-pattern>
   </servlet-mapping>

Weiss zwar jetzt nicht, ob das so richtig ist, da ja eigentlich meine *.Class in ./tomcat 6.0/webapps/ROOT/WEB-INF/classes/ liegt.

Aufjedenfall hat es denn Anschein, als würde er das finden.

Wenn ich jetzt http://localhost:8080/servlets/servlet/HelloWorld eingebe, kommt folgende Fehlermeldungen.

pe Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Class HelloWorld is not a Servlet
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:856)
org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:565)
org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1509)
java.lang.Thread.run(Unknown Source)

root cause

java.lang.ClassCastException: HelloWorld
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:856)
org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:565)
org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1509)
java.lang.Thread.run(Unknown Source)

note The full stack trace of the root cause is available in the Apache Tomcat/6.0.16 logs.
Apache Tomcat/6.0.16

Kommt das jetzt vom Server oder ist das ein Fehler in meiner HelloWorld Class ?

Ich habe keine Ahnung :(

Und das Lamboz habe ich auch mal installiert und wollte es testen. Wenn ich da in meinem Servlet auf 'run on Server' gehe
wähle Apache ODE + Tomcat v5.5, da das der einzige ist der zur Verfügung steht und bei Installation directory wähle ich das Verzeichnis vom Tomcat 6.0 aus, dann kommt folgender Fehler:

The name of the Tomcat installation directory indicates it is for different version of Tomcat.

Was tun ?

Danke!

Viele Grüsse
Moonie
 

HLX

Top Contributor
Moonie hat gesagt.:
Kommt das jetzt vom Server oder ist das ein Fehler in meiner HelloWorld Class ?
Deine HelloWorld-Klasse muss das Interface javax.servlet.Servlet implementieren, damit der Servlet Container (Tomcat) damit umgehen kann.

Leite dazu dein HelloWorld einfach von javax.servlet.http.HttpServlet ab.
 

dajos7

Aktives Mitglied
Tomcat 6.0 Container sind erst in späteren versionen der Webtools implementiert. Lomboz hat dies erst ab version 3.3

Moonie wenn du da mehr hilfe brauchst ICQ mich mal an 360 969 395
 
M

maki

Gast
[uote]Nach Anleitung habe ich die *.class Datei in folgendes Verzeichnis kopiert:
./tomcat 6.0/webapps/ROOT/WEB-INF/classes/ [/quote]
Was ist denn das bitte für eine Anleitung???

Hört sich nach Schrott an...
 
G

Guest

Gast
Also der Code von meinem Applet schaut so aus:

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


public class HelloWorld extends HttpServlet
{
	public void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException,
			IOException
	{
		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		String title = "Hello World";
		String docType = "<!DOCTYPE HTML PUBLIC \" -//W3C//DTD HTML 4.0" +
		"Transitional//EN\">\n";
		out.println(docType +
		"<HTML>\n" +
		"<HEAD><TITLE>" + title + "</TITLE></HEAD>\n"+
		"<BODY BGCOLOR=\"#FDF5E6\" >\n" +
		"<H1>Hello</H1>\n"+ "</BODY></HTML>");
	}
}


Das sollte doch so funktionieren oder? Ist zumindest von HttpServlet abgeleitet

@maki

Also die Anleitung stammt von meinem Prof. Kann auch sein, dass ich die noch nicht so richtig verstanden habe, oder die bezieht sich auf eine andere Version.


Webanwendung einrichten
=================

Die meisten Server sind mit einer Standardwebanwendung ausgestattet und man kann seine
Servlets testen und laufen lassen, indem man sie in diese Webanwendung integriert.
Bei der Verwendung von Tomcat finden Sie im Installationsverzeichnis (also etwa /var/lib/tomcat4
eine Verzeichnis webapps und darunter ein Verzeichnis ROOT. Wenn Sie dort ein eigenes Ver-
zeichnis erzeugen (z.B. meinVerzeichnis und in das eine HTML-Datei (z.B. Seite.html)
legen, so ist diese durch den Pfad http://host:port/meinVerzeichnis/Seite.html erreich-
bar.
Die Servlets-Klassen sind dann im Verzeichnis ../ROOT/WEB-INF/classes und sind Äuber den
Pfad http://host:port/servlet/servleName erreichbar.
Sie können aber auch eine eigene Webanwendung erzeugen. Dazu brauchen Sie zuerst ein Ver-
zeichnis dafÄur. Das sollte den gleichen Aufbau wie das ROOT-Verzeichnis der Standardan-
wendung haben. Dann mÄussen Sie das Verzeichnis beim Server registrieren. Am einfachsten
geht das, indem Sie es in ein Autodeploy-Verzeichnis aufnehmen. Bei Tomcat ist dies das
Verzeichnis .../webapps.

Wenn Sie ein Verzeichnis (z.B. .../webapps/testApp erzeugt haben, kÄonnen Sie nun in dieses
Verzeichnis HTML-Seiten legen und auf diese mit der URL http://host:port/testApp/dateiname.html
zugreifen.
Wei bei der Standardanwendung sollten Sie sich ein Unterverzeichnis WEB-INF erzeugen, wel-
ches wiederum eine Unterverzeichnis classes besitzt. In dieses legen Sie die Java-Klassen
fÄur die Servlets, evtl. mit vollem Pfadnamen (also weiteren Unterverzeichnissen). Die Servlets
kÄonnen dann aufgerufen werden Äuber die URL http://host:port/testApp/servlet/ServletName
oder falls es ein registriertes Servlet ist, Äuber http://host:port/testApp/einName.
Was bedeutet es ein Servlet zu registrieren? Dazu legen Sie sich in das Unterverzeichnis
WEB-INF eine Datei web.xml. Das ist eine sogenannte Deployment-Datei in der die Weban-
wendung de¯niert wird.
Eine web.xml hat den folgenden grundlegenden Aufbau:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC '-//Sun Microsystems, Inc.//DTD Web
Application 2.3//EN' 'http://java.sun.com/dtd/web-app_2_3.dtd'>
<web-app>
...
</web-app>
In der De¯nition einer Webanwendung kann man u.a. Servlets einen Namen geben und de¯-
nieren unter welcher URL sie erreichbar sind, wie im Beispiel:
<servlet>
<servlet-name>UhrzeitServlet</servlet-name>
<servlet-class>Beispiel2</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>UhrzeitServlet</servlet-name>
<url-pattern>/uhrzeit</url-pattern>
</servlet-mapping>
Damit ist das Servlet unter der URL http://host:port/testApp/uhrzeit erreichbar.
In der Regel werden ÄAnderungen an dem Deployment-Deskriptor nicht sofort vom Server
Äubernommen, sondern dieser muss neu gestartet werden, um die web.xml Datei auszuwerten.
 
M

maki

Gast
Das ist definitiv Schrott.

Wer soll daraus irgendetwas lernen?

Du hast übrigens kein Applet, sondern ein Servlet ;)

Solltest deinem Servlet unbedingt ein package spendieren.

Läuft es denn?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Glassfish 5 in Eclipse 2018-12 | in den JSF Capabilities wird nur JSF 2.2 angeboten Server einrichten und konfigurieren 8
S Tomcat 6.0.20 sessionCookiePath in context.xml wird ignoriert Server einrichten und konfigurieren 1
F Cron-Job wird nicht ausgeführt Server einrichten und konfigurieren 2
J "setenv.bat" wird unter Tomcat7/Windows7 nicht ausgeführt Server einrichten und konfigurieren 0
FINF_AW_Alex GlassFish 4.1 - WAR Datei wird nicht angenommen/deployed Server einrichten und konfigurieren 2
P Tomcat 6.x - context path wird nicht richtig gesetzt durch MAven2 Plugin Server einrichten und konfigurieren 16
P Get wird nicht unterstützt. Server einrichten und konfigurieren 4
M Server akzeptiert neues Zertifikat nicht Server einrichten und konfigurieren 9
H Apache Tomcat Installation/Konfiguration arbeitet nicht einwandfrei Server einrichten und konfigurieren 5
S Tomcat Server nicht erreichbar Server einrichten und konfigurieren 21
J ich kann meinen Craftbukkitserver 1.15.2 nicht starten, obwohl ich Java installiert habe und es über 13 ist Server einrichten und konfigurieren 5
E Client reagiert bei Threadserver nicht. Server einrichten und konfigurieren 3
OnDemand Wildfly RAM reicht nicht Server einrichten und konfigurieren 3
J Glassfish 4.1 lässt sich nicht aus Eclipse starten Server einrichten und konfigurieren 1
K Tomcat: maximale Anmeldeversuche einschränken (funktioniert nicht) Server einrichten und konfigurieren 1
F Tomcat startet Anwendung nicht im Windows-Service-Modus Server einrichten und konfigurieren 1
OnDemand Virtual Server in Glassfish findet Recource nicht Server einrichten und konfigurieren 1
D Datasource URL mit port funktioniert nicht Server einrichten und konfigurieren 2
D Domain lässt sich nicht starten Glassfish 4.1 Server einrichten und konfigurieren 1
J GlassFish-Domain nicht startbar unter AVG Internet Security 2014 Server einrichten und konfigurieren 7
C Glassfish 2.1 / SJSAS 9.1 Log - Meldungen werden nicht angezeigt Server einrichten und konfigurieren 1
F [Jenkins] Kann nicht auf GitHub Repository zugreifen Server einrichten und konfigurieren 0
M Connection Pool funktioniert nicht Server einrichten und konfigurieren 3
E Tomcat/Jasper checkt nicht mehr auf Änderungen Server einrichten und konfigurieren 4
K Glassfish 3.1.1. lässt sich nicht starten (Nullpointer Exception) Server einrichten und konfigurieren 3
T Von JBoss gelieferte Dependencies nicht deployen Server einrichten und konfigurieren 7
G Tomcat außerhalb des Servers nicht erreichbar Server einrichten und konfigurieren 6
K Tomcat von remote nicht erreichbar Server einrichten und konfigurieren 14
N Weiterleitung Apache mit Tomcat über mod_jk funktioniert nicht... Server einrichten und konfigurieren 7
M JBoss 5.1 will nicht starten Server einrichten und konfigurieren 2
N JSF-Facelets auf Tomcat - ich krieg's nicht hin Server einrichten und konfigurieren 10
B Tomcat Welcome-Page aus Eclipse nicht erreichbar Server einrichten und konfigurieren 4
R Kann SpringSource dm-Server nicht starten Server einrichten und konfigurieren 5
J Tomcat: shutdown.sh script funktioniert plötzlich nicht mehr Server einrichten und konfigurieren 3
P Service kennt Datentypen nicht mehr beim Empfangen von Nachrichten Server einrichten und konfigurieren 2
P maven-tomcat-plugin redeploy funktioniert nicht? Server einrichten und konfigurieren 6
N system.out geht nicht Server einrichten und konfigurieren 4
S JBoss nicht von außen erreichbar? Server einrichten und konfigurieren 1
P Struts 2 Mapping funktioniert nicht richtig Server einrichten und konfigurieren 5
B Ubuntu-Newbie: Tomcat5.5 will nicht Server einrichten und konfigurieren 5
T RetrieveFile von Commons Net funktioniert nicht Server einrichten und konfigurieren 3
F [tomcat] kann DefaultServlet nicht erweitern. Server einrichten und konfigurieren 5
L Tomcat startet nicht Server einrichten und konfigurieren 10
P Tomcat auf Linuxserver will nicht Server einrichten und konfigurieren 9
M build.xml erkennt Java3D nicht Server einrichten und konfigurieren 2
K [Tomcat+Axis] SSL funktioniert nicht Server einrichten und konfigurieren 2
R axis läuft nicht Server einrichten und konfigurieren 2
A axis läuft nicht Server einrichten und konfigurieren 12
S Applet am Tomcat läuft nicht Server einrichten und konfigurieren 2
R Tomcat Projekt- .class nicht gefunden. Server einrichten und konfigurieren 2

Ähnliche Java Themen

Neue Themen


Oben