> 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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to