axis-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Lee, Ken" <>
Subject RE: Passing large data in SOAP Message
Date Wed, 19 May 2004 14:40:12 GMT
I have been working on solutions to this problem for the last month.  In
my case, I convert a resultset to a document using a simple method:  I
don't have the person I received this code from referenced (oops!).  If
you need the imports for this, just let me know.

	private static Document toDocument(ResultSet rs) throws
ParserConfigurationException, SQLException {
		DocumentBuilderFactory factory =
		DocumentBuilder builder        =
		Document doc                   = builder.newDocument();

		Element results = doc.createElement("Results");

		ResultSetMetaData rsmd = rs.getMetaData();
		int colCount           = rsmd.getColumnCount();

		/* System.out.println("Starting to build Document"); */
		while ( {
			Element row = doc.createElement("Row");
			for (int i = 1; i <= colCount; i++) {
				String columnName =
				String value      = rs.getString(i);
				Element node      =
		/* System.out.println("Document created"); */
		return doc;

To get around memory problems, I did two things, added memory to the web
server, and changed the memory settings to use quite a bit of memory on
the jvm.  In tomcat, I use the following JAVA_OPTS setting: "-Xms256m
-Xmx256m -DentityExpansionLimit=1000000"  The -DentityExpansionLimit
change came from a comment by Nelson Minar on this forum.

I still don't have an answer that would send the document back
compressed, and using DIME or some other chunking mechanism.  I just
haven't figured it out yet.

I hope some of this may help.  I am not sure Web services is the right
answer for sending large amounts of data.  I have also been looking at
using SSH tunnels to access the data directly in a secure manner.  The
speed has actually been better than all of the hoops that SOAP has be
jumping through.

For smaller datasets, SOAP is working great!

Hope this helps.  I also hope that someone else with knowledge working
with large output objects will provide more enlightenment!


>  -----Original Message-----
> From: 	Vinod Patil [] 
> Sent:	Tuesday, May 18, 2004 10:40 PM
> To:
> Subject:	Passing large data in SOAP Message
> Hi All,
>  A type java:MSG service should have the signatures as 
> --public Element [] method(Element [] bodies) 
> --public SOAPBodyElement [] method (SOAPBodyElement [] bodies) 
> --public Document method(Document body) 
> --public void method(SOAPEnvelope req, SOAPEnvelope resp)
> Now if the XML that i am going to embed in the body of the 
> message is very large (say abt 3+ Mb) then the output objects 
> of the service methods will be also be large in size.
> And this will lead to memory problems.
> What i want to ask is that how do we pass very large XML's in 
> the SOAP messages...What approach should be taken if one 
> wants to pass very large XML data in the SOAP message body? 
> I am currently using the messaging style service ( with 
> signature public SOAPBodyElement [] method (SOAPBodyElement 
> [] bodies)  ) but i am running into OutOfMemory problems...
> This is because the Document object that we use to construct 
> the SOAPBodyElement is very large.
> Can anyone please guide me regarding the approcah that needs 
> to be taken in case of passing back huge XML data from a 
> webservice using Axis or any SOAP Implementation?
> Regards,
> Vinod

View raw message