Anonymous | Login | Signup for a new account | 11-21-2024 21:52 PST |
Main | My View | View Issues | Change Log | Docs |
Viewing Issue Simple Details [ Jump to Notes ] | [ View Advanced ] [ Issue History ] [ Print ] | |||||||||||
ID | Category | Severity | Reproducibility | Date Submitted | Last Update | |||||||
0005093 | [Hessian] | major | always | 05-28-12 23:35 | 05-28-12 23:50 | |||||||
Reporter | MicW | View Status | public | |||||||||
Assigned To | ||||||||||||
Priority | normal | Resolution | open | |||||||||
Status | new | Product Version | 4.0.7 | |||||||||
Summary | 0005093: Transfer of Large Binary Data not working within Objects | |||||||||||
Description |
0003655 fixes the issue for 4.0.x for the case if a method returns an InputStream: public InputStream getDownload(String filename); But if the Stream is contained within a result Object, all Versions of Hessian (3.1.3, 3.1.5, 4.0.7) fails: public Download getDownload(String filename); public class Download { String filename; InputStream data; } The exception on the client side is like in 0003655 (Stream is closed). |
|||||||||||
Additional Information | ||||||||||||
Attached Files | ||||||||||||
|
Notes | |
(0005785) MicW 05-28-12 23:41 |
java.io.IOException: stream is closed at sun.net.www.http.ChunkedInputStream.ensureOpen(ChunkedInputStream.java:151) at sun.net.www.http.ChunkedInputStream.read(ChunkedInputStream.java:646) at java.io.FilterInputStream.read(FilterInputStream.java:116) at sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(HttpURLConnection.java:2672) at com.caucho.hessian.io.Hessian2Input.readBuffer(Hessian2Input.java:2783) at com.caucho.hessian.io.Hessian2Input.read(Hessian2Input.java:2755) at com.caucho.hessian.io.Hessian2Input.parseByte(Hessian2Input.java:2638) at com.caucho.hessian.io.Hessian2Input.access$0(Hessian2Input.java:2594) at com.caucho.hessian.io.Hessian2Input$ReadInputStream.read(Hessian2Input.java:2904) at com.caucho.hessian.io.Hessian2Input$ReadInputStream.close(Hessian2Input.java:2927) |
(0005786) MicW 05-28-12 23:50 |
If i comment out is.close() and conn.close() in HessianProxy.invoke(), it works fine (but out course resources do not get closed). So it's a bit tricky here how to close the stream and connection. In the fist case (0003655) the Method can only return one Stream. So the connection can simply be closed if this stream is closed. In the case of Objects containing streams, the situation is more complex because it's not easy to find out, when the stream can be closed. One way woulr be to keep track of all streams and if the last stream is closed, the connection can be closed as well. Another problem is that the result Object's properties may not be available until the stream is fully read. |
Issue History | |||
Date Modified | Username | Field | Change |
05-28-12 23:35 | MicW | New Issue | |
05-28-12 23:41 | MicW | Note Added: 0005785 | |
05-28-12 23:50 | MicW | Note Added: 0005786 |
Mantis 1.0.0rc3[^]
Copyright © 2000 - 2005 Mantis Group
31 total queries executed. 27 unique queries executed. |