Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

113
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda