You are viewing a plain text version of this content. The canonical link for it is here.
Posted to httpclient-users@hc.apache.org by Yadu <a1...@yahoo.com> on 2010/02/02 23:59:11 UTC
Re: Http Multi-part exception when using InputStreamBody
> @Oleg
> "You basically have two options: (1) use repeatable ContentBody
> implementations only or (2) make sure the request does not need to be
> retried. Please note the latter is not always possible. Request retries
> due to authentication failures can be avoided, but those due to I/O
> errors cannot."
>
>
> I am facing the same issue when using InputStreamBody with MultipartEntity
> in Sun-One 7.0 server. But it's going good with Tomcat 6. Are there any
> config params need to be set explicitly?
>
> Stack trace goes here
>
>
java.net.SocketException: Broken pipe
at java.net.SocketOutputStream.socketWrite0(Native Method)
at
java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
at
org.apache.http.impl.io.AbstractSessionOutputBuffer.write(AbstractSessionOutputBuffer.java:122)
at
org.apache.http.impl.io.ChunkedOutputStream.flushCacheWithAppend(ChunkedOutputStream.java:108)
at
org.apache.http.impl.io.ChunkedOutputStream.write(ChunkedOutputStream.java:160)
at
org.apache.http.entity.mime.content.InputStreamBody.writeTo(InputStreamBody.java:82)
at
org.apache.james.mime4j.message.MessageWriter.writeBody(MessageWriter.java:76)
at
org.apache.http.entity.mime.HttpMultipart.doWriteTo(HttpMultipart.java:165)
at
org.apache.http.entity.mime.HttpMultipart.writeTo(HttpMultipart.java:223)
at
org.apache.http.entity.mime.MultipartEntity.writeTo(MultipartEntity.java:187)
at
org.apache.http.impl.entity.EntitySerializer.serialize(EntitySerializer.java:120)
at
org.apache.http.impl.AbstractHttpClientConnection.sendRequestEntity(AbstractHttpClientConnection.java:253)
at
org.apache.http.impl.conn.AbstractClientConnAdapter.sendRequestEntity(AbstractClientConnAdapter.java:225)
at
org.apache.http.protocol.HttpRequestExecutor.doSendRequest(HttpRequestExecutor.java:248)
at
org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:123)
at
org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:485)
at
org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:689)
at
org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:624)
at
org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:602)
at com.bamnetworks.cms.util.RestHitter.execute(RestHitter.java:361)
at com.bamnetworks.cms.util.RestHitter.execute(RestHitter.java:333)
at
com.bamnetworks.cms.webui.util.ProxyServlet.execute(ProxyServlet.java:173)
at
com.bamnetworks.cms.webui.util.ProxyServlet.processRequest(ProxyServlet.java:71)
at
com.bamnetworks.cms.webui.util.ProxyServlet.doPost(ProxyServlet.java:64)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:816)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:917)
at
org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:398)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:277)
at
org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:255)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:188)
at
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:586)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:556)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:187)
at
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:586)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:556)
at
com.sun.webserver.connector.nsapi.NSAPIProcessor.service(NSAPIProcessor.java:160)
--
View this message in context: http://old.nabble.com/Http-Multi-part-exception-when-using-InputStreamBody-tp22673677p27428900.html
Sent from the HttpClient-User mailing list archive at Nabble.com.
Re: Http Multi-part exception when using InputStreamBody
Posted by Yadu <a1...@yahoo.com>.
> Let me elaborate on my case. I am implementing a proxy servlet which is
> meant to receive multipart-form data, process data using Jakarta Commons
> fileupload and make HttpPost request to some REST service. I am using
> InputStreamBody for files uploaded. Code works perfectly fine when running
> under Tomcat but starts throwing error "java.net.SocketException: Broken
> pipe" when same code is deployed to SunOne server. I am using custom
> request retry handler which doesn't allow retries for MultipartEntity.
>
> httpcomponent release 4.1 alpha
>
> Code Snippet:
>
> MultipartEntity reqEntity = new MultipartEntity();
> InputStream is = fileItem.getInputStream();
> reqEntity.addPart(paramName, new InputStreamBody(is, fileName));
>
> HttpClient Properties:
>
> HttpParams params = new SyncBasicHttpParams();
> HttpHost proxy = new HttpHost(proxyHost, proxyPort);
>
> ConnRouteParams.setDefaultProxy(params, proxy);
> HttpConnectionParams.setTcpNoDelay(params, true);
> HttpConnectionParams.setLinger(params, 30);
> HttpConnectionParams.setConnectionTimeout(params, 30000);
> HttpConnectionParams.setSoTimeout(params, 30000);
> HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
> HttpProtocolParams.setUseExpectContinue(params, false);
> HttpProtocolParams.setContentCharset(params, "UTF-8");
> HttpClientParams.setRedirecting(params, false);
> HttpClientParams.setCookiePolicy(params,
> CookiePolicy.BROWSER_COMPATIBILITY);
> client.getParams().setParameter(CoreProtocolPNames.WAIT_FOR_CONTINUE,
> 10000); // 10 seconds
>
> // set custom request retry handler which doesn't allow retry for POST
> request
> HttpRequestRetryHandler retryHandler = new CustomRetryHandler();
> client.setHttpRequestRetryHandler(retryHandler);
>
> Any response is highly appreciated.
> Thanks!
>
Yadu wrote:
>
>
>
>> @Oleg
>> "You basically have two options: (1) use repeatable ContentBody
>> implementations only or (2) make sure the request does not need to be
>> retried. Please note the latter is not always possible. Request retries
>> due to authentication failures can be avoided, but those due to I/O
>> errors cannot."
>>
>>
>
>
>> I am facing the same issue when using InputStreamBody with
>> MultipartEntity in Sun-One 7.0 server. But it's going good with Tomcat 6.
>> Are there any config params need to be set explicitly?
>>
>> Stack trace goes here
>>
>>
> java.net.SocketException: Broken pipe
> at java.net.SocketOutputStream.socketWrite0(Native Method)
> at
> java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
> at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
> at
> org.apache.http.impl.io.AbstractSessionOutputBuffer.write(AbstractSessionOutputBuffer.java:122)
> at
> org.apache.http.impl.io.ChunkedOutputStream.flushCacheWithAppend(ChunkedOutputStream.java:108)
> at
> org.apache.http.impl.io.ChunkedOutputStream.write(ChunkedOutputStream.java:160)
> at
> org.apache.http.entity.mime.content.InputStreamBody.writeTo(InputStreamBody.java:82)
> at
> org.apache.james.mime4j.message.MessageWriter.writeBody(MessageWriter.java:76)
> at
> org.apache.http.entity.mime.HttpMultipart.doWriteTo(HttpMultipart.java:165)
> at
> org.apache.http.entity.mime.HttpMultipart.writeTo(HttpMultipart.java:223)
> at
> org.apache.http.entity.mime.MultipartEntity.writeTo(MultipartEntity.java:187)
> at
> org.apache.http.impl.entity.EntitySerializer.serialize(EntitySerializer.java:120)
> at
> org.apache.http.impl.AbstractHttpClientConnection.sendRequestEntity(AbstractHttpClientConnection.java:253)
> at
> org.apache.http.impl.conn.AbstractClientConnAdapter.sendRequestEntity(AbstractClientConnAdapter.java:225)
> at
> org.apache.http.protocol.HttpRequestExecutor.doSendRequest(HttpRequestExecutor.java:248)
> at
> org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:123)
> at
> org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:485)
> at
> org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:689)
> at
> org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:624)
> at
> org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:602)
> at
> com.bamnetworks.cms.util.RestHitter.execute(RestHitter.java:361)
> at
> com.bamnetworks.cms.util.RestHitter.execute(RestHitter.java:333)
> at
> com.bamnetworks.cms.webui.util.ProxyServlet.execute(ProxyServlet.java:173)
> at
> com.bamnetworks.cms.webui.util.ProxyServlet.processRequest(ProxyServlet.java:71)
> at
> com.bamnetworks.cms.webui.util.ProxyServlet.doPost(ProxyServlet.java:64)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:816)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:917)
> at
> org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:398)
> at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:277)
> at
> org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:255)
> at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:188)
> at
> org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:586)
> at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:556)
> at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:187)
> at
> org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:586)
> at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:556)
> at
> com.sun.webserver.connector.nsapi.NSAPIProcessor.service(NSAPIProcessor.java:160)
>
>
--
View this message in context: http://old.nabble.com/Http-Multi-part-exception-when-using-InputStreamBody-tp22673677p27438277.html
Sent from the HttpClient-User mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: httpclient-users-unsubscribe@hc.apache.org
For additional commands, e-mail: httpclient-users-help@hc.apache.org