Return-Path: X-Original-To: apmail-struts-issues-archive@minotaur.apache.org Delivered-To: apmail-struts-issues-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id B636511F9E for ; Wed, 20 Aug 2014 01:48:19 +0000 (UTC) Received: (qmail 88651 invoked by uid 500); 20 Aug 2014 01:48:19 -0000 Delivered-To: apmail-struts-issues-archive@struts.apache.org Received: (qmail 88578 invoked by uid 500); 20 Aug 2014 01:48:19 -0000 Mailing-List: contact issues-help@struts.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@struts.apache.org Delivered-To: mailing list issues@struts.apache.org Received: (qmail 88283 invoked by uid 99); 20 Aug 2014 01:48:19 -0000 Received: from arcas.apache.org (HELO arcas.apache.org) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 20 Aug 2014 01:48:19 +0000 Date: Wed, 20 Aug 2014 01:48:18 +0000 (UTC) From: "mougenko (JIRA)" To: issues@struts.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Resolved] (WW-4386) "java.io.IOException: Broken pipe" occurred MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/WW-4386?page=3Dcom.atlassian.j= ira.plugin.system.issuetabpanels:all-tabpanel ] mougenko resolved WW-4386. -------------------------- Resolution: Not a Problem Fix Version/s: (was: 2.3.18) This is not a bug in Struts. Tomcat bug. > "java.io.IOException: Broken pipe" occurred > ------------------------------------------- > > Key: WW-4386 > URL: https://issues.apache.org/jira/browse/WW-4386 > Project: Struts 2 > Issue Type: Bug > Components: Core Interceptors > Affects Versions: 2.3.16.3 > Environment: OS:RHEL Server 5.3 > JRE:1.7.0_09 > Application Server:Tomcat 8.0.9 > Reporter: mougenko > Priority: Blocker > > When I call Action, Broken pipe Exception occur. > =E3=83=BBIf don't use interceptor, Exception does not occur. > =E3=83=BBIf action result type is not stream, Exception does not occur. > =E3=83=BBIf read HttpResponse, Exception does not occur. > =E3=83=BBIf OS is Windows, Exception does not occur. > =E3=83=BBIf use Tomcat BIO protocol, Exception does not occur. > {code:title=3DStackTrace|borderStyle=3Dsolid} > org.apache.catalina.connector.ClientAbortException: java.io.IOException: = Broken pipe=09 > =09at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuf= fer.java:389) > =09at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:426= ) > =09at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.jav= a:338) > =09at org.apache.catalina.connector.OutputBuffer.close(OutputBuffer.java:= 291) > =09at org.apache.catalina.connector.CoyoteOutputStream.close(CoyoteOutput= Stream.java:151) > =09at org.apache.struts2.dispatcher.StreamResult.doExecute(StreamResult.j= ava:305) > =09at org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsRes= ultSupport.java:186) > =09at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(Defau= ltActionInvocation.java:371) > =09at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActio= nInvocation.java:275) > =09at org.apache.struts2.interceptor.DeprecationInterceptor.intercept(Dep= recationInterceptor.java:41) > =09at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActio= nInvocation.java:246) > =09at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.inter= cept(DebuggingInterceptor.java:256) > =09at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActio= nInvocation.java:246) > =09at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIn= tercept(DefaultWorkflowInterceptor.java:167) > =09at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.interce= pt(MethodFilterInterceptor.java:98) > =09at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActio= nInvocation.java:246) > =09at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept= (ValidationInterceptor.java:265) > =09at org.apache.struts2.interceptor.validation.AnnotationValidationInter= ceptor.doIntercept(AnnotationValidationInterceptor.java:68) > =09at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.interce= pt(MethodFilterInterceptor.java:98) > =09at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActio= nInvocation.java:246) > =09at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.inte= rcept(ConversionErrorInterceptor.java:138) > =09at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActio= nInvocation.java:246) > =09at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doInterce= pt(ParametersInterceptor.java:254) > =09at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.interce= pt(MethodFilterInterceptor.java:98) > =09at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActio= nInvocation.java:246) > =09at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doInterce= pt(ParametersInterceptor.java:254) > =09at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.interce= pt(MethodFilterInterceptor.java:98) > =09at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActio= nInvocation.java:246) > =09at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.int= ercept(StaticParametersInterceptor.java:191) > =09at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActio= nInvocation.java:246) > =09at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(Mul= tiselectInterceptor.java:73) > =09at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActio= nInvocation.java:246) > =09at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(Checkb= oxInterceptor.java:91) > =09at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActio= nInvocation.java:246) > =09at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(File= UploadInterceptor.java:252) > =09at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActio= nInvocation.java:246) > =09at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercep= t(ModelDrivenInterceptor.java:100) > =09at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActio= nInvocation.java:246) > =09at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.in= tercept(ScopedModelDrivenInterceptor.java:141) > =09at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActio= nInvocation.java:246) > =09at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(C= hainingInterceptor.java:145) > =09at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActio= nInvocation.java:246) > =09at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(= PrepareInterceptor.java:171) > =09at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.interce= pt(MethodFilterInterceptor.java:98) > =09at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActio= nInvocation.java:246) > =09at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nI= nterceptor.java:139) > =09at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActio= nInvocation.java:246) > =09at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(S= ervletConfigInterceptor.java:164) > =09at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActio= nInvocation.java:246) > =09at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(Alia= sInterceptor.java:193) > =09at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActio= nInvocation.java:246) > =09at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.int= ercept(ExceptionMappingInterceptor.java:189) > =09at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActio= nInvocation.java:246) > =09at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy= .java:54) > =09at com.opensymphony.xwork2.ActionChainResult.execute(ActionChainResult= .java:233) > =09at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(Defau= ltActionInvocation.java:371) > =09at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActio= nInvocation.java:275) > Caused by: java.io.IOException: Broken pipe=09 > =09at sun.nio.ch.FileDispatcherImpl.write0(Native Method) > =09at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:47) > =09at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:89) > =09at sun.nio.ch.IOUtil.write(IOUtil.java:60) > =09at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:450) > =09at org.apache.tomcat.util.net.NioChannel.write(NioChannel.java:127) > =09at org.apache.tomcat.util.net.NioBlockingSelector.write(NioBlockingSel= ector.java:101) > =09at org.apache.tomcat.util.net.NioSelectorPool.write(NioSelectorPool.ja= va:173) > =09at org.apache.coyote.http11.InternalNioOutputBuffer.writeToSocket(Inte= rnalNioOutputBuffer.java:139) > =09at org.apache.coyote.http11.InternalNioOutputBuffer.flushBuffer(Intern= alNioOutputBuffer.java:244) > =09at org.apache.coyote.http11.InternalNioOutputBuffer.addToBB(InternalNi= oOutputBuffer.java:189) > =09at org.apache.coyote.http11.InternalNioOutputBuffer.access$000(Interna= lNioOutputBuffer.java:41) > =09at org.apache.coyote.http11.InternalNioOutputBuffer$SocketOutputBuffer= .doWrite(InternalNioOutputBuffer.java:320) > =09at org.apache.coyote.http11.filters.ChunkedOutputFilter.doWrite(Chunke= dOutputFilter.java:116) > =09at org.apache.coyote.http11.AbstractOutputBuffer.doWrite(AbstractOutpu= tBuffer.java:257) > =09at org.apache.coyote.Response.doWrite(Response.java:492) > =09at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuf= fer.java:384) > =09... 164 more > {code} > {code:title=3DTestAction.java|borderStyle=3Dsolid} > package sample.action; > import java.io.ByteArrayInputStream; > import java.io.InputStream; > import org.apache.commons.logging.Log; > import org.apache.commons.logging.LogFactory; > import org.apache.struts2.convention.annotation.Action; > import org.apache.struts2.convention.annotation.InterceptorRef; > import org.apache.struts2.convention.annotation.ParentPackage; > import org.apache.struts2.convention.annotation.Result; > import com.opensymphony.xwork2.ActionSupport; > @ParentPackage(value =3D "default") > @InterceptorRef("first") > public class TestAction extends ActionSupport { > =09public InputStream inputStream; > =09private static final Log log =3D LogFactory.getLog(TestAction.class); > =09@Action(value =3D "test", results =3D { > =09=09=09@Result(name =3D "error", type =3D "stream", location =3D "input= Stream", params =3D {"contentType", "text/xml; charset=3DUTF-8" }), > =09=09=09@Result(name =3D "success", type =3D "stream", location =3D "inp= utStream", params =3D {"contentType", "text/xml; charset=3DUTF-8" }) > =09}) > =09public String execute() throws Exception { > =09=09try { > =09=09=09log.info("Start"); > =09=09=09inputStream =3D new ByteArrayInputStream("test"= .getBytes()); > =09=09=09log.info("End"); > =09=09=09return "success"; > =09=09} catch (Exception e) { > =09=09=09log.error(e.getMessage()); > =09=09=09return "error"; > =09=09} > =09} > } > {code} > {code:title=3DFirstInterceptor.java|borderStyle=3Dsolid} > package sample.interceptor; > import org.apache.commons.logging.Log; > import org.apache.commons.logging.LogFactory; > import com.opensymphony.xwork2.ActionInvocation; > import com.opensymphony.xwork2.interceptor.AbstractInterceptor; > public class FirstInterceptor extends AbstractInterceptor { > =09private static final Log log =3D LogFactory.getLog(FirstInterceptor.cl= ass); > =09@Override > =09public void init() { > =09=09super.init(); > =09} > =09@Override > =09public String intercept(ActionInvocation invocation) throws Exception = { > =09=09log.info("Start"); > =09=09String result =3D ""; > =09=09try { > =09=09=09result =3D invocation.invoke(); > =09=09} catch (Exception e) { > =09=09=09log.fatal(e.getMessage(), e); > =09=09=09return "error"; > =09=09} > =09=09log.info("End"); > =09=09return result; > =09} > } > {code} > {code:title=3DClientMain.java|borderStyle=3Dsolid} > package sample.client; > import java.io.IOException; > import java.util.ArrayList; > import java.util.List; > import org.apache.http.HttpResponse; > import org.apache.http.NameValuePair; > import org.apache.http.client.entity.UrlEncodedFormEntity; > import org.apache.http.client.methods.HttpPost; > import org.apache.http.impl.client.DefaultHttpClient; > import org.apache.http.message.BasicNameValuePair; > public class ClientMain { > =09public static void main(String[] args) { > =09=09try { > =09=09=09for(int i =3D 0 ; i < 10 ; i++) { > =09=09=09=09sendHttpRequest("http:////test"); > =09=09=09} > =09=09=09System.out.println("finish"); > =09=09} catch(Exception e) { > =09=09=09e.printStackTrace(); > =09=09} > =09} > =09private static void sendHttpRequest(final String url) throws IOExcepti= on { > =09=09HttpPost httpPost =3D null; > =09=09try { > =09=09=09httpPost =3D new HttpPost(url); > =09=09=09DefaultHttpClient httpclient =3D new DefaultHttpClient(); > =09=09=09List params =3D new ArrayList(); > =09=09=09params.add(new BasicNameValuePair("client_type", "")); > =09=09=09httpPost.setEntity(new UrlEncodedFormEntity(params, "UTF-8")); > =09=09=09HttpResponse response =3D httpclient.execute(httpPost); > =09=09=09if (response.getStatusLine().toString().indexOf(" 200 ") =3D=3D = -1) { > =09=09=09=09// do something > =09=09=09} > =09=09} finally { > =09=09=09if (httpPost !=3D null) { > =09=09=09=09httpPost.abort(); > =09=09=09} > =09=09} > } > } > {code} -- This message was sent by Atlassian JIRA (v6.2#6252)