【发布时间】:2017-04-13 06:38:48
【问题描述】:
我有一个使用 CXF 调用 Web 服务的 Java 应用程序。发起者的代码看起来像
导入 org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
导入 org.springframework.core.env.Environment;
导入 org.springframework.stereotype.Component;
导入 org.tempuri.IAPIService;
导入 javax.inject.Inject;
/**
* 由 flavius 于 2014 年 9 月 23 日创建。
*/
@零件()
公共类 VsJaxWsProxyFactory {
@注入
私有环境环境;
私有 JaxWsProxyFactoryBean factoryBean = null;
公共对象创建(){
if (factoryBean == null) {
factoryBean = new JaxWsProxyFactoryBean();
factoryBean.setServiceClass(IAPIService.class);
factoryBean.setAddress(env.getProperty("api.wsdl"));
}
返回 factoryBean.create();
}
}
应用程序运行良好,但一段时间后,盒子开始消耗太多内存,应用程序开始运行缓慢。当我们尝试进行内存分析时,我们发现以下内容
似乎 CXF 在每次调用时都会以某种方式创建一个新的服务配置对象,并且没有被释放。我在 org.apache.cxf.jaxws.support.JaxWsServiceConfiguration 类上找不到太多信息,也不确定这是配置问题还是某些库中的一些内部错误。
【问题讨论】:
标签: java spring memory-leaks cxf