WS y Java Heap Space al subir ficheros

cancel
Showing results for 
Search instead for 
Did you mean: 
tremalnaik
Member II

WS y Java Heap Space al subir ficheros

Hola a todos,

Estoy aquí partiéndome los cuernos con un WS que crea una sentencia CMLWrite para mandar un contenido de 14MB.

El error procede de AXIS, que es la versión 1.4:

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
   at java.lang.String.<init>(Unknown Source)
   at org.apache.axis.encoding.Base64.encode(Base64.java:207)
   at org.apache.axis.encoding.ser.Base64Serializer.getValueAsString(Base64Serializer.java:71)
   at org.apache.axis.encoding.ser.Base64Serializer.serialize(Base64Serializer.java:54)
   at org.apache.axis.encoding.SerializationContext.serializeActual(SerializationContext.java:1504)
   at org.apache.axis.encoding.SerializationContext.serialize(SerializationContext.java:980)
   at org.apache.axis.encoding.SerializationContext.serialize(SerializationContext.java:734)
   at org.apache.axis.encoding.ser.BeanSerializer.serialize(BeanSerializer.java:230)
   at org.apache.axis.encoding.SerializationContext.serializeActual(SerializationContext.java:1504)
   at org.apache.axis.encoding.SerializationContext.serialize(SerializationContext.java:980)
   at org.apache.axis.encoding.SerializationContext.serialize(SerializationContext.java:734)
   at org.apache.axis.encoding.ser.BeanSerializer.serialize(BeanSerializer.java:247)
   at org.apache.axis.encoding.SerializationContext.serializeActual(SerializationContext.java:1504)
   at org.apache.axis.encoding.SerializationContext.serialize(SerializationContext.java:980)
   at org.apache.axis.encoding.SerializationContext.serialize(SerializationContext.java:801)
   at org.apache.axis.message.RPCParam.serialize(RPCParam.java:208)
   at org.apache.axis.message.RPCElement.outputImpl(RPCElement.java:433)
   at org.apache.axis.message.MessageElement.output(MessageElement.java:1208)
   at org.apache.axis.message.SOAPBody.outputImpl(SOAPBody.java:139)
   at org.apache.axis.message.SOAPEnvelope.outputImpl(SOAPEnvelope.java:478)
   at org.apache.axis.message.MessageElement.output(MessageElement.java:1208)
   at org.apache.axis.message.MessageElement.getAsString(MessageElement.java:1111)
   at org.apache.axis.message.MessageElement.getAsDocument(MessageElement.java:1079)
   at org.apache.ws.axis.security.WSDoAllSender.invoke(WSDoAllSender.java:158)
   at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
   at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
   at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
   at org.apache.axis.client.AxisClient.invoke(AxisClient.java:127)
   at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
   at org.apache.axis.client.Call.invoke(Call.java:2767)
   at org.apache.axis.client.Call.invoke(Call.java:2443)
   at org.apache.axis.client.Call.invoke(Call.java:2366)

El fichero de 14MB se transforma en un array de bytes y se inserta en:


CMLWriteContent writeContent = new CMLWriteContent();

writeContent.setContent(content.getContenido());

Donde getContenido() devuelve el citado array de bytes.

Estoy con la versión 3.4.d, y esta ejecución me falla tanto lanzándola desde un main de java como de una aplicación JSP.

Gracias!!
2 Replies
rmacian
Member II

Re: WS y Java Heap Space al subir ficheros

Alfresco no guarda los datos que llegan del stream a disco directamente si no que los guarda a memoria y una vez tiene el documento completo en memoria es cuando hace el volcado al dispositivo de almacenamiento.

Si estas arrancando Alfresco con los valores por defecto de 512mb esto hará que la memoria ya ande justa en el arranque. En cuanto intentas cargar al documento como el que comentas esa memoria se consume y tienes el heap como consecuencia.

debes modificar el parámetro -Xmx  de la variable JAVA_OPTS  del script de arranque y subirla un poco dependiendo de la memoria que tengas disponible. Es probable que para desarrollo con 640m tengas de sobras
tremalnaik
Member II

Re: WS y Java Heap Space al subir ficheros

Ok, así sí que ha marchado. Muchas gracias Smiley Happy