# Tomcat und meine .class Datei: Wohin damit und wie läuft sie



## GGConsulting (17. Nov 2005)

Hallo.

Ich versuche ein Servlet zu bauen.

Ich habe folgenden Code in Eclipse erstellt und zu einre .class Datei gemacht:

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

public class HalloReader 
{
	public void doGet(HttpServletRequest request,
			HttpServletResponse response) 
			throws ServletException , IOException
	{
		PrintWriter out = response.getWriter();
		out.println("<HTML>");
		out.println("<BODY>");
		out.println("Hello Readers");
		out.println("</BODY>");
		out.println("</HTML>");
	}
}
```
Dann habe ich tomcat 4.1 installiert unter
D:\jakarta-tomcat-4.1.31
ich habe herumgesucht und meine Klasse in 
D:\jakarta-tomcat-4.1.31\webapps\examples\WEB-INF\classes 
gestellt, da ich da die Beispielklassen gefunden habe.
Wenn ich 
http://localhost:8080/examples/servlet/HalloReader
im IE eingebe kommt eine Fehlermeldung:

HTTP Status 500 - 

--------------------------------------------------------------------------------

type Exception report

message 

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

exception 

java.lang.ClassCastException
	at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:856)
	at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:621)
	at org.apache.catalina.servlets.InvokerServlet.serveRequest(InvokerServlet.java:369)
	at org.apache.catalina.servlets.InvokerServlet.doGet(InvokerServlet.java:133)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:696)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:809)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:200)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:146)
	at filters.ExampleFilter.doFilter(ExampleFilter.java:102)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:166)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:146)
	at filters.ExampleFilter.doFilter(ExampleFilter.java:102)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:166)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:146)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:209)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:144)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:445)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
	at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2358)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:133)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
	at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:118)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:116)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:127)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
	at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:152)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
	at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
	at java.lang.Thread.run(Thread.java:534)


Was habe ich falsch gemacht?
Andere class Dateien , die anscheinend im selben verzeichnis sind laufen.
Muss ich das irgendwo in Tomcat registrieren oder so etwas?
Das kann doch nciht so schwer sein. Und warum steht in der Fehlermeldung etwas von ClassCastException?

Wer es weiss sollte es mir verraten.
Wenn es schon einen Thread gab, der das beantwortet habe ich ihn übersehen.

Danke und Gruß

Gerhard


----------



## Bleiglanz (17. Nov 2005)

public class HalloReader

das ist kein Servlet, auch wenns eine doGet Methode hat

und schmeiss den 4.1er in die Tonne, das Teil ist total veraltet


----------



## GGConsulting (17. Nov 2005)

Stimmt. Das extends HttpServlet ist mir verlorengegangen. Stand aber schon mal da.

Das ist jetzt drin und der Code ist:

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

public class HalloReader extends HttpServlet
{
	public void doGet(HttpServletRequest request,
			HttpServletResponse response) 
			throws ServletException , IOException
	{
		PrintWriter out = response.getWriter();
		out.println("<HTML>");
		out.println("<BODY>");
		out.println("Hello Readers");
		out.println("</BODY>");
		out.println("</HTML>");
	}
}
```

Eclipse meckert jetzt
Severity	Description	Resource	In Folder	Location	Creation Time	Id
1	The serializable class HalloReader does not declare a static final serialVersionUID field of type long	HalloReader.java	Servlets/src	line 5	17. November 2005 11:41:50	699

Was soll das jetzt?


----------



## Bleiglanz (17. Nov 2005)

drück CTRL+1, und nimm generate ID


----------



## GGConsulting (17. Nov 2005)

Das ist ja klasse.
Jetzt tut es, was es soll.
Auch wenn ich nicht sagen kann, ich kenne mich jetzt aus, aber ich danke für die Hilfe.
Der Rest mit dem Auskennen kommt dann bei Gelegenheit mit lesen von Dokus etc.
(hoffe ich)  oder ich muss hier wieder lästig werden.

Danke Bleiglanz


----------

