public class SimpleHttpInvokerRequestExecutor extends AbstractHttpInvokerRequestExecutor
HttpInvokerRequestExecutor 実装。HTTP 認証や高度な構成オプションはサポートされていません。 特定のテンプレートメソッドをカスタマイズして、簡単にサブクラス化できるように設計されています。ただし、より高度なニーズについては HttpComponentsHttpInvokerRequestExecutor を検討してください。標準の HttpURLConnection クラスは、その機能がかなり制限されています。
HttpURLConnectionCONTENT_TYPE_SERIALIZED_OBJECT, ENCODING_GZIP, HTTP_HEADER_ACCEPT_ENCODING, HTTP_HEADER_ACCEPT_LANGUAGE, HTTP_HEADER_CONTENT_ENCODING, HTTP_HEADER_CONTENT_LENGTH, HTTP_HEADER_CONTENT_TYPE, HTTP_METHOD_POST, logger| コンストラクターと説明 |
|---|
SimpleHttpInvokerRequestExecutor() |
| 修飾子と型 | メソッドと説明 |
|---|---|
protected RemoteInvocationResult | doExecuteRequest(HttpInvokerClientConfiguration config, java.io.ByteArrayOutputStream baos) 標準の HttpURLConnection を介して指定されたリクエストを実行します。 |
protected boolean | isGzipResponse(java.net.HttpURLConnection con) 指定されたレスポンスが GZIP レスポンスかどうかを判別します。 |
protected java.net.HttpURLConnection | openConnection(HttpInvokerClientConfiguration config) 指定されたリモート呼び出しリクエストの HttpURLConnection を開きます。 |
protected void | prepareConnection(java.net.HttpURLConnection connection, int contentLength) 指定された HTTP 接続を準備します。 |
protected java.io.InputStream | readResponseBody(HttpInvokerClientConfiguration config, java.net.HttpURLConnection con) 指定された実行済みのリモート呼び出しリクエストからレスポンス本文を抽出します。 |
void | setConnectTimeout(int connectTimeout) 基礎となる URLConnection の接続タイムアウトを設定します(ミリ秒単位)。 |
void | setReadTimeout(int readTimeout) 基礎となる URLConnection の読み取りタイムアウトを設定します(ミリ秒単位)。 |
protected void | validateResponse(HttpInvokerClientConfiguration config, java.net.HttpURLConnection con) 指定されたレスポンスを HttpURLConnection オブジェクトに含まれているものとして検証し、成功した HTTP レスポンスに対応していない場合は例外をスローします。 |
protected void | writeRequestBody(HttpInvokerClientConfiguration config, java.net.HttpURLConnection con, java.io.ByteArrayOutputStream baos) 指定された直列化されたリモート呼び出しをリクエスト本文として設定します。 |
createObjectInputStream, decorateInputStream, decorateOutputStream, doReadRemoteInvocationResult, doWriteRemoteInvocation, executeRequest, getBeanClassLoader, getByteArrayOutputStream, getContentType, isAcceptGzipEncoding, readRemoteInvocationResult, setAcceptGzipEncoding, setBeanClassLoader, setContentType, writeRemoteInvocationpublic void setConnectTimeout(int connectTimeout)
デフォルトは、システムのデフォルトのタイムアウトです。
URLConnection.setConnectTimeout(int)public void setReadTimeout(int readTimeout)
デフォルトは、システムのデフォルトのタイムアウトです。
URLConnection.setReadTimeout(int)protected RemoteInvocationResult doExecuteRequest(HttpInvokerClientConfiguration config, java.io.ByteArrayOutputStream baos) throws java.io.IOException, java.lang.ClassNotFoundException
HttpURLConnection を介して指定されたリクエストを実行します。このメソッドは、基本的な処理ワークフローを実装します。実際の作業は、このクラスのテンプレートメソッドで行われます。
AbstractHttpInvokerRequestExecutor の doExecuteRequest config - ターゲットサービスを指定する HTTP インボーカー構成 baos - 直列化された RemoteInvocation オブジェクトを含む ByteArrayOutputStreamjava.io.IOException - I/O 操作によってスローされた場合 java.lang.ClassNotFoundException - 逆直列化中にスローされた場合 openConnection(org.springframework.remoting.httpinvoker.HttpInvokerClientConfiguration), prepareConnection(java.net.HttpURLConnection, int), writeRequestBody(org.springframework.remoting.httpinvoker.HttpInvokerClientConfiguration, java.net.HttpURLConnection, java.io.ByteArrayOutputStream), validateResponse(org.springframework.remoting.httpinvoker.HttpInvokerClientConfiguration, java.net.HttpURLConnection), readResponseBody(org.springframework.remoting.httpinvoker.HttpInvokerClientConfiguration, java.net.HttpURLConnection)protected java.net.HttpURLConnection openConnection(HttpInvokerClientConfiguration config) throws java.io.IOException
HttpURLConnection を開きます。config - ターゲットサービスを指定する HTTP インボーカー構成 java.io.IOException - I/O メソッドによってスローされた場合 URL.openConnection()protected void prepareConnection(java.net.HttpURLConnection connection,
int contentLength)
throws java.io.IOExceptionデフォルトの実装では、POST をメソッドとして、"application/x-java-serialized-object" を "Content-Type" ヘッダーとして、指定されたコンテンツの長さを "Content-Length" ヘッダーとして指定しています。
connection - 準備する HTTP 接続 contentLength - 送信するコンテンツの長さ java.io.IOException - HttpURLConnection メソッドによってスローされた場合 HttpURLConnection.setRequestMethod(java.lang.String), URLConnection.setRequestProperty(java.lang.String, java.lang.String)protected void writeRequestBody(HttpInvokerClientConfiguration config, java.net.HttpURLConnection con, java.io.ByteArrayOutputStream baos) throws java.io.IOException
デフォルトの実装では、シリアライズされた呼び出しを HttpURLConnection の OutputStream に書き込むだけです。これをオーバーライドして、たとえば、特定のエンコーディングを記述し、適切な HTTP リクエストヘッダーを設定することができます。
config - ターゲットサービスを指定する HTTP インボーカー構成 con - リクエストの本文を書き込む HttpURLConnectionbaos - 直列化された RemoteInvocation オブジェクトを含む ByteArrayOutputStreamjava.io.IOException - I/O メソッドによってスローされた場合 URLConnection.getOutputStream(), URLConnection.setRequestProperty(java.lang.String, java.lang.String)protected void validateResponse(HttpInvokerClientConfiguration config, java.net.HttpURLConnection con) throws java.io.IOException
HttpURLConnection オブジェクトに含まれているものとして検証し、成功した HTTP レスポンスに対応していない場合は例外をスローします。デフォルトの実装では、2xx を超える HTTP ステータスコードはすべて拒否されます。これにより、レスポンス本文の解析や破損したストリームからの逆直列化の試行が回避されます。
config - ターゲットサービスを指定する HTTP インボーカー構成 con - 検証する HttpURLConnectionjava.io.IOException - 検証に失敗した場合 HttpURLConnection.getResponseCode()protected java.io.InputStream readResponseBody(HttpInvokerClientConfiguration config, java.net.HttpURLConnection con) throws java.io.IOException
デフォルトの実装は、HttpURLConnection の InputStream から直列化された呼び出しを読み取るだけです。レスポンスが GZIP レスポンスとして認識されると、InputStream は GZIPInputStream にラップされます。
config - ターゲットサービスを指定する HTTP インボーカー構成 con - レスポンス本文を読み取る HttpURLConnectionjava.io.IOException - I/O メソッドによってスローされた場合 isGzipResponse(java.net.HttpURLConnection), GZIPInputStream、URLConnection.getInputStream()、HttpURLConnection.getHeaderField(int)、HttpURLConnection.getHeaderFieldKey(int)protected boolean isGzipResponse(java.net.HttpURLConnection con)
デフォルトの実装では、HTTP の "Content-Encoding" ヘッダーに "gzip" が含まれているかどうかを確認します(大文字と小文字の区別なく)。
con - チェックする HttpURLConnection