You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by "Lorenti, John" <JL...@dcjs.state.va.us> on 2003/01/28 22:36:00 UTC

How can a Filter hold open and read multiple messages on the Inpu t Stream?

Hello,

I'm trying to achieve sustained communication, via serialized objects,
between a Filter and a remote client.  The client and the Filter are able to
successfully create the Object input and output streams.  The client can
both read and write using these streams, but the Filter only seems able to
write to its ObjectOutputStream.  When the Filter attempts to read from its
ObjectInputStream, an IOException is throws (see the stack trace below).  I
get the same exception whether going through the IIS redirector or directly
to Tomcat through its custom port.  Is there something I need to change on
Tomcat's side to enable the InputStream to remain open?

I've searched the archives for potential solutions to this situation, but
haven't found one.  There was a related post back on 07/10/2001 but no
responses.  I'm hoping someone has solved this situation since then and may
be able to help me out.  Any help will be much appreciated!

Thanks in advance.
-John

Below is the stack trace from the IOException when the Filter tries to read
from the ObjectInputStream.

java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.ja
va:2438)
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1245)
java.io.ObjectInputStream.readObject(ObjectInputStream.java:324)
servlet.filter.TestFilter.receiveRequest(TestFilter.java:145)
servlet.filter.TestFilter.serveClient(TestFilter.java:79)
servlet.filter.ServiceFilter.doFilter(ServiceFilter.java:30)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:213)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:193)
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja
va:260)
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok
eNext(StandardPipeline.java:643)
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.ja
va:191)
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok
eNext(StandardPipeline.java:643)
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2396)
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180
)
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok
eNext(StandardPipeline.java:643)
org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.
java:170)
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok
eNext(StandardPipeline.java:641)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172
)
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok
eNext(StandardPipeline.java:641)
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java
:174)
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok
eNext(StandardPipeline.java:643)
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:405)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConne
ction(Http11Protocol.java:380)
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:508)
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.jav
a:533)
java.lang.Thread.run(Thread.java:536)

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>