1

WSDLToJavaを使用してクライアントスタブを生成しました。その後、ここに記載されているようにクライアントを作成しました http://cxf.apache.org/docs/developing-a-consumer

this.testService = new TestService(wsdlURL, SERVICE_NAME); //line #1
    this.port = testService.getTestPort();          //line #2
    Client client = ClientProxy.getClient(port);        //line #3
    client.getInInterceptors().add(new LoggingInInterceptor());
    client.getOutInterceptors().add(new LoggingOutInterceptor());
    HTTPConduit conduit = (HTTPConduit)client.getConduit();
    // setting timeouts for connection
    String timeOutSecond = CoreProperty.getProp(CORE_SERVICE_TIME_OUT_MILLISECONDS);
    int timeout =0;
    try{
        if(Utils.isNotNullOrBlank(timeOutSecond))
            timeout = Integer.parseInt(timeOutSecond.trim());
        else
            timeout = Constants.DEFAULT_SERVICE_TIME_OUT_MILLISECONDS;
    }catch (NumberFormatException e) {
        timeout = Constants.DEFAULT_SERVICE_TIME_OUT_MILLISECONDS;
    }
    conduit.getClient().setReceiveTimeout(timeout);

問題は、サーバーがダウンしている場合、行#1がエラーをスローするのに約5分かかることです-で指定されていwsdlURLます。

クライアント接続を確立するために30秒の時間を設定したい。

サービスが稼働している場合、すべてが正常に機能しており、receivetimeoutは正常に機能するように設定しています。接続を確立するためのタイムアウトを設定するにはどうすればよいですか。 プログラムは1行目で待機しています。サーバーがダウンしている場合は、4分以上待機しているので、それを避けたいと思います。

御時間ありがとうございます。助けてください

4

1 に答える 1

2

唯一のオプションは、タイムアウトを短く設定する「http://servername.com/.*」という名前のhttp:conduitを構成するSpring構成ファイルを作成することだと思います。その構成ファイルからバスを作成します。見る:

http://cxf.apache.org/docs/client-http-transport-include-ssl-support.html

于 2012-04-23T16:21:36.303 に答える