Il y a 389 articles et 19 utilisateurs inscrits (ce bandeau est défini dans MediaWiki:Sitenotice)
ArrayIndexOutOfBoundsException avec OAI
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"/>