1 Reply Latest reply on May 22, 2007 7:46 AM by Ilya Shaikovsky

    Bug in RichFaces 3.0.1RCxx

    Melanie Ntolo Newbie

      I use the new drop-down-menu component in my tree. The nodes
      are represented as drop-down-menu. It is thus easy to define specific operations for each node.

      Since I integrated the drop-down-menu, it is impossible for me
      to expand my nodes.
      I get a runtime Error java.lang.ArrayIndexOutOfBoundsException: 8192.

      As you can note it in the trace, this error comes from the tomcat code.
      But the cause is in the internal representation of the
      components at Ajax4jsf level. In particular the representation of the
      identifiers.

      I followed the execution step by step until the method
      org.apache.coyote.http11.InternalOutputBuffer.write and I realized
      that indeed, the drop-down-menu components have identifiers with
      sometimes more than 10000 catactères thus higher than 8192
      which is fixed in the InternalOutputBuffer class of tomcat.

      Defining the id attribute in the tag < ddm:dropDownMenu
      id="ddm1"... > does not change anything. The Framework
      builds an intern id which can become very long according to the
      depth of the tree.

      For my specific case, I have something like this, just to
      give an example.

      _id2:_id4:com.topaz.domainservices.treenode.TPZSystemResourceBean@3b27613f:com.topaz.ejb.entity.TPZDomainBean@26627eef:adminDomainDdm_menu_script,
      _id2:_id4:com.topaz.domainservices.treenode.TPZSystemResourceBean@3b27613f:com.topaz.ejb.entity.TPZDomainBean@28e72baf:adminDomainDdm_menu_script,
      _id2:_id4:com.topaz.domainservices.treenode.TPZSystemResourceBean@3b27613f:com.topaz.ejb.entity.TPZDomainBean@429577df:adminDomainDdm_menu_script,
      _id2:_id4:com.topaz.domainservices.treenode.TPZSystemResourceBean@3b27613f:com.topaz.ejb.entity.TPZDomainBean@d5b791d1:adminDomainDdm_menu_script,
      _id2:_id4:com.topaz.domainservices.treenode.TPZSystemResourceBean@3b27613f:com.topaz.ejb.entity.TPZDomainBean@50889a7f:adminDomainDdm_menu_iframe,
      _id2:_id4:com.topaz.domainservices.treenode.TPZSystemResourceBean@3b27613f:com.topaz.ejb.entity.TPZDomainBean@b3d83e8f:adminDomainDdm_menu_script,
      _id2:_id4:com.topaz.domainservices.treenode.TPZSystemResourceBean@3b27613f:com.topaz.ejb.entity.TPZDomainBean@55d8fc9:com.topaz.ejb.entity.TPZOtuBean@b48a13b9:adminOtuDdm_menu_iframe,
      _id2:_id4:com.topaz.domainservices.treenode.TPZSystemResourceBean@3b27613f:com.topaz.ejb.entity.TPZDomainBean@4273009a:adminDomainDdm_menu_iframe,
      _id2:_id4:com.topaz.domainservices.treenode.TPZSystemResourceBean@3b27613f:com.topaz.ejb.entity.TPZDomainBean@55d8fc9:com.topaz.ejb.entity.TPZOtuBean@8753712d:adminOtuDdm_menu_iframe,
      _id2:_id4:com.topaz.domainservices.treenode.TPZSystemResourceBean@3b27613f:com.topaz.ejb.entity.TPZDomainBean@cc6bf7c:adminDomainDdm_menu_script,
      _id2:_id4:com.topaz.domainservices.treenode.TPZSystemResourceBean@3b27613f:com.topaz.ejb.entity.TPZDomainBean@ad30bbc1:adminDomainDdm_menu_script,
      _id2:_id4:com.topaz.domainservices.treenode.TPZSystemResourceBean@3b27613f:com.topaz.ejb.entity.TPZDomainBean@26626f6e:adminDomainDdm_menu_script,
      _id2:_id4:com.topaz.domainservices.treenode.TPZSystemResourceBean@3b27613f:com.topaz.ejb.entity.TPZDomainBean@3187015e:adminDomainDdm_menu_script,
      _id2:_id4:com.topaz.domainservices.treenode.TPZSystemResourceBean@3b27613f:com.topaz.ejb.entity.TPZDomainBean@3187015e:adminDomainDdm_menu_iframe,
      _id2:_id4:com.topaz.domainservices.treenode.TPZSystemResourceBean@3b27613f:com.topaz.ejb.entity.TPZDomainBean@94a9c90a:adminDomainDdm_menu_iframe,
      _id2:_id4:com.topaz.domainservices.treenode.TPZSystemResourceBean@3b27613f:com.topaz.ejb.entity.TPZDomainBean@4273009a:adminDomainDdm_menu_script,
      _id2:_id4:com.topaz.domainservices.treenode.TPZSystemResourceBean@3b27613f:com.topaz.ejb.entity.TPZDomainBean@55d8fc9:com.topaz.ejb.entity.TPZOtuBean@c27ea36a:adminOtuDdm_menu_iframe,
      _id2:_id4:com.topaz.domainservices.treenode.TPZSystemResourceBean@3b27613f:com.topaz.ejb.entity.TPZDomainBean@5902dc68:adminDomainDdm_menu_iframe,
      _id2:_id4:com.topaz.domainservices.treenode.TPZSystemResourceBean@3b27613f:com.topaz.ejb.entity.TPZDomainBean@b6022ecd:adminDomainDdm_menu_script,
      _id2:_id4:com.topaz.domainservices.treenode.TPZSystemResourceBean@3b27613f:com.topaz.ejb.entity.TPZDomainBean@b6022ecd:adminDomainDdm_menu_iframe,
      _id2:_id4:com.topaz.domainservices.treenode.TPZSystemResourceBean@3b27613f:com.topaz.ejb.entity.TPZDomainBean@55d8fc9:com.topaz.ejb.entity.TPZOtuBean@b48a13b9:adminOtuDdm_menu_script,
      _id2:_id4:com.topaz.domainservices.treenode.TPZSystemResourceBean@3b27613f:com.topaz.ejb.entity.TPZDomainBean@ad30bbc1:adminDomainDdm_menu_iframe,
      _id2:_id4:com.topaz.domainservices.treenode.TPZSystemResourceBean@3b27613f:com.topaz.ejb.entity.TPZDomainBean@35d5bb16:adminDomainDdm_menu_script,
      


      I urgently need an expert opinion.

      - How to prevent the framwork for defining the identifiers?
      - Am I doing something wrong?
      - Is this a bug of RichFaces which can be corrected before the official release of version 3.0.1?


      Thank you for your help.

      Hier is the code of my tree:

      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:ui="http://java.sun.com/jsf/facelets"
       xmlns:h="http://java.sun.com/jsf/html"
       xmlns:rich="http://richfaces.ajax4jsf.org/rich"
       xmlns:f="http://java.sun.com/jsf/core"
       xmlns:s="http://jboss.com/products/seam/taglib"
       xmlns:a4j="https://ajax4jsf.dev.java.net/ajax"
       xmlns:ddm="http://richfaces.ajax4jsf.org/dropdown-menu"
       xmlns:mc="http://richfaces.ajax4jsf.org/menu-components"
       xmlns:tr="http://myfaces.apache.org/trinidad"
       >
      
       <head>
       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
       <title>ADMIN's Tree</title>
       </head>
      
       <body>
       <script type="text/javascript" src="../../../seam/resource/remoting/resource/remote.js"></script>
       <script type="text/javascript" src="../../../seam/resource/remoting/interface.js?TPZAdminTreeBean"></script>
       <script type="text/javascript" src="/topaz/view/js/TPZAdmin.js" />
      
       <h:form >
       <div class="sample-container">
      
       <a4j:outputPanel layout="block" id="treePanel" ajaxRendered="#{TPZAdminTreeBean.ajaxRendered}">
      
       <rich:tree style="width:300px" value="#{TPZAdminTreeBean.data}" var="item"
       nodeFace="#{item.type}"
       ajaxSubmitSelection="true"
       icon="#{item.icon}"
       iconLeaf="#{item.iconLeaf}"
       switchType="ajax"
       binding="#{TPZAdminTreeBean.tree}"
       componentState="#{TPZAdminTreeBean.dataComponentState}">
      
       <rich:treeNode id="#{item == null ? 'adminSystemNode' : item.nodeId}" value="item" ajaxSubmitSelection="true" type="SYSTEM" nodeSelectListener="#{TPZAdminTreeBean.onTreeSelection}">
       <ddm:dropDownMenu id="#{item == null ? 'adminSystemDdm' : 'Ddm' + item.nodeId}" event="oncontextmenu" value="#{item.resource.name}">
       <mc:menuItem id="#{item == null ? 'adminSystemMc1' : 'Mc1' + item.nodeId}" value="Nouveau domaine" onclick="openNewWindow('../new/TPZAdminNewDomain.seam')"
       submitMode="ajax" ajaxSingle="true" icon="/view/images/goblet_gold_add24.png"
       action="#{TPZAdminTreeBean.setAjaxRender(false)}" immediate="true"/>
       </ddm:dropDownMenu>
       </rich:treeNode>
      
       <rich:treeNode id="#{item == null ? 'adminDomainNode' : item.nodeId}" value="item" ajaxSubmitSelection="true" type="DOMAIN" nodeSelectListener="#{TPZAdminTreeBean.onTreeSelection}" style="border:1px solid #{a4jSkin.panelBorderColor}">
       <a4j:outputPanel>
       <ddm:dropDownMenu id="#{item == null ? 'adminDomainDdm' : 'Ddm' + item.nodeId}" event="oncontextmenu" value="#{item.resource.name}">
       <mc:menuItem id="#{item == null ? 'adminDomainMc1' : 'Mc1' + item.nodeId}" value="Supprimer" submitMode="ajax" ajaxSingle="true" icon="/view/images/Clear16.png" action="#{TPZAdminTreeBean.deleteNode(item)}" reRender="treePanel"/>
       <mc:menuItem id="#{item == null ? 'adminDomainMc2' : 'Mc2' + item.nodeId}" value="Editer" submitMode="ajax" ajaxSingle="true" icon="/view/images/Edit16.png" onclick="openEditWindow('../edit/TPZAdminEditDomain.seam')" action="#{TPZAdminTreeBean.setNodeToEdit(item)}" reRender="treePanel" immediate="true"/>
       <mc:menuItem id="#{item == null ? 'adminDomainMc3' : 'Mc3' + item.nodeId}" value="Inserer un OTU" submitMode="ajax" ajaxSingle="true" onclick="openEditWindow('../new/TPZAdminNewOTU.seam')" action="#{TPZAdminTreeBean.setNewOtuParentDomain(item)}" reRender="treePanel" />
       </ddm:dropDownMenu>
       </a4j:outputPanel>
       </rich:treeNode>
      
       <rich:treeNode id="#{item == null ? 'adminLinkNode' : item.nodeId}" ajaxSubmitSelection="true" value="item" type="LINK" nodeSelectListener="#{TPZAdminTreeBean.onTreeSelection}">
      
       <ddm:dropDownMenu id="#{item == null ? 'adminLinkDdm' : 'Ddm' + item.nodeId}" event="oncontextmenu" value="#{item.resource.name}">
       <mc:menuItem id="#{item == null ? 'adminLinkMc1' : 'Mc1' + item.nodeId}" value="Afficher les details" submitMode="ajax" ajaxSingle="true" action="#{TPZAdminTreeBean.forwardToDetailPage('LINK')}" onclick="changePageURL('LINK')" reRender="treePanel"/>
       <mc:menuSeparator/>
       <mc:menuItem id="#{item == null ? 'adminLinkMc2' : 'Mc2' + item.nodeId}" value="Deplacer vers" submitMode="ajax" ajaxSingle="true" onclick="openMoveWindow('../move/TPZMoveDomainList.seam')" action="#{TPZAdminTreeBean.setNodeToMove(item)}" reRender="treePanel" immediate="true"/>
       <mc:menuItem id="#{item == null ? 'adminLinkMc3' : 'Mc3' + item.nodeId}" value="Copier vers" submitMode="ajax" ajaxSingle="true" onclick="openMoveWindow('../move/TPZCopyDomainList.seam')" action="#{TPZAdminTreeBean.setNodeToMove(item)}" reRender="treePanel" immediate="true"/>
       </ddm:dropDownMenu>
      
       </rich:treeNode>
      
       <rich:treeNode id="#{item == null ? 'adminSectionNode' : item.nodeId}" name="adminServiceNode" value="item" ajaxSubmitSelection="true" type="SECTION" nodeSelectListener="#{TPZAdminTreeBean.onTreeSelection}">
      
       <ddm:dropDownMenu id="#{item == null ? 'adminSectionDdm' : 'Ddm' + item.nodeId}" event="oncontextmenu" value="#{item.resource.name}">
       <mc:menuItem id="#{item == null ? 'adminSectionMc1' : 'Mc1' + item.nodeId}" value="Afficher les details" submitMode="ajax" ajaxSingle="true" action="#{TPZAdminTreeBean.forwardToDetailPage('SECTION')}" onclick="changePageURL('SECTION')" reRender="treePanel"/>
       <mc:menuSeparator/>
       <mc:menuItem id="#{item == null ? 'adminSectionMc2' : 'Mc2' + item.nodeId}" value="Deplacer vers" submitMode="ajax" ajaxSingle="true" onclick="openMoveWindow('../move/TPZMoveDomainList.seam')" action="#{TPZAdminTreeBean.setNodeToMove(item)}" reRender="treePanel" immediate="true"/>
       <mc:menuItem id="#{item == null ? 'adminSectionMc3' : 'Mc3' + item.nodeId}" value="Copier vers" submitMode="ajax" ajaxSingle="true" onclick="openMoveWindow('../move/TPZCopyDomainList.seam')" action="#{TPZAdminTreeBean.setNodeToMove(item)}" reRender="treePanel" immediate="true"/>
       </ddm:dropDownMenu>
       </rich:treeNode>
      
       <rich:treeNode id="#{item == null ? 'adminOtauNode' : item.nodeId}" name="adminOtauNode" value="item" ajaxSubmitSelection="true"
       type="OTAU" nodeSelectListener="#{TPZAdminTreeBean.onTreeSelection}">
       <h:outputText value="#{item.resource.name}" />
       </rich:treeNode>
      
       <rich:treeNode id="#{item == null ? 'adminOtuNode' : item.nodeId}" ajaxSubmitSelection="true" value="item" type="OTU" nodeSelectListener="#{TPZAdminTreeBean.onTreeSelection}">
      
       <ddm:dropDownMenu id="#{item == null ? 'adminOtuDdm' : 'Ddm' + item.nodeId}" event="oncontextmenu" value="#{item.resource.name}">
       <mc:menuItem id="#{item == null ? 'adminOtuMc1' : 'Mc1' + item.nodeId}" value="Afficher les details" submitMode="ajax" ajaxSingle="true" action="#{TPZAdminTreeBean.forwardToDetailPage('OTU')}" onclick="changePageURL('OTU')" reRender="treePanel"/>
       <mc:menuSeparator/>
       <mc:menuItem id="#{item == null ? 'adminOtuMc2' : 'Mc2' + item.nodeId}" value="Supprimer" submitMode="ajax" ajaxSingle="true" icon="/view/images/Clear16.png" action="#{TPZAdminTreeBean.deleteNode(item)}" reRender="treePanel"/>
       <mc:menuItem id="#{item == null ? 'adminOtuMc3' : 'Mc3' + item.nodeId}" value="Editer" submitMode="ajax" ajaxSingle="true" icon="/view/images/Edit16.png" onclick="openMoveWindow('../move/TPZCopyDomainList.seam')" action="#{TPZAdminTreeBean.setNodeToMove(item)}" reRender="treePanel" immediate="true"/>
       <mc:menuItem id="#{item == null ? 'adminOtuMc4' : 'Mc4' + item.nodeId}" value="Deplacer vers" submitMode="ajax" ajaxSingle="true" onclick="openMoveWindow('../move/TPZMoveDomainList.seam')" action="#{TPZAdminTreeBean.setNodeToMove(item)}" reRender="treePanel" immediate="true"/>
       <mc:menuItem id="#{item == null ? 'adminOtuMc5' : 'Mc5' + item.nodeId}" value="Copier vers" submitMode="ajax" ajaxSingle="true" onclick="openMoveWindow('../move/TPZCopyDomainList.seam')" action="#{TPZAdminTreeBean.setNodeToMove(item)}" reRender="treePanel" immediate="true"/>
       </ddm:dropDownMenu>
      
       </rich:treeNode>
      
       </rich:tree>
      
       </a4j:outputPanel>
      
       </div>
       </h:form>
      
       </body>
      
      </html>
      


      Hier is the exception trace:
      java.lang.ArrayIndexOutOfBoundsException: 8192
       at org.apache.coyote.http11.InternalOutputBuffer.write(InternalOutputBuffer.java:720)
       at org.apache.coyote.http11.InternalOutputBuffer.write(InternalOutputBuffer.java:627)
       at org.apache.coyote.http11.InternalOutputBuffer.sendHeader(InternalOutputBuffer.java:500)
       at org.apache.coyote.http11.Http11Processor.prepareResponse(Http11Processor.java:1615)
       at org.apache.coyote.http11.Http11Processor.action(Http11Processor.java:962)
       at org.apache.coyote.Response.action(Response.java:180)
       at org.apache.coyote.http11.InternalOutputBuffer.doWrite(InternalOutputBuffer.java:572)
       at org.apache.coyote.Response.doWrite(Response.java:559)
       at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:361)
       at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:324)
       at org.apache.tomcat.util.buf.IntermediateOutputStream.write(C2BConverter.java:235)
       at sun.nio.cs.StreamEncoder$CharsetSE.writeBytes(StreamEncoder.java:336)
       at sun.nio.cs.StreamEncoder$CharsetSE.implFlushBuffer(StreamEncoder.java:404)
       at sun.nio.cs.StreamEncoder$CharsetSE.implFlush(StreamEncoder.java:408)
       at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:152)
       at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:213)
       at org.apache.tomcat.util.buf.WriteConvertor.flush(C2BConverter.java:184)
       at org.apache.tomcat.util.buf.C2BConverter.flushBuffer(C2BConverter.java:127)
       at org.apache.catalina.connector.OutputBuffer.realWriteChars(OutputBuffer.java:536)
       at org.apache.tomcat.util.buf.CharChunk.flushBuffer(CharChunk.java:439)
       at org.apache.tomcat.util.buf.CharChunk.append(CharChunk.java:294)
       at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:456)
       at org.apache.catalina.connector.CoyoteWriter.write(CoyoteWriter.java:142)
       at org.ajax4jsf.io.FastBufferWriter.writeTo(FastBufferWriter.java:165)
       at org.ajax4jsf.org.w3c.tidy.Tidy.pprint(Tidy.java:689)
       at org.ajax4jsf.framework.ajax.xmlfilter.tidy.TidyParser.parseHtmlByTidy(TidyParser.java:191)
       at org.ajax4jsf.framework.ajax.xmlfilter.tidy.TidyParser.parseHtml(TidyParser.java:203)
       at org.ajax4jsf.framework.ajax.xmlfilter.FilterServletResponseWrapper.parseContent(FilterServletResponseWrapper.java:613)
       at org.ajax4jsf.framework.ajax.xmlfilter.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:271)
       at org.ajax4jsf.framework.ajax.xmlfilter.BaseFilter.doFilter(BaseFilter.java:277)
       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
       at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
       at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
       at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
       at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
       at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
       at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175)
       at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74)
       at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
       at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
       at org.jboss.web.tomcat.tc5.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:156)
       at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
       at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
       at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
       at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
       at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
       at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
       at java.lang.Thread.run(Thread.java:595)
      17:23:04,593 ERROR [STDERR] java.lang.ArrayIndexOutOfBoundsException
      17:23:04,593 ERROR [STDERR] at java.lang.System.arraycopy(Native Method)
      17:23:04,593 ERROR [STDERR] at org.apache.coyote.http11.InternalOutputBuffer.write(InternalOutputBuffer.java:689)
      17:23:04,593 ERROR [STDERR] at org.apache.coyote.http11.InternalOutputBuffer.sendStatus(InternalOutputBuffer.java:428)
      17:23:04,593 ERROR [STDERR] at org.apache.coyote.http11.Http11Processor.prepareResponse(Http11Processor.java:1604)
      17:23:04,593 ERROR [STDERR] at org.apache.coyote.http11.Http11Processor.action(Http11Processor.java:962)
      17:23:04,593 ERROR [STDERR] at org.apache.coyote.Response.action(Response.java:180)
      17:23:04,593 ERROR [STDERR] at org.apache.coyote.http11.InternalOutputBuffer.doWrite(InternalOutputBuffer.java:572)
      17:23:04,593 ERROR [STDERR] at org.apache.coyote.Response.doWrite(Response.java:559)
      17:23:04,593 ERROR [STDERR] at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:361)
      17:23:04,593 ERROR [STDERR] at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:433)
      17:23:04,593 ERROR [STDERR] at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:314)
      17:23:04,593 ERROR [STDERR] at org.apache.catalina.connector.OutputBuffer.close(OutputBuffer.java:278)
      17:23:04,593 ERROR [STDERR] at org.apache.catalina.connector.Response.finishResponse(Response.java:476)
      17:23:04,593 ERROR [STDERR] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
      17:23:04,593 ERROR [STDERR] at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
      17:23:04,593 ERROR [STDERR] at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
      17:23:04,593 ERROR [STDERR] at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
      17:23:04,593 ERROR [STDERR] at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
      17:23:04,593 ERROR [STDERR] at java.lang.Thread.run(Thread.java:595)
      17:23:04,593 ERROR [Http11Processor] Error finishing response
      java.lang.ArrayIndexOutOfBoundsException
       at java.lang.System.arraycopy(Native Method)
       at org.apache.coyote.http11.InternalOutputBuffer.write(InternalOutputBuffer.java:689)
       at org.apache.coyote.http11.InternalOutputBuffer.sendStatus(InternalOutputBuffer.java:428)
       at org.apache.coyote.http11.Http11Processor.prepareResponse(Http11Processor.java:1604)
       at org.apache.coyote.http11.Http11Processor.action(Http11Processor.java:962)
       at org.apache.coyote.Response.action(Response.java:180)
       at org.apache.coyote.http11.InternalOutputBuffer.endRequest(InternalOutputBuffer.java:388)
       at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:906)
       at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
       at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
       at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
       at java.lang.Thread.run(Thread.java:595)