Il y a 389 articles et 19 utilisateurs inscrits (ce bandeau est défini dans MediaWiki:Sitenotice)

ArrayIndexOutOfBoundsException avec OAI

De AJLSM
Version datée du 30 octobre 2014 à 16:51 par Ctate (discussion | contributions)
(diff) ← Version précédente | Version actuelle (diff) | Version suivante → (diff)
Aller à la navigation Aller à la recherche

Dans l'application basse-bretagne, certaines requêtes OAI ne marchent pas et dans catalina.out on peut voir :

java.lang.ArrayIndexOutOfBoundsException: 8192
        at org.apache.jk.common.MsgAjp.appendByte(MsgAjp.java:129)
        at org.apache.jk.common.MsgAjp.appendString(MsgAjp.java:235)
        at org.apache.jk.common.MsgAjp.appendBytes(MsgAjp.java:160)
        at org.apache.jk.common.JkInputStream.appendHead(JkInputStream.java:319)
        at org.apache.jk.core.MsgContext.action(MsgContext.java:266)
        at org.apache.coyote.Response.action(Response.java:183)
        at org.apache.coyote.Response.sendHeaders(Response.java:379)
        at org.apache.jk.common.JkInputStream.doWrite(JkInputStream.java:141)
        at org.apache.coyote.Response.doWrite(Response.java:560)
        at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:364)
        at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:448)
        at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:363)
        at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:392)
        at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:381)
        at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:89)
        at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:83)
        at org.apache.cocoon.components.notification.Notifier.notifyHTML(Notifier.java:104)
        at org.apache.cocoon.components.notification.Notifier.notify(Notifier.java:51)
        at org.apache.cocoon.servlet.CocoonServlet.manageException(CocoonServlet.java:1317)
        at org.apache.cocoon.servlet.CocoonServlet.service(CocoonServlet.java:1203)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
        at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
        at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:311)
        at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:776)
        at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:705)
        at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:898)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
        at java.lang.Thread.run(Thread.java:662)

Pour corriger le problème, il faut ajouté dans la configuration apache pour le serveur :

<VirtualHost *:80>
        LimitRequestFieldSize 81920
        ProxyIOBufferSize 81920

Aussi pour tomcat, il faut avoir un Connector HTTP avec maxHttpHeaderSize comme :

    <Connector port="20880" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               maxHttpHeaderSize="8192000"
               redirectPort="20843" />

Et un Connector AJP avec packetSize comme :

    <Connector port="20809" 
        protocol="AJP/1.3" 
        redirectPort="20843" 
        maxThreads="150" 
        emptySessionPath="true"  
        packetSize="8192000"/>