Monday, July 13, 2009

Weblogic 10 java.lang.ArrayIndexOutOfBoundsException: 110162

I was having a frustrating problem (see stack trace below) when deploying a spring-security enabled application on weblogic over the last couple of weeks, and was having extreme difficulties tracking down the issue.

My codebase is using jaxen (via spring-security-core), which caused "java.lang.ArrayIndexOutOfBoundsException: 110162" on weblogic deployment. Jaxen comes with a whole heap of transitive dependencies.

The solution for me was to exclude all jaxen transitive dependencies:
* dom4j.dom4j
* jdom.jdom
* xerces.xercesImpl
* xml-apis.xml-apis
* xom.xom

Hope this helps someone else in the world. It certainly frustrated me for a considerable amount of time.

< 13/07/2009 11:41:58 AM EST> < obEnterpriseServerJRockit> <[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'> <> <> <> <1247449318795> java.lang.ArrayIndexOutOfBoundsException: 110162
at serp.bytecode.lowlevel.ConstantPoolTable.readUnsignedShort(ConstantPoolTable.java:88)
at serp.bytecode.lowlevel.ConstantPoolTable.readUnsignedShort(ConstantPoolTable.java:153)
at org.apache.openjpa.lib.meta.ClassAnnotationMetaDataFilter.matches(ClassAnnotationMetaDataFilter.java:67)
at weblogic.application.utils.ClassFinderMetaDataEnumaration.hasMoreElements(ClassFinderMetaDataEnumaration.java:55)
at weblogic.servlet.internal.WebAnnotationProcessorImpl.getAnnotatedClasses(WebAnnotationProcessorImpl.java:127)
at weblogic.servlet.internal.War.getAnnotatedClasses(War.java:774)
at weblogic.servlet.internal.War.getAnnotatedClasses(War.java:755)
at weblogic.servlet.internal.WebAppHelper.processAnnotations(WebAppHelper.java:112)
at weblogic.servlet.internal.WebAppHelper.(WebAppHelper.java:57)
at weblogic.servlet.internal.WebAppServletContext.(WebAppServletContext.java:402)
at weblogic.servlet.internal.WebAppServletContext.(WebAppServletContext.java:452)
at weblogic.servlet.internal.HttpServer.loadWebApp(HttpServer.java:402)
at weblogic.servlet.internal.WebAppModule.registerWebApp(WebAppModule.java:582)
at weblogic.servlet.internal.WebAppModule.prepare(WebAppModule.java:298)
at weblogic.application.internal.flow.ScopedModuleDriver.prepare(ScopedModuleDriver.java:176)
at weblogic.application.internal.flow.ModuleListenerInvoker.prepare(ModuleListenerInvoker.java:93)
at weblogic.application.internal.flow.DeploymentCallbackFlow$1.next(DeploymentCallbackFlow.java:360)
at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:26)
at weblogic.application.internal.flow.DeploymentCallbackFlow.prepare(DeploymentCallbackFlow.java:56)
at weblogic.application.internal.flow.DeploymentCallbackFlow.prepare(DeploymentCallbackFlow.java:46)
at weblogic.application.internal.BaseDeployment$1.next(BaseDeployment.java:615)
at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:26)
at weblogic.application.internal.BaseDeployment.prepare(BaseDeployment.java:191)
at weblogic.application.internal.DeploymentStateChecker.prepare(DeploymentStateChecker.java:147)
at weblogic.deploy.internal.targetserver.AppContainerInvoker.prepare(AppContainerInvoker.java:61)
at weblogic.deploy.internal.targetserver.operations.ActivateOperation.createAndPrepareContainer(ActivateOperation.java:189)
at weblogic.deploy.internal.targetserver.operations.ActivateOperation.doPrepare(ActivateOperation.java:87)
at weblogic.deploy.internal.targetserver.operations.AbstractOperation.prepare(AbstractOperation.java:217)
at weblogic.deploy.internal.targetserver.DeploymentManager.handleDeploymentPrepare(DeploymentManager.java:719)
at weblogic.deploy.internal.targetserver.DeploymentManager.prepareDeploymentList(DeploymentManager.java:1186)
at weblogic.deploy.internal.targetserver.DeploymentManager.handlePrepare(DeploymentManager.java:248)
at weblogic.deploy.internal.targetserver.DeploymentServiceDispatcher.prepare(DeploymentServiceDispatcher.java:157)
at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.doPrepareCallback(DeploymentReceiverCallbackDeliverer.java:157)
at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.access$000(DeploymentReceiverCallbackDeliverer.java:12)
at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer$1.run(DeploymentReceiverCallbackDeliverer.java:45)
at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:464)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:200)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:172)

2 comments:

kumar said...

I too getting this error, did you fix this?

Shaun said...

Hi Kumar,

I'm using maven and it was pulling in a whole bunch of transitive dependencies.

As per what this post says, the solution for me was to exclude all jaxen transitive dependencies:
* dom4j.dom4j
* jdom.jdom
* xerces.xercesImpl
* xml-apis.xml-apis
* xom.xom