ArrayIndexOutOfBoundsException stops the WLS_REPORTS Managed Server on 11g
ArrayIndexOutOfBoundsException stops the WLS_REPORTS Managed Server on 11g
Titleimage
Posted by Patrick Hamou on 2017:09:05 14:45:07
APPLIES TO:
Oracle Reports Developer - Version 11.1.1.6.0 to 11.1.2.2.0 [Release 11g]
Information in this document applies to any platform.
SYMPTOMS
While running reports using RWSERVLET command in Reports 11gR2, for some report requests users are getting the error: ArrayIndexOutOfBoundsException that brings the WLS_REPORTS managed server down.
http://hostname:port/reports/rwservlet?server=reportservername&userid=name/password&report=abc.rdf&desformat=PDF&destype=cache¶mform=YES
Error
WLS_REPORTS.log & WLS_REPORTS-diagnostic.log files will show below similar errors
####<Jul 7, 2014 6:03:00 PM IST> <Error> <HTTP> <INWPAPAPP60> <WLS_REPORTS> <[ACTIVE] ExecuteThread: '1' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <00iN2zpJDuiFw00Fzzw0w00000pO003DRG> <1404736380718> <BEA-101020> <[ServletContext@1313012353[app:reports module:/reports path:/reports spec-version:2.5 version:11.1.2]] Servlet failed with Exception
java.lang.ArrayIndexOutOfBoundsException: 0
at oracle.reports.utility.TraceHandler.writeln(TraceHandler.java:150)
at oracle.reports.rwclient.RWClient.runReport(RWClient.java:2197)
at oracle.reports.rwclient.RWClient.processRequest(RWClient.java:1988)
at oracle.reports.rwclient.RWClient.doGet(RWClient.java:512)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:301)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at oracle.security.jps.ee.http.JpsAbsFilter$1.run(JpsAbsFilter.java:119)
at java.security.AccessController.doPrivileged(Native Method)
at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:324)
at oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:460)
at oracle.security.jps.ee.http.JpsAbsFilter.runJaasMode(JpsAbsFilter.java:103)
at oracle.security.jps.ee.http.JpsAbsFilter.doFilter(JpsAbsFilter.java:171)
at oracle.security.jps.ee.http.JpsFilter.doFilter(JpsFilter.java:71)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at oracle.dms.servlet.DMSServletFilter.doFilter(DMSServletFilter.java:163)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3730)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3696)
CAUSE
StuckThreadMaxTime value was too low which caused the error/issue.
SOLUTION
1. Login to FMW 11g Administration Console.
2. Under Domain Structure section go to ClassicDomain > Environment > Servers
3. Select WLS_REPORTS managed server and Click Tuning tab.
4. Increase the 'Stuck Thread Max Time' value.
5. Restart server for the changes to take effect.
Stuck Thread Max Time The number of seconds that a thread must be continually working before this server considers the thread stuck.
For example: If you set this to 600 seconds, WebLogic Server considers a thread to be "stuck" after 600 seconds of continuous use.
In Web Logic Server 9.x and later, it is recommended that you use the ServerFailureTriggerMBean in the OverloadProtectionMBean. The ServerFailureTriggerMBean transitions the server to a FAILED state after the specified number of stuck threads are detected. The OverloadProtectionMBean has options to suspend or shutdown a failed server.
MBean Attribute: ServerMBean.StuckThreadMaxTime
Minimum value: 0
Maximum value: 2147483647
Posted by Patrick Hamou on 2017:09:05 14:45:07