このセクションの内容:
概要
Asynchronous Socket Listener は、非同期読み取り/書き込みを使用するソケットベースのクライアントとの高度な協働をサポートします。このツールは、設定に応じて、固定長、接頭辞付き可変長、またはトークン区切りのメッセージをソケットから読み取ることができます。クライアントからの接続は、クライアントが接続を閉じるか、リスナーでエラーが発生するまで保持されます。リスナーは、リクエストに対応するレスポンスが受信されなかった場合、エラーを記録してクライアント接続を閉じます。これは、リクエストに対してリスナーがレスポンスを送信しない場合にクライアントが待機し続けるのを防ぐためです。
インストール
ツールは UI またはコマンドラインからインストールできます。
UI からのインストール
- [Parasoft ] > [設定] を選択し、[システム プロパティ] カテゴリをクリックします。
- [JAR の追加] をクリックし、com.parasoft.virtualize.listener.asynchronous.socket-1.0.jar ファイルを選択します。jar ファイルが Virtualize のクラスパスに追加されると、必要なすべての依存ライブラリがロードされます。
- Virtualize を再起動します。
コマンドラインからのインストール
設定プロパティ ファイルの system.properties.classpath
プロパティに com.parasoft.virtualize.listener.asynchronous.socket-1.0.jar ファイルを追加します。例:
system.properties.classpath=<path to jar>/com.parasoft.virtualize.listener.asynchronous.socket-1.0.jar
クラスパスを変更すると、必要なすべての依存ライブラリがロードされます。
使用方法
Asynchronous Socket listener をインストールすると、仮想アセット設定パネルの [トランスポート] > [カスタム] で Asynchronous Socket Listener を利用できるようになります。仮想アセットの Virtualize Server ノードをダブルクリックすると、このパネルが開きます。
複数のカスタム リスナーがある場合、[実装の選択] ボックスで使用するリスナーを選択できます。
設定
以下の設定を行うことができます。
設定
Port | ソケット リスナーが受信接続をリスンするポートを指定します。 |
---|---|
Worker Threads | メッセージの処理に使用するワーカー スレッドの数を指定します。 有効な最小値は デフォルト値は |
Character Set | バイトのデコードとエンコードに使用する文字セットを指定します。 デフォルト値は |
Connection Backlog | ここで指定した数の接続がバックログにあると、新規接続が拒否されます。この設定はオプションです。フィールドを空のままにすることが推奨されます。 |
Read Mode | メッセージの読み取りモードを指定します。
デフォルトは |
固定長
Fixed Length [default: 1024] フィールドに固定長メッセージのサイズを指定します。
たとえば、メッセージのサイズが常に 4 バイトである場合、クライアントは次のようなリクエストを送信します。
[0, 0, 0, 0]
リスナーは同じサイズのレスポンスを返します。例:
[1, 1, 1, 1]
クライアントからの 4 バイトのメッセージがメッセージであるとみなされます。
トークン区切り
Token Delimiter | メッセージを区切るトークンを指定します。 デフォルトは |
---|---|
Token Type | トークンのバイトを取得するために使用する変換のタイプを指定します。
デフォルトは |
トークン区切りメッセージの例
区切り文字として改行 (\n) が指定され、クライアントが複数のリクエストを送信した場合、リスナーは各メッセージを個別に処理し、各メッセージに対してレスポンスを送信します。
hello world\n foo bar\n
good night world\n bar foo\n
すべてのメッセージが 1 回の読み取りで受信された場合でも、リスナーは 1 つずつリクエストを処理し、次のメッセージを処理する前にレスポンスを返します。
接頭辞付き可変長 (数値)
このセクションの設定は、読み取りモードに prefixed
が指定されている場合にだけ適用されます。
Length of the Length Field | 長さフィールドの長さを指定します。指定されたバイト数を読み取り、数値に変換してメッセージの長さを判断します。次の値を指定できます: デフォルトでは、4 バイトを読み取って整数に変換します。 |
---|---|
Include Length Field Size in Length | 読み取られた長さに Length フィールドのサイズが含まれるかどうかを指定します。 たとえば、このオプションを有効にした場合、メッセージが 4 バイトのとき、Length フィールドの値として 8 を送信します。なぜなら、Length フィールドのデフォルトの長さは 4 バイトであり、これがメッセージ本体の長さに追加されるからです。 デフォルト値は |
Format of Static Prefix/Suffix | 静的な接頭辞/接尾辞をバイトに変換する際に使用する変換のタイプ
デフォルトは |
Static Prefix | メッセージに追加される接頭辞セグメントです。必須の場合があります。指定された場合、メッセージのフォーマットは <PREFIX_BYTES><LENGTH_FIELD_BYTES><MESSAGE_DATA_BYTES> です。 |
Static Suffix | メッセージの接尾辞セグメントです。ソケットによって要求される場合があります。指定された場合、メッセージのフォーマットは <LENGTH_FIELD_BYTES><MESSAGE_DATA_BYTES><SUFFIX_BYTES> です。 |
接頭辞付き可変長 (数値) の設定例
クライアントが int
型の接頭辞付きのメッセージ request1
を含むリクエストを CP037
文字セットで送信し、length 値に接頭辞の長さが含まれている場合、リクエストはつぎのバイト列で表されます。
[0, 0, 0, 12, 114, 101, 113, 117, 101, 115, 116, 49]
先頭の 4 バイト ([0, 0, 0, 12]
) は整数 12
です。これは接頭辞である先頭 4 バイトを含むメッセージ全体の長さです。残りのバイトは設定の文字セットでエンコードされた文字列 request1
です。
接頭辞付き可変長 (String)
このセクションの設定は、読み取りモードに prefixed-string
が指定されている場合にだけ適用されます。
String Prefix Length | メッセージの length 接頭辞のサイズを指定します。読み取るバイト数は、ここで指定された桁数をバイトに変換した値を元に計算します。リスナーは デフォルト値は |
---|---|
Include Prefix in Length |
デフォルト値は |
接頭辞付き可変長 (String) の設定例
メッセージ全体のバイト数を示す 6 文字の文字列を接頭辞として付けたリクエストを CP037 文字セットで送信した場合、文字列メッセージは次のようになります。
000014request1
000014
は長さを示す接頭辞であり、14
は設定の文字セットでエンコードされた接頭辞を含むメッセージ全体のバイト数です。接頭辞が長さに含まれない場合、リクエストは次のようになります。
000008request1
000008
は設定の文字セットでエンコードされた request1
の長さです。
SSL
SSL Enabled [ default:false ] に true
を指定すると、SSL でリスンします。
ロギング
Log Level フィールドの値を指定します。この設定はオプションです。
- エラーだけを記録するには
1
を入力します。 - エラーと警告を記録するには
2
を入力します。 - エラー、警告、通知を記録するには
3
を入力します。 - エラー、警告、通知、デバッグを記録するには
4
を入力します。
デフォルト値は 3
です。