[jdom-interest] Building from Socket

Sebastian Robertsson sebastian.robertsson at spray.se
Mon Nov 17 17:01:23 PST 2003

Hi everyone!

I know this is an old topic - the problem of building a JDOM-doc read from a socket without closing it. I've 
just tried this solution:


But, I can't make it work. It seems like the parser still hangs, and when I terminate the thread on the 
sender side, I get:

java.net.SocketException: Connection reset
	at java.net.SocketInputStream.read(Unknown Source)
	at java.net.SocketInputStream.read(Unknown Source)
	at server.ConnectedClient.getRequestData(ConnectedClient.java:189)
	at server.ConnectedClient.<init>(ConnectedClient.java:49)
	at server.Server.run(Server.java:86)
	at java.lang.Thread.run(Unknown Source)

On the "sender-side" I use a BufferedOutputStream, and I flush the stream after sendning. On the recieving 
side, this is the code:

byte[] data = getRequestData(clientSocket.getInputStream());
InputStream in = new ByteArrayInputStream(data);
Document d = getXMLDocument(in); 		

private byte[] getRequestData(InputStream stream) throws IOException
	byte[] data = null;
	// Content length not specified.
	// => Read content stream until an EOF is encountered.
	ByteArrayOutputStream baos = new ByteArrayOutputStream(4096);
		int l;
	byte[] xfer = new byte[1024];
	while ((l = stream.read(xfer)) != -1)
	            baos.write(xfer, 0, l);
	data = baos.toByteArray();
	return data;

I get everything to work when I close the stream on the sending side, but when I'm not closing it it seems 
like this code doesn't work after all. Though, as far as I can tell, the XML-doc that I'm sending is alright (it 
gets parsed correcty when using the close stream-trick, and I can write it to a file and open without 
problems). Can somebody help me with this, please. Any other solutions, or have I missed something in 
Laurent Bihanic:s solution?



  Vad står det om dig på nätet? - http://www.lycos.se/

More information about the jdom-interest mailing list