Google
 

星期日, 9月 16, 2007

Timeout and Retry Problems of JAVA 6 Webservice

昨天寫 Webservice 遇到的問題 ......
由於我的 Webservice 程式需要花比較多的時間,才能跑完,這牽涉到了 Connection Timeout 的問題。
Timeout 也就算了,不過因為我的程式是去 Query Database,Timeout 之後,我發現那支程式又被執行了一次;應該這樣說,似乎每次 Timeout 後,Client 端的 Webservice 程式會再去 call Server 端的 Webservice 程式。
這樣造成我的 database loading 增加,且也浪費了不少資源。
怎麼辦呢? Java 應該有那種控制 Timeout 或 Retry 的 API 之類的東西吧?!不過我都沒有找到哩 @@

後來發現有一個 Annotation - @Oneway (javax.jws.Oneway):
Indicates that the given @WebMethod has only an input message and no output. Typically, a oneway method returns the thread of control to the calling application prior to executing the actual business method.

本來我的程式就沒有 return value,運算的結果都存到 Databse 裡面,在原本的 @WebMethod 後面再加上 @Oneway,就解決了我的問題,呵呵!

附帶一提,Flex 的 Webservice 有一個 logout() 的 Function,也可以應用在這裡 ^^

沒有留言: