Hi guys,
I have implemented a comet servlet that implements CometProcessor. I have
tested it and seems to work fine. The problem is that now I'm trying to
interact with it through an old system that used to use
ObjectInputStream/ObjectOutputStream classes. So i found a couple of issues
that probably are my fault but would like to know if any knows a solution
for these.
First of all something I found that I don't really care about too much is
that it seems that a flush doesn't sends the message at all.
OutputStream output = conn.getOutputStream();
Writer writer = new OutputStreamWriter(output, ENCODING);
writer.write("this is a request");
writer.flush();
writer.close();
So, for example this code doesn't send the message until I close the client
application.
Second is when I open a new input stream I always receive an exception. The
code:
InputStream input = conn.getInputStream();
objectInput = new ObjectInputStream(input);
And the exception:
java.io.StreamCorruptedException: invalid stream header
at java.io.ObjectInputStream.readStreamHeader (ObjectInputStream.java
:764)
at java.io.ObjectInputStream.<init>(ObjectInputStream.java:277)
at com.cognotec.streaming.StreamTestClient.run(StreamTestClient.java:78)
This is my old connection set up. I don't think it should affect the test.
URL servletURL = new URL(url);
URLConnection conn = servletURL.openConnection();
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setUseCaches(false);
conn.setAllowUserInteraction(false);
conn.setRequestProperty ("Content-type", "text/plain");
conn.setRequestProperty("connection", "Keep-Alive");
Any suggestions?
Thanks for your help,
Martin