質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

1回答

13586閲覧

Java apache HttpClientのconnectionRequestTimeoutとconnectTimeoutの違いについて

takenyaan

総合スコア119

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

2クリップ

投稿2015/12/28 10:14

JavaのHttpClientとしてapache HttpClient(4.5.1)を使用しています。

HTTPリクエストの設定において、connectionRequestTimeoutconnectTimeoutを設定することができますが、この2つの違いが判りません。

以下、getterのjavadocになりますが、知見ございましたらご教示いただけますと幸いです。

java

1 /** 2 * Returns the timeout in milliseconds used when requesting a connection 3 * from the connection manager. A timeout value of zero is interpreted 4 * as an infinite timeout. 5 * <p> 6 * A timeout value of zero is interpreted as an infinite timeout. 7 * A negative value is interpreted as undefined (system default). 8 * </p> 9 * <p> 10 * Default: {@code -1} 11 * </p> 12 */ 13 public int getConnectionRequestTimeout() { 14 return connectionRequestTimeout; 15 } 16 17 /** 18 * Determines the timeout in milliseconds until a connection is established. 19 * A timeout value of zero is interpreted as an infinite timeout. 20 * <p> 21 * A timeout value of zero is interpreted as an infinite timeout. 22 * A negative value is interpreted as undefined (system default). 23 * </p> 24 * <p> 25 * Default: {@code -1} 26 * </p> 27 */ 28 public int getConnectTimeout() { 29 return connectTimeout; 30 }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

getConnectionRequestTimeout
リクエストを送信してからレスポンスを受け取るまで何ミリ秒待つかという設定

getConnectTimeout
接続に何ミリ秒待つかという設定。

処理の流れとしては、
1.サーバへの接続要求送信
2.サーバからの接続確立受領
3.サーバへのリクエスト送信
4.サーバからのレスポンス受領
となりますが、

getConnectTimeout は、2.サーバからの接続確率受領 の部分でどれだけ待ってあきらめるか
getConnectionRequestTimeout は、4.サーバからのレスポンス受領 の部分でどれだけ待ってあきらめるか
に対応します。
違いは、"接続" と "リクエスト" という対象の違いになります。

投稿2015/12/28 14:44

編集2015/12/29 12:27
Hiroshi-Aoki

総合スコア804

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takenyaan

2015/12/29 04:33

ご回答ありがとうございます。 上記の説明で理解できましたが、そうなると今度は「getConnectionRequestTimeout 」と「socketTimeout」の違いはなんでしょうか。 この二つはやはり同じように思えてしまいます。 ``` /** * Defines the socket timeout ({@code SO_TIMEOUT}) in milliseconds, * which is the timeout for waiting for data or, put differently, * a maximum period inactivity between two consecutive data packets). * <p> * A timeout value of zero is interpreted as an infinite timeout. * A negative value is interpreted as undefined (system default). * </p> * <p> * Default: {@code -1} * </p> */ public int getSocketTimeout() { return socketTimeout; } ```
Hiroshi-Aoki

2015/12/29 12:26

getSocketTimeout ソケット通信におけるデータの受信(waiting for data)と送信(put)を何ミリ秒待つかという設定 getConnectionRequestTimeout との違いですが、これを説明するにあたっては、ソケット通信についての説明が少し必要です。 ソケット通信とは、PCとPCやPCとサーバが通信してデータをやりとりする基本的な仕組みです。IPアドレスとポート番号を指定してデータをそのあて先に送信したり、自PCのポート番号でデータが送達されるのを待って受信したりということを行います。 HttpClientでは接続やリクエストを送信したり、レスポンスを受信したりしますが、この裏側で動いているのがソケット通信です。HTTPの接続やリクエストはソケット通信を使っています。 ソケット通信は接続、送信、受信のすべてにかかわります。HttpClientで接続、リクエストで使いますが、HttpServerでも受信待機、レスポンス送信に使われます。 違いは、HTTPクライアント用のもの(getConnectionRequestTimeout)と基本的な仕組み用のもの(getSocketTimeout)という違いになります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問