2011-09-14 22 views
1

Eclipseウィザードを使用してWebサービスを作成し、Webクライアントを生成しました。 クライアントアプリケーションがStringObjectを要求しています。 文字列が正常に取得し、私はそれが次の例外を与えるオブジェクトを(私はJBossの5を使用しています)を取得しようとしたときにすることができます。スレッド "main"の例外org.apache.axis2.AxisFault:読み取りタイムアウト

Exception in thread "main" org.apache.axis2.AxisFault: Read timed out 
at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430) 
at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:203) 
at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:76) 
at org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:400) 
at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:225) 
at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:435) 
at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:402) 
at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229) 
at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165) 
at se.cambio.cimonitor.ws.implmnt.GetDataStub.retrieveDetails(GetDataStub.java:203) 
at se.cambio.cimonitor.ws.client.WebServiceClient.main(WebServiceClient.java:44) 
Caused by: java.net.SocketTimeoutException: Read timed out 
at java.net.SocketInputStream.socketRead0(Native Method) 
at java.net.SocketInputStream.read(SocketInputStream.java:129) 
at java.io.BufferedInputStream.fill(BufferedInputStream.java:218) 
at java.io.BufferedInputStream.read(BufferedInputStream.java:237) 
at org.apache.commons.httpclient.HttpParser.readRawLine(HttpParser.java:77) 
at org.apache.commons.httpclient.HttpParser.readLine(HttpParser.java:105) 
at org.apache.commons.httpclient.HttpConnection.readLine(HttpConnection.java:1115) 
at org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$HttpConnectionAdapter.readLine(MultiThreadedHttpConnectionManager.java:1373) 
at org.apache.commons.httpclient.HttpMethodBase.readStatusLine(HttpMethodBase.java:1832) 
at org.apache.commons.httpclient.HttpMethodBase.readResponse(HttpMethodBase.java:1590) 
at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:995) 
at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:397) 
at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:170) 
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:396) 
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:346) 
at org.apache.axis2.transport.http.AbstractHTTPSender.executeMethod(AbstractHTTPSender.java:560) 
at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:199) 

私は方法を見つけることができない、私を助けてください。

+0

取得しようとしているオブジェクトのサイズに関するご意見はありますか? – Santosh

+0

オブジェクトを処理しているサーバー側のコードが処理に時間がかかっていないかどうかも確認してください。 – Santosh

答えて

2

私はあなたが配置した唯一の例外スタックトレースからの助けを提供することができます。例外の

根本な原因は次のとおりです。

によって引き起こさ

:java.net.SocketTimeoutException:リード

をタイムアウトになったことは、ソケットがしようとしたときにタイムアウトが発生したことを意味します読んだり受け入れる。あなたのケースでは、読み取りタイムアウトがありました。

サービスサーバーボックスへのソケットタイムアウトは何かを把握する必要があります。できれば、それを無期限にする必要があります。

+0

タイムアウトを増やすには? ajax2の設定はありますか? – Danijel

+1

@Danijel [この記事](http://architects.dzone.com/articles/how-configure-timeout-duration)は、どのようにするかを示しています。 –

0

最後に、私はこの問題を克服できました。私のオブジェクトは、その中の別のオブジェクトを含むオブジェクトでした。次に、Stringとintで1つのオブジェクトを作成し、正常に送信できます。

は、私がプロジェクトでこのエラーに遭遇した

+0

詳細をお知らせください。私はシマーエラーがあり、それは私を夢中にさせている... – Danijel

1

...ありがとう、そして根本的な原因は、プロキシサーバーの設定でした。プロキシを変更して、攻撃しようとしていたサービスへの通信を許可する必要がありました。私のコードは、独自のプロキシを使用するカスタムアプリケーションの一部として実行されていました。これはまた試すものかもしれません。

0

長い解析の結果、トランスポートプロトコルのバージョンが一致していないことが判明した後、同様の問題が発生し、セキュリティ保護されたWebサービスを呼び出す際にRead Time Outが発生しました。 Webサービスはhttp1.0でサービスを提供しており、http1.1を使用して呼び出していました。この問題を解決するクライアントコードでプロトコルバージョンを変更しました。

以下は、httpバージョン1.0のオプションを指定するコードです.setProperty(org.apache.axis2.transport.http.HTTPConstants.HTTP_PROTOCOL_VERSION、org.apache。 .HTTPConstants.HEADER_PROTOCOL_10);

関連する問題