2013-04-08 82 views
1

我想用JAX-WS生成的代理調用webservice。Jax-ws客戶端:初始化速度很慢

WSDL相對較小(11kB),只有3個操作,並且存儲在本地。

但是,當我嘗試初始化端口,它卡住10-20秒在這條線在標準輸出:

在檢索文檔 「文件:/ C:/路徑/到/ web應用/的WebContent/WEB-INF/WSDL /」。

對應於new MyServicePort(new URL(wsdlLocation)),和的wsdl的讀數。

對web服務的所有後續調用均正常工作,並且速度很快(每次調用時爲< 200 ms)。

new MyServicePort(new URL(wsdlLocation))後續調用也快...

是這樣的響應時間正常合理spec'ed的電腦嗎? (核心i5 + 8GB內存)

+0

確實wsdl包含遠程URL的模式導入嗎? – jtahlborn 2013-04-08 13:40:55

+0

不,沒有遠程URL,除了命名空間 – Mikarnage 2013-04-08 14:48:21

+0

你應該附上一個分析器,看看它在哪裏花時間。別的什麼都只是猜測。 – jtahlborn 2013-04-08 15:05:06

回答

0

由於正在創建代理對象並且框架工作初始化進行WS調用所需的所有類,所以在應用程序啓動後第一次Web服務調用通常很慢。

一個常見的解決方法是讓你的服務公開一些不會做任何事的存根方法),當你的應用程序啓動時,調用這個存根。 這將在後臺創建服務代理對象,以及應用程序實際向服務發出呼叫的時間,一切都準備就緒。

+0

不應花費10-20秒來創建一些代理對象。 – jtahlborn 2013-04-08 14:11:52

+0

它依賴於服務器到服務器,因爲在我們的例子中,我們使用的是網絡邏輯,第一次調用需要50-60秒,當我們在JBoss中嘗試時,需要20-30秒。谷歌對於「第一次WS呼叫很慢」,你會發現很多信息。 – NullPointerException 2013-04-08 14:17:12