Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

181
Vistas
Leer XML de solicitud de Soap que contiene 20 MB de contenido de archivo doc en una etiqueta/atributo xml en la aplicación Spring Integration usando alrededor de 500 MB de memoria

En nuestra aplicación, usamos Spring Integration/Soap Web Service y Spring Boot. Tenemos un flujo en la integración de Spring que recibe un XML de entrada que tiene una etiqueta llamada <content> que contiene los datos del documento que necesitamos cargar. Dado que es Spring Integration, recibimos estos datos XML como objeto de origen. estamos convirtiendo este objeto de origen en String xml. Veo que el uso de la memoria en JVM se dispara hasta 500 MB cuando se produce esta transformación de fuente a cadena, aunque el contenido del xml es de solo 20 MB. También en Visual VM veo un gran uso de memoria por parte de char [].

Incluso probé con marshaller y marshaller inbound gateway pero el mismo problema.

 **<int-ws:inbound-gateway id="uploadDocuments" request-channel="uploaddoc" error-channel="errorChannel" header-mapper="xyz" marshaller="abcjaxbmarshaller" unmarshaller="abcjaxbmarshaller"/>**

Incluso escribí un filtro simple solo para ver si el problema está relacionado con Spring Integration, pero lo que encontré es que cuando leo el xml de ServletRequest en el objeto String, la memoria se dispara nuevamente a alrededor de 500 MB.

 @Component public class UploadDocumentFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { // TODO Auto-generated method stub } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest) request; String test = request.getReader().lines().collect(Collectors.joining(System.lineSeparator())); System.out.println("the input is " + test); } @Override public void destroy() { // TODO Auto-generated method stub } }

El xml de solicitud está codificado en Base64. No puedo justificar el aumento de tamaño de un archivo de 20 MB a un uso de memoria de 500 MB. ¿Podría alguien explicarme por qué hay tanto aumento en la memoria y la posible solución a esto?

over 4 years ago · Santiago Trujillo
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda