Hello, Thanks for your help Roland. A solution but also a clear explanation. It's indeed much better when using MultiThreadedHttpConnectionManager. I'm going to take a look to the threading guide.
On Sat, 2008-02-23 at 19:41 +0100, Roland Weber wrote: > Hi Pierre-Alain, > > > I'm trying to stream a GET response directly to a PUT method but I get a > > "java.io.IOException: Stream closed" exception in order to synchronize 2 > > DAV repositories. I would like to avoid to deal with temporary files. > > > > You can found my attempt here : http://pastebin.com/f5cef9454 > > > > Can somebody point me where I'm wrong? > > You are using a single HttpClient with the default connection manager > to do two things at the same time. That cannot work. The default is > SimpleHttpConnectionManager [1], which always has only one connection. > First, you use that connection to execute the GET and obtain the result. > But when you try to use that same connection for sending the PUT, it > gets closed and re-opened to the new target. Then when it is time to > read from the GET, the stream is detected as closed. > > Use two different HttpClient objects for the two requests, or create > one HttpClient object with a MultiThreadedHttpConnectionManager [2]. > You might want to study the Threading Guide [3] first. > > cheers, > Roland > > [1] > http://hc.apache.org/httpclient-3.x/apidocs/org/apache/commons/httpclient/SimpleHttpConnectionManager.html > [2] > http://hc.apache.org/httpclient-3.x/apidocs/org/apache/commons/httpclient/MultiThreadedHttpConnectionManager.html > [3] http://hc.apache.org/httpclient-3.x/threading.html > > > > > > Thanks for help. > > > > > > StackTrace > > ----------------------------- > > Exception in thread "main" java.io.IOException: Stream closed > > at > > java.io.BufferedInputStream.getBufIfOpen(BufferedInputStream.java:145) > > at java.io.BufferedInputStream.read(BufferedInputStream.java:308) > > at java.io.FilterInputStream.read(FilterInputStream.java:90) > > at fr.ippon.webdav.Test$FileRequestEntity.writeRequest(Test.java:66) > > at > > org.apache.commons.httpclient.methods.EntityEnclosingMethod.writeRequestBody(EntityEnclosingMethod.java:495) > > at > > org.apache.commons.httpclient.HttpMethodBase.writeRequest(HttpMethodBase.java:1973) > > at > > org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:993) > > at > > org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:397) > > at > > org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:170) > > at > > org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:396) > > at > > org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:324) > > at fr.ippon.webdav.Test.main(Test.java:34) > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
