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