このセクションは、カスタム リスナーの追加方法について説明します。カスタムリスナーは、デフォルトでサポートされていないトランスポート上で、仮想アセットがメッセージを受信したり応答したりすることを可能にします。セクションの内容:

カスタム リスナーとは

各仮想アセットのコンフィギュレーション パネルには、[トランスポート] > [カスタム] タブがあります。このタブは、グループに固有の要件を満たすメッセージ リスナーの実装を表示するようにカスタマイズできます。 

カスタム メッセージ リスナーの実装が Virtualize にプラグインされると、仮想化フレームワークはレスポンス メッセージを生成できます。必要なプロトコル上の実際のメッセージの配信や受信は、メッセージ リスナーの実装によって処理されます。 

Parasoft Marketplace (marketplace.parasoft.com または組織のCTP からアクセスできます ) には、TCP/IP、 FTP、および Equifax といったその他の固定長メッセージ タイプの例があります。

カスタム リスナー用に実装するインターフェイス

拡張機能の追加: 基本手順」に記載のように、環境のセットアップが完了したら、次のインターフェイスを実装します ( 詳細については、『Extensibility API』ドキュメントを参照してください)。

  • com.parasoft.api.responder.ICustomMessageListener
  • com.parasoft.api.ICustomMessage<T> (または com.parasoft.api.DefaultCustomMessage<T> を再使用/拡張する)

ICustomMessageListener の実装

これは必須クラスです。isReady() は、構成が正しく設定されている場合は true を、そして必要な構成が設定されていない場合は false を返すべきです。startup() メソッドはリスナーがリスンを開始するべきときに呼び出されます。次の引数を受け取ります。

  • レスポンダーのデプロイメント設定 GUI からの値とトランスポート実装クラスを提供する設定 (決して NULL ではない)。
  • ハンドラー。リクエスト メッセージを受け付け、レスポンス メッセージを返すことができる ImessageHandler の実装 (決して NULL ではない) 。

ICustomMessage

インスタンスが IMessageHandler.handleMessage() の実装に受け入れられるように、このインターフェイスを実装する必要があります。あるいは、メッセージ コンテンツのフォーマットが文字列で表現されている場合は、デフォルトの実装である DefaultCustomMessage<T> を使用できます。パラメータライズされたタイプは、文字列に適したプロパティ (またはヘッダー) オブジェクト タイプに使用できます。

カスタム リスナー用に parasoft-extension.xml を定義

必要なクラスを実装したら、次のように parasoft-extension.xml (「拡張機能の追加: 基本手順」に記載) を定義します。

 

<?xml version="1.0" encoding="UTF-8"?>
<extension xmlns="urn:com/parasoft/extensibility-framework/extension"
       type="messageListener" 
       name='The name of your message listener, appears in the transports menu' 
       description='A more detailed description'>
  <class>com.mycompany.MyMessageListener</class> <!-- implements ICustomMessageListener-->
  <form xmlns="urn:com/parasoft/extensibility-framework/gui">
       <!-- This describes the fields you wish to appear in your transport GUI --> 
       <section label="field group 1">
          <field id="key 1" label="field 1"/>
          <field id="key 2" label="field 2"/> 
          ...
          <section label="field group 2">
          <field id="key 3" label="field 3" />
      </section>
      <section label="field group 2">
          <field label="field 1" />
          ...
      </section>
      ...
  </form>
</extension>

 

section 要素の field id は、ICustomMessageListenerConfiguration インスタンスから値を取得するために使用されます。ICustomMessageListenerConfiguration インスタンスはさまざまな API メソッドに渡され、ユーザーが提供する値をユーザーの実装に渡すことを許可します。また、それらは保存されるときに、レスポンダー デプロイメント記述子ファイルにユーザーが提供する値を維持するために使用されます。フィールド ID は、この XML に基づいて構築された GUI に表示されます。セクション レイアウトはプログラムに影響を及ぼしません。エンド ユーザーが使用しやすいように、さまざまな GUI フィールドをセクションやカテゴリに整理します。

新しいリスナーの検証

拡張機能の追加: 基本手順」に記載のように、プロジェクトをビルドしたら Virtualize を再起動して、仮想アセット コンフィギュレーション パネルの [トランスポート] > [カスタム] タブに表示されるカスタム リスナー名 (parasoft-extension.xml に指定したもの) を確認します (仮想アセット コンフィギュレーション パネルは、[Virtualize サーバー] ビューの仮想アセット ノードをダブルクリックして開きます)。

カスタム リスナーが 1 個だけの場合、[カスタム] タブはそのカスタム フォーマットの設定専用になります。

 

 

複数のカスタム リスナーがある場合、[実装の選択] ボックスで使用するリスナーを選択できます。

 

サンプル

Parasoft Marketplace (marketplace.parasoft.com または組織のCTP からアクセスできます ) には、いくつかのカスタム メッセージ リスナーの実装があります。  それらの拡張をインストールして使用する方法については、zip ファイルに含まれるドキュメントを参照してください。 

ヒント

  • 拡張 GUI で提供される値は、名前 - 値の文字列マッピングとして保存されます。結果として、 parasoft-extension.xml の form 要素内のフィールドを再編しても、ユーザー値の保存方法に影響ありません。しかしながら、ID を変更するとこれに影響します。ID は値の保存やロードに使用されるため、一意である必要があります。ID を変更すると、その前に保存した構成が以前の値をロードせず、値は空白となります。しかしながら、バージョンアップ データを使用して、古い ID で保存された古い設定を新しい ID のセットへ移行できます。 
  • カスタム フォーム GUI では、GUI フィールドは文字列のみをサポートします。ユーザーの拡張が整数やその他のタイプを必要とする場合、拡張の実装で文字列のコンテンツを任意のタイプに変換できます。
  • GUI フィールドをパスワード フィールド (入力がマスクされ、指定されたパスワードが安全に保存されます) にしたい場合、field 要素に password 属性を追加し、値を true に設定します。たとえば、次は pwd フィールドをパスワード モードにする例です。

    <form xmlns="urn:com/parasoft/extensibility-framework/gui">
         <section label="Main Settings">
            <field id="usr" label="Username"/>
            <field id="pwd" label="Password" password="true"/>
         </section> 
    </form>
  • テーブルやリストは、文字列フィールドでカンマ区切りの値として実装できます。
  • カスタム リスナーの内部的なイベントおよびエラーを参照できるようにするため、(Extensibility API 内で) ApplicationContext からログ記録を呼び出すことができます。イベントは INFO、ERROR、WARN および DEBUG に分類されます。これらのカテゴリは、SOAtest Event Monitor でフィルター条件として使用できます。渡されたコンテキスト上で reportEvent(String message, String type) メソッドを直接的に呼び出すことを推奨します。そうすると、イベントのソース (イベントが発生したレスポンダーおよび PVA) が自動的に設定されます。
  • No labels