You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by Anandaroop Roy <ro...@spacelab.net> on 2004/03/03 21:48:18 UTC

Map-backed ActionForm and java.lang.OutOfMemoryError

Hi,

In my application I am stumped by a problem with Map-backed ActionForms.

We have a couple of use cases where a user must update values for 
mutiple database rows/data objects at once. Persons objects are being 
updated with time and place information, let's say.

So I followed this recommendation...
http://jakarta.apache.org/struts/userGuide/building_controller.html#map_action_form_classes

...and added a few HashMaps to my form so that I could accept an 
arbitrary number of rows worth of data, each contained in a data bean 
which is keyed to the guid of the object to be updated. So Struts 
should pass my Action class a Form containing HashMaps such as the 
following:

personsToUpdate
-----------------------
guid123 => personBean1
guid456 => personBean2
guid789 => personBean3

This works fine for a small number of rows -- the number depends on 
what kind of object I'm updating but let's say up to 20 or so. Once I 
try to update more than that I get an Exception (see below) which 
seems to come deep from within catalina world, well before my Action 
can do anything about it.

Apparently the root cause is a java.lang.OutOfMemoryError, which I 
find hard to believe since the data sizes in question are so small, 
and dwarfed by other kinds of data input we do -- file uploads, etc.

Anybody seen or solved anything like this?

Thanks,
Roop



2004-02-26 18:54:52 StandardWrapperValve[radicalmedia]: 
Servlet.service() for servlet radicalmedia threw exception
javax.servlet.ServletException: Servlet execution threw an exception
         at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
         at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
         at 
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:226)
         at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:213)
         at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
         at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:243)
         at 
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
         at 
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
         at 
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
         at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:190)
         at 
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
         at 
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:531)
         at 
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
         at 
org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.java:246)
         at 
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
         at 
org.netbeans.modules.web.monitor.catalina.MonitorValve.invoke(MonitorValve.java:148)
         at 
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
         at 
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
         at 
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
         at 
org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2347)
         at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
         at 
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
         at 
org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
         at 
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
         at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:170)
         at 
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
         at 
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:468)
         at 
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
         at 
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
         at 
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
         at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
         at 
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
         at 
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
         at 
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
         at 
org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:1027)
         at 
org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1125)
         at java.lang.Thread.run(Thread.java:536)
----- Root Cause -----
java.lang.OutOfMemoryError

---------------------------------------------------------------------
To unsubscribe, e-mail: struts-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: struts-user-help@jakarta.apache.org