java - Apache CXF 未释放客户端

标签 java apache web-services cxf jax-ws

我发现我的应用程序内存严重泄漏。进行堆转储后,Apache CXF (2.7.7) 似乎引用了大量 JaxWsServiceConfiguration(一天 14000 个)。

我不确定我是否正确使用它,是否需要以某种方式释放客户端或者 CXF 中存在错误。希望有人能在这里指出正确的方向。

我正在使用注入(inject)到我的服务方法中的JaxWsProxyFactoryBean。调用以下行来创建客户端代理(针对对 Web 服务的每个请求调用):

jaxWsProxyFactoryBean.create();

最终服务方法完成,但看起来工厂保存了对客户端代理的引用,因此永远不会对其进行GC。

我以为我可以创建一个静态客户端并始终使用它,但我对此有点紧张,因为它在所有情况下都不是线程安全的:http://cxf.apache.org/faq.html#FAQ-AreJAX-WSclientproxiesthreadsafe

我应该采取不同的做法吗?

最佳答案

当我构建网关来代表数百个并发客户端使用 Web 服务时,我一直使用静态代理。只要不针对给定请求修改拦截器链,例如修改管道或使用 session ,就应该没有问题。

关于java - Apache CXF 未释放客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26403674/

相关文章:

java - Selenium无效选择器异常: Locator startegy 'name' is not supported for this session

java - Log4j2 自定义包装器

java - 找不到 Hibernate 异常 hibernate.cfg.xml

java - 使用 Arraylist 实现邻接列表

apache - 网络问题后 geode 客户端无法连接到服务器和定位器

java - 使用 RESTEasy 在服务器端接受 XML

Apache:操作指令未激活 CGI 脚本

apache - WAMP是否可以以用户[myself]而不是本地SYSTEM的身份运行httpd.exe?

java - 如何使用java删除或隐藏Http响应错误

web-services - 针对不同操作的 REST 设计