Consultor Eletrônico



Kbase P112498: An error occurs when sending large XML documents as parameters through an OpenEdge Web Service
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   4/3/2009
Status: Verified

SYMPTOM(s):

An error occurs when sending large XML documents as parameters through an OpenEdge Web Service

Web service operation <operation-name> generated a SOAP Fault. SOAP faultstring is: An error was detected while executing the Web Service request. (10893) (11506)

The WSA crashes with a stack trace when passing large XML documents as parameters

error deleting session reference = com.progress.open4gl.dynamicapi.Session

com.progress.open4gl.Open4GLException: Disconnect failure: NULL. (7205)

Error in SOAP request execution: java.lang.OutOfMemoryError: Java heap space:Java heap space (10926)

The problem does not occur after decreasing the size of the XML document

Using RPC/Encoded for the OpenEdge Web Service

FACT(s) (Environment):

OpenEdge 10.x
Web Services
Tomcat 4.1
Tomcat 5.5
All Supported Operating Systems

CAUSE:

The JVM which is used by Tomcat has run out of memory.

FIX:

You need to increase the Java heap size of the JVM which is being used by Tomcat.
Tomcat Windows Service:
When using the Tomcat 4.1 Windows service, you need to add/change the following Strings to the HKLM\System\CurrentControlSet\Services\Apache Tomcat 4.1\Parameters registry key, for example:
"JVM Option Count" = 6
"JVM Option Number 4" = -Xms8m
"JVM Option Number 5" = -Xmx256m
Note: You may need different values depending on your initial amount of parameters.
When using the Tomcat 5.5 Windows service, you need to add/change the following DWORD decimal values of the HKLM\Software\Apache Software Foundation\Procrun 2.0\tomcat5\Parameters\Java registry key, for example:
JvmMs = 8
JvmMx = 256
You can also use the "Configure Tomcat" shortcut and specify the amount of memory in the Java tab for the "Initial memory pool" and "Maximum memory pool".
Note: Refer to the Tomcat documentation on how to increase the Java heap size when not using the Window service.

On UNIX:
Set in catalina.sh the JAVA_OPTS environment variable.
Could be: -Xms64m -Xmx512m
Example:
JAVA_OPTS="-Xms64m -Xmx512m"; export JAVA_OPTS