2014-10-16 115 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