はじめに
* 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