【Axis2】Axis2 のクライアント・スタブで、タイムアウト時間を変更するには...

はじめに

 * Axis2 のクライアント・スタブで、
 サーバ側の処理が重い時に、30秒(デフォルトのタイムアウト時間?)経過後に
  以下のようなエラーが発生した。

 内容からして、タイムアウトなので、タイムアウト時間を変更したいなっと思い調べてみて
 結局、自力で見つけたので、メモっておく。

エラー内容

org.apache.axis2.AxisFault: Read timed out
・・・略・・・
Caused by: java.net.SocketTimeoutException: Read timed out 

Axis2 のクライアント・スタブのタイムアウト時間の変更

構文

stub._getServiceClient().getOptions().setTimeOutInMilliSeconds(【タイムアウト時間[Milli Sec]】);

サンプル

http://blogs.yahoo.co.jp/dk521123/32003685.html
のサンプルをベースにしている。
(設定などについては、上記の記事を参照のこと)

Main.java

import java.util.ArrayList;
import java.util.List;

import org.apache.axis2.transport.http.HTTPConstants;
import org.apache.commons.httpclient.Header;

public class Main {
     public static void main(String[] args) {
          try {
               HelloWorldStub stub =
                         new HelloWorldStub("http://localhost:8080/Axis2Sample/services/HelloWorld");
               HelloWorldStub.SayHello request = new HelloWorldStub.SayHello();
               
               // ★ここ注目(300000ミリ秒=5分に設定)★
               stub._getServiceClient().getOptions().setTimeOutInMilliSeconds(300000);
               
               request.setName("Bob");
               HelloWorldStub.SayHelloResponse response = stub.sayHello(request);
               System.out.println(response.get_return());
          } catch (Exception ex) {
               ex.printStackTrace();
               System.err.println("\n\n");
          } finally {
          }
     }
}

関連記事

Axis2 で、クライアント・スタブから、Cookie を設定する

本記事を解決するきっかけとなった記事
http://blogs.yahoo.co.jp/dk521123/33122558.html