2012-12-14 160 views
3

我正在開發一個基於桌面的應用程序,就像下拉框,我有一個功能downloadFile(long fileId),從web下載我的文件,應用程序的桌面端其中,Web服務.NET編寫如何設置Web服務客戶端的請求時間(Java)

的java我已經使用NetBeans

的問題是生成WS客戶端:它發生downloadFile(long fileId)功能卡住有些時候,

什麼都原因是如果網絡服務功能在給定時間內沒有給出任何響應,我希望從該功能中奪回控制權,並在一段時間後生成新的呼叫。是否有可能使用java?

編輯我認爲它可以做,如果可以設置請求超時的web服務,但我沒有想法如何設置超時通過NetBeans的

回答

5

在類FileUpload即根類的web服務(由NETBEANS產生)有類和超類的功能的一些構造函數,它們中的一個我使用來創建SOAP對象。這是尋找像

@WebEndpoint(name = "FileUploadSoap") 
public FileUploadSoap getFileUploadSoap() { 
    return super.getPort(new QName("http://svc.qleapahead.com/", 
    "FileUploadSoap"), FileUploadSoap.class); 
    } 

這個功能我爲了設置超時參數做了一些修改,這成爲像

@WebEndpoint(name = "FileUploadSoap") 
public FileUploadSoap getFileUploadSoap() { 
    FileUploadSoap fileUploadSoap = super.getPort(new QName(
      "http://svc.qleapahead.com/", "FileUploadSoap"), 
      FileUploadSoap.class); 
    ((BindingProvider) fileUploadSoap).getRequestContext().put(
      "com.sun.xml.internal.ws.request.timeout", 1000 * 2 * 60); 
    return fileUploadSoap; 
} 

和問題就解決了......

總之這種說法

幫助我很多

((BindingProvider) fileUploadSoap).getRequestContext().put(
       "com.sun.xml.internal.ws.request.timeout", 1000 * 2 * 60); 
1

根據生成的客戶端你用來調用web服務的框架,會有一些設置readTimeout的方法,導致調用失敗並出現某種異常。

乾杯,

+0

我的WS是基於SOAP的並且使用netbeans來生成客戶端來使用web服務,你能解釋如何設置readTimeOut? – NoNaMe

+1

'readTimeOut'是HTTP連接的屬性。我不熟悉Netbeans,但也許這個線程是有幫助的:http://stackoverflow.com/questions/9536616/setting-socket-read-timeout-with-javax-xml-soap-soapconnection –