このセクションの内容:

概要

Asynchronous Socket Listener は、非同期読み取り/書き込みを使用するソケットベースのクライアントとの高度な協働をサポートします。このツールは、設定に応じて、固定長、接頭辞付き可変長、またはトークン区切りのメッセージをソケットから読み取ることができます。クライアントからの接続は、クライアントが接続を閉じるか、リスナーでエラーが発生するまで保持されます。リスナーは、リクエストに対応するレスポンスが受信されなかった場合、エラーを記録してクライアント接続を閉じます。これは、リクエストに対してリスナーがレスポンスを送信しない場合にクライアントが待機し続けるのを防ぐためです。

インストール

ツールは UI またはコマンドラインからインストールできます。 

UI からのインストール

  1. [Parasoft ] > [設定] を選択し、[システム プロパティ] カテゴリをクリックします。
  2. [JAR の追加] をクリックし、com.parasoft.virtualize.listener.asynchronous.socket-1.0.jar ファイルを選択します。jar ファイルが Virtualize のクラスパスに追加されると、必要なすべての依存ライブラリがロードされます。
  3. 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

ソケット リスナーが受信接続をリスンするポートを指定します。0 を指定すると、空きポートが自動的に選択されます。アセットがデプロイされると、選択されたポートがコンソールに出力されます。

Worker Threads

メッセージの処理に使用するワーカー スレッドの数を指定します。

有効な最小値は 1 です。

デフォルト値は 50 です。 

Character Set

バイトのデコードとエンコードに使用する文字セットを指定します。

デフォルト値は UTF-8 です。 

Connection Backlogここで指定した数の接続がバックログにあると、新規接続が拒否されます。この設定はオプションです。フィールドを空のままにすることが推奨されます。
Read Mode

メッセージの読み取りモードを指定します。

  • 常に同じサイズの固定長メッセージである場合は fixed を指定します。
  • メッセージの先頭に int (4 バイト) の接頭辞が付いている場合は prefixed を指定します。
  • メッセージの先頭の何桁かが文字列接頭辞である場合は prefixed-string を指定します。
  • メッセージが終端文字またはユニコード シーケンスによって区切られている場合は token を指定します。

デフォルトは prefixed です。 

固定長

Fixed Length [default: 1024] フィールドに固定長メッセージのサイズを指定します。

たとえば、メッセージのサイズが常に 4 バイトである場合、クライアントは次のようなリクエストを送信します。

[0, 0, 0, 0] 

リスナーは同じサイズのレスポンスを返します。例:

[1, 1, 1, 1] 

クライアントからの 4 バイトのメッセージがメッセージであるとみなされます。

トークン区切り

Token Delimiter

メッセージを区切るトークンを指定します。

デフォルトは byte 23, End-Of-Transmission-Block です。 

Token Type

トークンのバイトを取得するために使用する変換のタイプを指定します。

  • string を指定すると、リスナーは getBytes と設定の文字セットを使用してバイトに変換します。
  • hex を指定すると、文字列は 16 進数値のシーケンスとして解釈されます。たとえば、0a 0d10 13 というバイトになります。 
  • byte を指定すると、文字列はスペースで区切られた 10 進数値のバイト シーケンスとして解釈されます。例: 10 13 

デフォルトは hex です。 

トークン区切りメッセージの例

区切り文字として改行 (\n) が指定され、クライアントが複数のリクエストを送信した場合、リスナーは各メッセージを個別に処理し、各メッセージに対してレスポンスを送信します。

メッセージの例
hello world\n
foo bar\n
レスポンスの例:
good night world\n
bar foo\n

すべてのメッセージが 1 回の読み取りで受信された場合でも、リスナーは 1 つずつリクエストを処理し、次のメッセージを処理する前にレスポンスを返します。

接頭辞付き可変長 (数値) 

このセクションの設定は、読み取りモードに prefixed が指定されている場合にだけ適用されます。  

Length of the Length Field

長さフィールドの長さを指定します。指定されたバイト数を読み取り、数値に変換してメッセージの長さを判断します。次の値を指定できます: 1234、または 8 

デフォルトでは、4 バイトを読み取って整数に変換します。

Include Length Field Size in Length 

読み取られた長さに Length フィールドのサイズが含まれるかどうかを指定します。

たとえば、このオプションを有効にした場合、メッセージが 4 バイトのとき、Length フィールドの値として 8 を送信します。なぜなら、Length フィールドのデフォルトの長さは 4 バイトであり、これがメッセージ本体の長さに追加されるからです。 

デフォルト値は true です。

Format of Static Prefix/Suffix 

静的な接頭辞/接尾辞をバイトに変換する際に使用する変換のタイプ

  • string を指定すると、リスナーは getBytes と設定の文字セットを使用してバイトに変換します。
  • hex を指定すると、文字列は 16 進数値のシーケンスとして解釈されます。たとえば、0a 0d10 13 というバイトになります。 
  • byte を指定すると、文字列はスペースで区切られた 10 進数値のバイト シーケンスとして解釈されます。例: 10 13 

デフォルトは hex です。 

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 接頭辞のサイズを指定します。読み取るバイト数は、ここで指定された桁数をバイトに変換した値を元に計算します。リスナーは 0 をバイトにエンコードし、このフィールドで指定された数をバイト数に乗算します。

デフォルト値は 4 です。 

Include Prefix in Length

true は、接頭辞から読み取られた長さに接頭辞の長さも含まれることを意味します。

デフォルト値は true です。 

接頭辞付き可変長 (String) の設定例

メッセージ全体のバイト数を示す 6 文字の文字列を接頭辞として付けたリクエストを CP037 文字セットで送信した場合、文字列メッセージは次のようになります。

000014request1 

000014 は長さを示す接頭辞であり、14 は設定の文字セットでエンコードされた接頭辞を含むメッセージ全体のバイト数です。接頭辞が長さに含まれない場合、リクエストは次のようになります。

000008request1 

000008 は設定の文字セットでエンコードされた request1 の長さです。

SSL

SSL Enabled [ default:false ]true を指定すると、SSL でリスンします。 

ロギング

Log Level フィールドの値を指定します。この設定はオプションです。

  • エラーだけを記録するには 1 を入力します。
  • エラーと警告を記録するには 2 を入力します。
  • エラー、警告、通知を記録するには 3 を入力します。
  • エラー、警告、通知、デバッグを記録するには 4 を入力します。

デフォルト値は 3 です。 


  • No labels