0

I do have a Java web app(strust2) and it does use the struts2-json plugin, for handling json requests. Recently, I came down to an error Java Heap Space which is very strange.

This is in my struts.xml

      <action name="saveSigned"
        class="org.xxx.xxx.xxx.action.marriage.SaveSigned">
        <interceptor-ref name="json">
            <param name="enableSMD">true</param>
        </interceptor-ref>

            <result type="json">  
            <param name="contentType">application/json</param>                  
            </result>           
        <param name="requiredAuthorities">F_ADD_MARRIAGE</param>

    </action>

The JSON data is generated and sent to this action saveSigned. This is the JSON data which is being sent:

encodedBase64:"somebase64encodeddata", uuId:"someUUID"

So I send only these 2 variables to be automatically handled by struts2-json plugin. Based on uuId I get some data from the database.. and this is where I get the error. I dont understand why it give me jave heap error bacause of struts2-json, when in the code I dont use it.

This is the pieace of code which throws this error:

marriage = xxxRegisterService.getMarriageUuId(getUuId());

The error itself

java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOf(Arrays.java:3332) at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:137) at java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:121) at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:421) at java.lang.StringBuilder.append(StringBuilder.java:136) at java.lang.StringBuilder.append(StringBuilder.java:131) at org.apache.struts2.json.JSONWriter.add(JSONWriter.java:578) at org.apache.struts2.json.JSONWriter.array(JSONWriter.java:498) at org.apache.struts2.json.JSONWriter.process(JSONWriter.java:158) at org.apache.struts2.json.JSONWriter.value(JSONWriter.java:134) at org.apache.struts2.json.JSONWriter.add(JSONWriter.java:401) at org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:231) at org.apache.struts2.json.JSONWriter.processCustom(JSONWriter.java:178) at org.apache.struts2.json.JSONWriter.process(JSONWriter.java:168) at org.apache.struts2.json.JSONWriter.value(JSONWriter.java:134) at org.apache.struts2.json.JSONWriter.array(JSONWriter.java:492) at org.apache.struts2.json.JSONWriter.process(JSONWriter.java:158) at org.apache.struts2.json.JSONWriter.value(JSONWriter.java:134) at org.apache.struts2.json.JSONWriter.add(JSONWriter.java:401) at org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:231) at org.apache.struts2.json.JSONWriter.processCustom(JSONWriter.java:178) at org.apache.struts2.json.JSONWriter.process(JSONWriter.java:168) at org.apache.struts2.json.JSONWriter.value(JSONWriter.java:134) at org.apache.struts2.json.JSONWriter.array(JSONWriter.java:492) at org.apache.struts2.json.JSONWriter.process(JSONWriter.java:158) at org.apache.struts2.json.JSONWriter.value(JSONWriter.java:134) at org.apache.struts2.json.JSONWriter.add(JSONWriter.java:401) at org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:231) at org.apache.struts2.json.JSONWriter.processCustom(JSONWriter.java:178) at org.apache.struts2.json.JSONWriter.process(JSONWriter.java:168) at org.apache.struts2.json.JSONWriter.value(JSONWriter.java:134) at org.apache.struts2.json.JSONWriter.array(JSONWriter.java:492)

So, the struts2-json assigns only 1 simple text uuId.. and based on that uuId im getting some data from database and then assign it to the variable.

The strange part is that, everything works fine.. I can see all changes in the database, the application returns success but only after a minute it throws this error..

Daler
  • 1,205
  • 3
  • 18
  • 39

0 Answers0