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

110
Vistas
Pérdidas de memoria en Java y Spring usando JaxWsProxyFactoryBean

Tengo una aplicación en Java que usa CXF para hacer llamadas a un servicio web. El código para el iniciador parece

 importar org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
importar org.springframework.core.env.Environment;
importar org.springframework.stereotype.Component;
importar org.tempuri.IAPIService;

importar javax.inyectar.Inyectar;

/**
 * Creado por flavius el 23/09/14.
 */
@Componente()
clase pública VsJaxWsProxyFactory {

  @Inyectar
  Entorno privado env;

  privado JaxWsProxyFactoryBean factoryBean = null;

  Objeto público crear () {
    si (factoryBean == nulo) {

      factoryBean = new JaxWsProxyFactoryBean();
      factoryBean.setServiceClass(IAPIService.clase);
      factoryBean.setAddress(env.getProperty("api.wsdl"));
    }
    volver factoryBean.create();
  }
}

La aplicación funciona bien, pero después de un tiempo, la caja comienza a consumir demasiada memoria y la aplicación comienza a funcionar lentamente. Cuando intentamos hacer un análisis de memoria encontramos lo siguienteAnálisis de memoria

Parece que CXF de alguna manera está creando un nuevo objeto de configuración de servicio en cada llamada y no se está liberando. No puedo encontrar mucha información sobre la clase org.apache.cxf.jaxws.support.JaxWsServiceConfiguration y no estoy seguro de si se trata de un problema de configuración o algún error interno en alguna biblioteca.

about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Ya respondido aquí: Apache CXF no libera clientes

Básicamente, el método .create() en la misma instancia de JaxWsProxyFactoryBean debe llamarse solo una vez , de lo contrario, se produce una pérdida de memoria:

 return factoryBean.create();

factoryBean.create() devuelve el proxy del cliente cxf JAX-WS, que puede reutilizar para llamadas repetidas . El cliente creado también es seguro para subprocesos si no usa ninguna de las funciones especiales mencionadas aquí http://cxf.apache.org/faq.html#FAQ-AreJAX-WSclientproxiesthreadsafe?

about 4 years ago · Santiago Trujillo Denunciar
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