3

私はドロップボックスのようなデスクトップベースのアプリケーションに取り組んでいますdownloadFile(long fileId).Webからファイルをダウンロードする機能があります.アプリケーションのデスクトップ側はJavaであり、Webサービスは.Netで記述されています.

netbeans を使用して WS クライアントを生成しました

問題は次downloadFile(long fileId)のとおりです。関数が動かなく なることがあります。

その背後にある理由が何であれ、Web サービス関数が特定の時間まで応答しない場合は、その関数からコントロールを奪い返し、しばらくしてから新しい呼び出しを生成します。Javaを使用することは可能ですか?

EDIT Webサービスからリクエストタイムアウトを設定できればできると思いますが、netbeansによって生成されたクライアントでタイムアウトを設定する方法がわかりません

4

2 に答える 2

5

FileUploadWeb サービスのルート クラス (netBeans によって生成) であるクラスには、スーパー クラスのクラスと関数のコンストラクタがいくつかあり、そのうちの 1 つを使用してオブジェクトを作成していました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);
于 2012-12-18T16:11:19.123 に答える
1

Web サービスの呼び出しに使用するフレームワークによっては、readTimeoutある種の例外で呼び出しが失敗するように設定する方法があります。

乾杯、

于 2012-12-14T13:07:43.340 に答える