このセクションは、カスタム リスナーの追加方法について説明します。カスタムリスナーは、デフォルトでサポートされていないトランスポート上で、仮想アセットがメッセージを受信したり応答したりすることを可能にします。
このセクションの内容:
各仮想アセットのコンフィギュレーション パネルには、[トランスポート] > [カスタム] タブがあります。このタブは、グループに固有の要件を満たすメッセージ リスナーの実装を表示するようにカスタマイズできます。
カスタム メッセージ リスナーの実装が Virtualize にプラグインされると、仮想化フレームワークはレスポンス メッセージを生成できます。必要なプロトコル上の実際のメッセージの配信や受信は、メッセージ リスナーの実装によって処理されます。
Parasoft Marketplace ( Customer Portal または組織の CTP からアクセス可能 ) には、TCP/IP、 FTP、および Equifax といったその他の固定長メッセージ タイプの例があります。Parasoft Marketplace へのアクセスについては、Parasoft テクニカル サポート センター (parasoft_support@techmatrix.co.jp) にお問い合わせください。
「拡張機能の追加: 基本手順」に記載のように、環境のセットアップが完了したら、次のインターフェイスを実装します ( 詳細については、『Extensibility API』ドキュメントを参照してください)。
これは必須クラスです。isReady() は、構成が正しく設定されている場合は true を、そして必要な構成が設定されていない場合は false を返すべきです。startup() メソッドはリスナーがリスンを開始するべきときに呼び出されます。次の引数を受け取ります。
インスタンスが IMessageHandler.handleMessage() の実装に受け入れられるように、このインターフェイスを実装する必要があります。あるいは、メッセージ コンテンツのフォーマットが文字列で表現されている場合は、デフォルトの実装である DefaultCustomMessage<T> を使用できます。パラメータライズされたタイプは、文字列に適したプロパティ (またはヘッダー) オブジェクト タイプに使用できます。
必要なクラスを実装したら、次のように 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 メソッドに渡され、ユーザーが提供する値をユーザーの実装に渡すことを許可します。また、それらは保存されるときに、レスポンダー デプロイメント記述子ファイルにユーザーが提供する値を維持するために使用されます。GUI に表示されるフィールド ラベルはこの XML に基づいて構成されます。セクション レイアウトはプログラムに影響を及ぼしません。エンド ユーザーが使用しやすいように、さまざまな GUI フィールドをセクションまたはカテゴリに整理します。
「拡張機能の追加: 基本手順」に記載のように、プロジェクトをビルドしたら Virtualize を再起動して、仮想アセット コンフィギュレーション パネルの [トランスポート] > [カスタム] タブに表示されるカスタム リスナー名 (parasoft-extension.xml に指定したもの) を確認します (仮想アセット コンフィギュレーション パネルは、[Virtualize サーバー] ビューの仮想アセット ノードをダブルクリックして開きます)。
カスタム リスナーが 1 個だけの場合、[カスタム] タブはそのカスタム フォーマットの設定専用になります。

複数のカスタム リスナーがある場合、[実装の選択] メニューから使用するリスナーを選択できます。

カスタム メッセージ リスナーの実装例は、GitHub で入手できます。リスナーを使用するには、jar をシステム設定のクラスパス リストに追加してから、新しい pva ファイルを作成し、仮想アセットのデプロイでリスナーのポートを構成します。
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> |
Application.getContext() からログ記録を呼び出すことができます。イベントは INFO、ERROR、WARN および DEBUG に分類されます。これらのカテゴリは、SOAtest Event Monitor でフィルター条件として使用できます。渡されたコンテキスト上で reportEvent(String message, String type) メソッドを直接的に呼び出すことを推奨します。そうすると、イベントのソース (イベントが発生したレスポンダーおよび PVA) が自動的に設定されます。例:// In your startup method:
Application.getContext().reportEvent("My Message Listener started", ScriptingContext.INFO);
// For error cases:
Application.getContext().reportEvent("Failed to start listener: " + errorMessage, ScriptingContext.ERROR);
// For debugging:
Application.getContext().reportEvent("Processing message", ScriptingContext.DEBUG); |