Axis 1.3 OutOfMemory error when serializing a Java Object Graph
---------------------------------------------------------------
Key: AXIS-2460
URL: http://issues.apache.org/jira/browse/AXIS-2460
Project: Apache Axis
Type: Bug
Components: Serialization/Deserialization
Versions: 1.3
Environment: Software: Axis 1.3, Websphere 5.1.1, Windows XP, XALAN 2.6, Java
VM Heap size is set at 512M, Spring 1.2, Hibernate 3,
Hardware: Intel 2 Ghz, 1GB RAM
Reporter: Mohit Keswani
We have created a web service which returns a big result set with 80000
records. Each record contains First Name(Java String), Last Name (Java String),
Account number (Java String), Open Date (java Calendar), SSN (Java String).
Once Axis tries to serialize the Java object to SOAP XML it core dumps the Java
VM because of OutOfMemory error.
We are using document literal encoding.
WSDL for Service
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions targetNamespace="http://service.hsa.bankserv.exante.uhg.com"
xmlns:apachesoap="http://xml.apache.org/xml-soap"
xmlns:impl="http://service.hsa.bankserv.exante.uhg.com"
xmlns:intf="http://service.hsa.bankserv.exante.uhg.com"
xmlns:tns2="http://beans.accdetails.hsa.bankserv.exante.uhg.com"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<!--WSDL created by Apache Axis version: 1.3
Built on Oct 05, 2005 (05:23:37 EDT)-->
<wsdl:types>
<schema elementFormDefault="qualified"
targetNamespace="http://beans.accdetails.hsa.bankserv.exante.uhg.com"
xmlns="http://www.w3.org/2001/XMLSchema">
<complexType name="AccountsByMemberIDRequestBean">
<sequence>
<element name="branch" nillable="true" type="xsd:string"/>
<element name="customerNumber" nillable="true" type="xsd:string"/>
<element name="memberID" nillable="true" type="xsd:string"/>
<element name="plan" nillable="true" type="xsd:string"/>
</sequence>
</complexType>
<complexType name="AccountDetailBean">
<sequence>
<element name="accountNumber" nillable="true" type="xsd:string"/>
<element name="firstName" nillable="true" type="xsd:string"/>
<element name="lastName" nillable="true" type="xsd:string"/>
<element name="middleInitial" nillable="true" type="xsd:string"/>
<element name="openDate" nillable="true" type="xsd:dateTime"/>
<element name="ssn" nillable="true" type="xsd:string"/>
</sequence>
</complexType>
<complexType name="CustomerAccDtlBean">
<sequence>
<element maxOccurs="unbounded" name="accountDetails" nillable="true"
type="tns2:AccountDetailBean"/>
<element name="customerNumber" nillable="true" type="xsd:string"/>
</sequence>
</complexType>
<complexType name="AccountsResponseBean">
<sequence>
<element name="branch" nillable="true" type="xsd:string"/>
<element maxOccurs="unbounded" name="customerDetails" nillable="true"
type="tns2:CustomerAccDtlBean"/>
<element name="customerNumber" nillable="true" type="xsd:string"/>
<element name="message" nillable="true" type="xsd:string"/>
<element name="plan" nillable="true" type="xsd:string"/>
<element name="ssn" nillable="true" type="xsd:string"/>
</sequence>
</complexType>
<complexType name="AccountsByCustomerRequestBean">
<sequence>
<element name="branch" nillable="true" type="xsd:string"/>
<element name="customerNumber" nillable="true" type="xsd:string"/>
<element name="plan" nillable="true" type="xsd:string"/>
</sequence>
</complexType>
<complexType name="AccountsByPayerRequestBean">
<sequence>
<element name="branch" nillable="true" type="xsd:string"/>
<element name="plan" nillable="true" type="xsd:string"/>
</sequence>
</complexType>
</schema>
<schema elementFormDefault="qualified"
targetNamespace="http://service.hsa.bankserv.exante.uhg.com"
xmlns="http://www.w3.org/2001/XMLSchema">
<import namespace="http://beans.accdetails.hsa.bankserv.exante.uhg.com"/>
<element name="in0" type="tns2:AccountsByMemberIDRequestBean"/>
<element name="getAccountByMemberIDReturn" type="tns2:AccountsResponseBean"/>
<element name="in1" type="tns2:AccountsByCustomerRequestBean"/>
<element name="getAccountsByCustomerReturn"
type="tns2:AccountsResponseBean"/>
<element name="in2" type="tns2:AccountsByPayerRequestBean"/>
<element name="getAccountsByPayerReturn" type="tns2:AccountsResponseBean"/>
</schema>
</wsdl:types>
<wsdl:message name="getAccountsByCustomerRequest">
<wsdl:part element="impl:in1" name="in0"/>
</wsdl:message>
<wsdl:message name="getAccountsByCustomerResponse">
<wsdl:part element="impl:getAccountsByCustomerReturn"
name="getAccountsByCustomerReturn"/>
</wsdl:message>
<wsdl:message name="getAccountsByPayerResponse">
<wsdl:part element="impl:getAccountsByPayerReturn"
name="getAccountsByPayerReturn"/>
</wsdl:message>
<wsdl:message name="getAccountByMemberIDResponse">
<wsdl:part element="impl:getAccountByMemberIDReturn"
name="getAccountByMemberIDReturn"/>
</wsdl:message>
<wsdl:message name="getAccountsByPayerRequest">
<wsdl:part element="impl:in2" name="in0"/>
</wsdl:message>
<wsdl:message name="getAccountByMemberIDRequest">
<wsdl:part element="impl:in0" name="in0"/>
</wsdl:message>
<wsdl:portType name="AccountDetailsService">
<wsdl:operation name="getAccountByMemberID" parameterOrder="in0">
<wsdl:input message="impl:getAccountByMemberIDRequest"
name="getAccountByMemberIDRequest"/>
<wsdl:output message="impl:getAccountByMemberIDResponse"
name="getAccountByMemberIDResponse"/>
</wsdl:operation>
<wsdl:operation name="getAccountsByCustomer" parameterOrder="in0">
<wsdl:input message="impl:getAccountsByCustomerRequest"
name="getAccountsByCustomerRequest"/>
<wsdl:output message="impl:getAccountsByCustomerResponse"
name="getAccountsByCustomerResponse"/>
</wsdl:operation>
<wsdl:operation name="getAccountsByPayer" parameterOrder="in0">
<wsdl:input message="impl:getAccountsByPayerRequest"
name="getAccountsByPayerRequest"/>
<wsdl:output message="impl:getAccountsByPayerResponse"
name="getAccountsByPayerResponse"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="AccountDetailsSoapBinding"
type="impl:AccountDetailsService">
<wsdlsoap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="getAccountByMemberID">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="getAccountByMemberIDRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="getAccountByMemberIDResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="getAccountsByCustomer">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="getAccountsByCustomerRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="getAccountsByCustomerResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="getAccountsByPayer">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="getAccountsByPayerRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="getAccountsByPayerResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="AccountDetailsServiceService">
<wsdl:port binding="impl:AccountDetailsSoapBinding" name="AccountDetails">
<wsdlsoap:address
location="http://localhost:9080/BankServices/hsa/AccountDetails"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira