2014-10-16 116 views
0

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

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

我正在使用一个JaxWsProxyFactoryBean注入我的服务方法。下面一行被调用来创建客户端代理(呼吁请求发送到Web服务):

jaxWsProxyFactoryBean.create(); 

最终服务方式完成,但它看起来像工厂拥有参考客户端代理,因此从来没有GCs它。

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

我应该这样做吗?

回答

0

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

+0

谢谢,我已经结束了实施这个以及 – mnik 2014-10-21 09:00:03

+0

@mnik你可以请参考实施。你是如何解决这个问题的。我面临类似的问题 – Dinesh 2017-07-17 16:12:00

+0

@dinesh我只运行create()一次,并将其作为类变量存储 – mnik 2017-07-18 17:44:29