我必須實現一個web服務客戶端到一個給定的WSDL文件。 我使用SDK的'wsimport'工具從WSDL創建Java類以及將web服務的唯一方法(enhanceAddress(auth, param, address)
)封裝到簡單的java方法中的類。到現在爲止還挺好。 webservice功能正常,返回結果正確。代碼如下所示:在java web服務客戶端連接的詳細信息和超時
try {
EnhancedAddressList uniservResponse = getWebservicePort().enhanceAddress(m_auth, m_param, uniservAddress);
//Where the Port^ is the HTTP Soap 1.2 Endpoint
}catch (Throwable e) {
throw new AddressValidationException("Error during uniserv webservice request.", e);
}
現在的問題:我需要得到有關的連接,以及可能發生,爲了充實各種JMX值的任何錯誤信息(如COUNT_READ_TIMEOUT,COUNT_CONNECT_TIMEOUT,...) 不幸的是,該方法沒有正式拋出任何異常,因此爲了獲得有關ConnectException的詳細信息,我需要在ClientTransportException
上使用getCause()
這將拋出。
更糟糕的是:我試圖測試讀取超時值,但沒有。我在wsdl文件中更改了服務的位置,將請求發送到一個只等到永遠不會返回的php腳本。猜猜看:Web服務客戶端不是超時,但也一直在等待(我在等待30多分鐘後殺死了應用程序)。這對我的應用程序來說不是一個選項,因爲如果我終於用完了TCP連接,如果它們中的一些被卡住了。
enhanceAddress(auth, param, address)
方法未實現,但用javax.jws註釋。*註解,這意味着我無法查看/更改/檢查實際執行的代碼。
我有什麼選擇,但要扔掉整個wsimport/javax.jsw東西,並實施我自己的肥皂客戶端?
由於2周前我遇到了問題,我寫了自己的客戶端。儘管如此,我測試了你的方法,它正在工作!當時我確實找到了一段類似的代碼,但是當我嘗試轉換爲BindingProvider時,它不知何故給了我一個ClassCastException。 – f1sh 2010-06-29 12:32:03
我有一個類似的問題,但超時發生在我得到端口時,我該如何解決? – maugch 2016-08-04 19:23:43