Friday, January 23, 2009

DeploymentException, ArrayIndexOutOfBoundsException, OutOfMemoryError casued by Parlay X with Axis2

Problem:Using Axis2 client to make a webservice call to Parlay X service, might cause the following exceptions, eventually OutOfMemoryError.


2009-01-15 07:32:18,947 ERROR [org.apache.axis2.deployment.ModuleDeployer]
The mex-1.4.jar module, which is not valid, caused null
org.apache.axis2.deployment.DeploymentException
at org.apache.axis2.deployment.repository.util.ArchiveReader.readModuleArchive(ArchiveReader.java:531)
at org.apache.axis2.deployment.ModuleDeployer.deploy(ModuleDeployer.java:71)
at org.apache.axis2.deployment.repository.util.DeploymentFileData.deploy(DeploymentFileData.java:136)
at org.apache.axis2.deployment.DeploymentEngine.doDeploy(DeploymentEngine.java:597)
at org.apache.axis2.deployment.RepositoryListener.loadClassPathModules(RepositoryListener.java:195)
at org.apache.axis2.deployment.RepositoryListener.init2(RepositoryListener.java:70)
at org.apache.axis2.deployment.RepositoryListener.(RepositoryListener.java:63)
at org.apache.axis2.deployment.DeploymentEngine.loadFromClassPath(DeploymentEngine.java:164)
at org.apache.axis2.deployment.FileSystemConfigurator.getAxisConfiguration(FileSystemConfigurator.java:135)
at org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContext(ConfigurationContextFactory.java:68)
at org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContextFromFileSystem(ConfigurationContextFactory.java:184)
at org.apache.axis2.client.ServiceClient.configureServiceClient(ServiceClient.java:150)
at org.apache.axis2.client.ServiceClient.(ServiceClient.java:143)
at org.csapi.www.wsdl.parlayx.terminal_location.v2_0.service.TerminalLocationServiceStub.(TerminalLocationServiceStub.java:139)
at org.csapi.www.wsdl.parlayx.terminal_location.v2_0.service.TerminalLocationServiceStub.(TerminalLocationServiceStub.java:125)
at org.csapi.www.wsdl.parlayx.terminal_location.v2_0.service.TerminalLocationServiceStub.(TerminalLocationServiceStub.java:173)
at org.csapi.www.wsdl.parlayx.terminal_location.v2_0.service.TerminalLocationServiceStub.(TerminalLocationServiceStub.java:165)
.
.
.
Caused by: org.apache.axiom.om.OMException
at org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:243)
at org.apache.axiom.om.impl.llom.OMDocumentImpl.getOMDocumentElement(OMDocumentImpl.java:132)
at org.apache.axiom.om.impl.builder.StAXOMBuilder.getDocumentElement(StAXOMBuilder.java:411)
at org.apache.axis2.util.XMLUtils.toOM(XMLUtils.java:602)
at org.apache.axis2.util.XMLUtils.toOM(XMLUtils.java:581)
at org.apache.axis2.deployment.DescriptionBuilder.buildOM(DescriptionBuilder.java:97)
at org.apache.axis2.deployment.ModuleBuilder.populateModule(ModuleBuilder.java:90)
at org.apache.axis2.deployment.repository.util.ArchiveReader.readModuleArchive(ArchiveReader.java:518)
... 26 more



2009-01-05 00:57:01,845 ERROR [org.apache.axis2.deployment.ModuleDeployer]
The mex-1.4.jar module, which is not valid, caused java.lang.ArrayIndexOutOfBoundsException: -1
org.apache.axis2.deployment.DeploymentException: java.lang.ArrayIndexOutOfBoundsException: -1
at org.apache.axis2.deployment.repository.util.ArchiveReader.readModuleArchive(ArchiveReader.java:531)
at org.apache.axis2.deployment.ModuleDeployer.deploy(ModuleDeployer.java:71)
at org.apache.axis2.deployment.repository.util.DeploymentFileData.deploy(DeploymentFileData.java:136)
at org.apache.axis2.deployment.DeploymentEngine.doDeploy(DeploymentEngine.java:597)
at org.apache.axis2.deployment.RepositoryListener.loadClassPathModules(RepositoryListener.java:195)
at org.apache.axis2.deployment.RepositoryListener.init2(RepositoryListener.java:70)
at org.apache.axis2.deployment.RepositoryListener.(RepositoryListener.java:63)
at org.apache.axis2.deployment.DeploymentEngine.loadFromClassPath(DeploymentEngine.java:164)
at org.apache.axis2.deployment.FileSystemConfigurator.getAxisConfiguration(FileSystemConfigurator.java:135)
at org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContext(ConfigurationContextFactory.java:68)
at org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContextFromFileSystem(ConfigurationContextFactory.java:184)
at org.apache.axis2.client.ServiceClient.configureServiceClient(ServiceClient.java:150)
at org.apache.axis2.client.ServiceClient.(ServiceClient.java:143)
at org.csapi.www.wsdl.parlayx.terminal_location.v2_0.service.TerminalLocationServiceStub.(TerminalLocationServiceStub.java:139)
at org.csapi.www.wsdl.parlayx.terminal_location.v2_0.service.TerminalLocationServiceStub.(TerminalLocationServiceStub.java:125)
at org.csapi.www.wsdl.parlayx.terminal_location.v2_0.service.TerminalLocationServiceStub.(TerminalLocationServiceStub.java:173)
at org.csapi.www.wsdl.parlayx.terminal_location.v2_0.service.TerminalLocationServiceStub.(TerminalLocationServiceStub.java:165)
.
.
.
Caused by: org.apache.axiom.om.OMException: java.lang.ArrayIndexOutOfBoundsException: -1
at org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:249)
at org.apache.axiom.om.impl.llom.OMDocumentImpl.getOMDocumentElement(OMDocumentImpl.java:132)
at org.apache.axiom.om.impl.builder.StAXOMBuilder.getDocumentElement(StAXOMBuilder.java:411)
at org.apache.axis2.util.XMLUtils.toOM(XMLUtils.java:602)
at org.apache.axis2.util.XMLUtils.toOM(XMLUtils.java:581)
at org.apache.axis2.deployment.DescriptionBuilder.buildOM(DescriptionBuilder.java:97)
at org.apache.axis2.deployment.ModuleBuilder.populateModule(ModuleBuilder.java:90)
at org.apache.axis2.deployment.repository.util.ArchiveReader.readModuleArchive(ArchiveReader.java:518)
... 26 more
Caused by: java.lang.ArrayIndexOutOfBoundsException: -1
at com.sun.xml.stream.xerces.util.NamespaceSupport.pushContext(NamespaceSupport.java:178)
at com.sun.xml.stream.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:240)
at com.sun.xml.stream.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2599)
at com.sun.xml.stream.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:857)
at com.sun.xml.stream.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:330)
at com.sun.xml.stream.XMLReaderImpl.next(XMLReaderImpl.java:502)
at org.apache.axiom.om.impl.builder.StAXOMBuilder.parserNext(StAXOMBuilder.java:506)
at org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:161)
... 33 more

Solution:

Do not instantiate the object of the class that extends org.apache.axis2.client.Stub more than once per application, else it will keep loading the class mex-1.4.jar.

If it needs to be instantiated more than once, then make sure the instantiation method is synchronized. Beware that whenever the mex-1.4.jar is loaded, it will make a copy at the /tmp/ folder, make sure there is enough space to hold all those temp mex-1.4.jar

p.s. possibly related to this

http://issues.apache.org/jira/browse/AXIS2-1927

No comments:

Post a Comment