Stuart,

You're extending Thread - everything that is mapped to a Tomcat request must
extend HttpServlet.  Tomcat is trying to cast your TestTunnel class to
HttpServlet, which is failing.

Andy

> -----Original Message-----
> From: Stuart Stephen [mailto:[EMAIL PROTECTED]]
> Sent: 15 May 2002 11:56
> To: Tomcat Users List
> Subject: HTTP Tunnelling problem?? Please help
>
>
>
> Hello all,
>
> I'm having problems trying to write a HttpTunnel for java objects
> in Tomcat.
> For some reason I'm getting a ClassCastException. I don't understand this.
> I've even tried forcing it as you can see in my code below. The exception
> that i'm getting is not very clear and i can't put my finger on it.
>
> I have attached the exception from Apache/Tomcat and the code for
> the tunnel
> at the bottom of this email. If you can help I would be very grateful.
>
> Regards,
> Stuart Stephen
>
> ------------------------------------------------------------------
> ----------
> ----
>
> 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.lang.ClassCastException: TestTunnel
>       at
> org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:820)
>       at
> org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.
> java:615)
>       at
> org.apache.catalina.servlets.InvokerServlet.serveRequest(InvokerSe
> rvlet.java
> :396)
>       at
> org.apache.catalina.servlets.InvokerServlet.doGet(InvokerServlet.java:180)
>       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(A
> pplication
> FilterChain.java:247)
>       at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(Applicati
> onFilterCh
> ain.java:193)
>       at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapp
> erValve.ja
> va:243)
>       at
> org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipel
> ine.java:5
> 66)
>       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(StandardConte
> xtValve.ja
> va:201)
>       at
> org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipel
> ine.java:5
> 66)
>       at
> org.apache.catalina.valves.CertificatesValve.invoke(CertificatesVa
> lve.java:2
> 46)
>       at
> org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipel
> ine.java:5
> 64)
>       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(StandardHostValv
> e.java:164
> )
>       at
> org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipel
> ine.java:5
> 66)
>       at
> org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispat
> cherValve.
> java:170)
>       at
> org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipel
> ine.java:5
> 64)
>       at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValv
> e.java:170
> )
>       at
> org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipel
> ine.java:5
> 64)
>       at
> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:462)
>       at
> org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipel
> ine.java:5
> 64)
>       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(StandardEngine
> Valve.java
> :163)
>       at
> org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipel
> ine.java:5
> 66)
>       at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.
> java:472)
>       at
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
>       at
> org.apache.ajp.tomcat4.Ajp13Processor.process(Ajp13Processor.java:371)
>       at
> org.apache.ajp.tomcat4.Ajp13Processor.run(Ajp13Processor.java:424)
>       at java.lang.Thread.run(Unknown Source)
>
> -----------------------
>
> import javax.servlet.*;
> import javax.servlet.http.*;
> import javax.servlet.ServletException.*;
> import javax.servlet.UnavailableException.*;
> import java.lang.Exception.*;
> import java.io.*;
> import java.util.*;
> import java.net.*;
>
> public class TestTunnel extends Thread {
>
>   // applet connections
>   ObjectOutputStream objOut = null;
>   ObjectInputStream objIn = null;
>
>   // chatserver connections
>   Socket socket = null;
>   ObjectOutputStream sockObjOut = null;
>   ObjectInputStream sockObjIn = null;
>
>   ToApplet app = null;
>   ToServer ser = null;
>
>   protected void service(HttpServletRequest req, HttpServletResponse res)
> throws ServletException,IOException  {
>     try {
>       // get data stream from applet
>       System.err.println("start of servlet");
>
>       objIn = new ObjectInputStream(req.getInputStream());
>       objOut = new ObjectOutputStream(res.getOutputStream());
>
>       // create socket to chat server and the streams
>       socket = new Socket("127.0.0.1", 3000);
>       sockObjOut = new ObjectOutputStream(socket.getOutputStream());
>       sockObjIn = new ObjectInputStream(socket.getInputStream());
>
>       app = new ToApplet((TestTunnel)this);
>       ser = new ToServer((TestTunnel)this);
>
>       System.err.println("end of servlet");
>     }
>     catch(Exception e) {
>       e.printStackTrace();
>     }
>   }
>
>   public void destroy() {
>     try {
>       objIn.close();
>       objOut.close();
>       sockObjIn.close();
>       sockObjOut.close();
>       socket.close();
>     }
>     catch(Exception e) {
>       e.printStackTrace();
>     }
>   }
>
>   private class ToApplet extends Thread {
>     TestTunnel parent = null;
>
>     public ToApplet(TestTunnel parent) {
>       try {
>         this.parent = parent;
>         this.start();
>       }
>       catch(Exception e) {
>         e.printStackTrace();
>       }
>     }
>
>     public void run() {
>       try {
>         Object obj = null;
>         while((obj=parent.sockObjIn.readObject())!=null) {
>           write(obj);
>         }
>       }
>       catch(Exception e) {
>         e.printStackTrace();
>       }
>     }
>
>     public void write(Object msg) {
>       try {
>         parent.objOut.writeObject(msg);
>         parent.objOut.flush();
>         parent.objOut.reset();
>       }
>       catch(Exception e) {
>         e.printStackTrace();
>       }
>     }
>   }
>
>   private class ToServer extends Thread {
>     TestTunnel parent = null;
>
>     public ToServer(TestTunnel parent) {
>       try {
>         this.parent = parent;
>         this.start();
>       }
>       catch(Exception e) {
>         e.printStackTrace();
>       }
>     }
>
>     public void run() {
>       try {
>         Object obj = null;
>         while((obj=parent.objIn.readObject())!=null) {
>           write(obj);
>         }
>       }
>       catch(Exception e) {
>         e.printStackTrace();
>       }
>     }
>
>     public void write(Object msg) {
>       try {
>         parent.sockObjOut.writeObject(msg);
>         parent.sockObjOut.flush();
>         parent.sockObjOut.reset();
>       }
>       catch(Exception e) {
>         e.printStackTrace();
>       }
>     }
>   }
> }
>
>
>
> --
> To unsubscribe, e-mail:
> <mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail:
> <mailto:[EMAIL PROTECTED]>
>
>



--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to