このセクションでは、カスタム トランスポートの追加方法について説明します。カスタム トランスポートを追加すると、 クライアント ツールがデフォルトではサポートされていないトランスポートを介してメッセージを送信できるようになります。
このセクションの内容:
Parasoft SOAtest は、 SOAtest のビルトイン トランスポートとビルトイン プロトコルを拡張できるフレームワークを含んでおり、ユーザーが扱う任意のトランスポートまたはプロトコルをサポートします。たとえば、DDS、プレーン ソケット または TCP/IP ベースのメッセージング、ファイル ベースのメッセージング、そして独自API に基づくメッセージングをサポートします。拡張機能は Java で実装されます。
SOAP Client ツール、 EDI Client ツール、 Messaging Client ツールをカスタマイズして、グループの特定のニーズに一致するトランスポート実装を表示できます。SOAtest にカスタム トランスポート実装がプラグインされても、SOAP Client ツールや他のメッセージ クライアント ツールの通常の WSDL 、スキーマ、リクエスト メッセージ構成機能は使用できます。必要なプロトコルを介したメッセージの実際の送信や受信は、トランスポート実装によって制御されます。
「拡張機能の追加: 基本手順」に記載のように、環境のセットアップが完了したら、次のインターフェイスを実装します (詳細については、『Extensibility API』ドキュメントを参照してください)。
ICustomTransport は必須クラスです。createNewConnection() メソッドは ICustomConnection クラスのインスタンスを返すか、ユーザーのプロトコルがそのインスタンスを必要としない場合は NULL を返します。invoke() メソッドは次の引数を受け取ります。
一方向 (送信のみ) トランスポートでは invoke() メソッドは NULL を返します。
ICustomConnection はオプションのクラスです。つまり、 ICustomTransport.createNewConnection() で NULL を返し、 invoke() メソッドでその NULL を受け取ることができます。しかしながら、多くのプロトコルはセッションまたは接続の概念を持つ傾向にあるため、拡張性フレームワークではこのインターフェイスを用いてそれらを管理できます。
トランスポート構成ツールの GUI で [キープ アライブ接続] オプションがオフの場合 、テストが呼び出されるたびに ICustomConnection オブジェクトの新しいインスタンスが作成されます。 [キープ アライブ接続] オプションがオンの場合、テストが接続をクローズするまで ([接続を閉じる] オプションが選択されている場合) 、またはすべてのテスト実行が完了するまで、同じインスタンスが再利用されます。
SOAtest は invoke() メソッドを呼び出す前に connect() メソッドを呼び出します。connect() メソッドは、 Connection オブジェクト内にトランスポート接続を確立するか、その処理に失敗した場合には例外処理を実行します。[キープ アライブ接続] オプションがオフの場合、テスト実行の最後に close() メソッドが呼び出されます。
ICustomConnection はユーザーの接続状態/セッション状態を暗号化します。しかし、 [キープ アライブ接続] がオンでない限り、複数のテストで再利用はされません。
このインターフェイスの実装は、 ICustomTransport.invoke() がインスタンスを返すために必要です。あるいは、ユーザーのメッセージ コンテンツの形式が文字列の場合、デフォルト実装の DefaultCustomMessage<T> を使用できます。プロパティまたはヘッダーの文字列に適合させたオブジェクト型にはパラメータライズ タイプが使用できます。getHeaders() が返す文字列は、 Trafic Viewer のヘッダー エリアに表示されるものです。getBodyString() が返す文字列は、 Trafic Viewer のペイロード (ボディ) エリアに表示されるものです。
必要なクラスを実装した後、次のように parasoft-extension.xml を定義します。
<?xml version="1.0" encoding="UTF-8"?> <extension xmlns="urn:com/parasoft/extensibility-framework/extension" type="transport" name='The name of your transport, appears in the transports menu' description='A more detailed description'> <class>com.mycompany.MyTransport</class> <!-- implements ICustomTransport --> <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 label は、CustomTransportConfiguration オブジェクトからさまざまな API メソッドに渡された値を読み出すためのキーとして使われ、ユーザーによって提供された値がユーザーの実装に渡されることを許可します。GUI に表示される field label はこの XML に基づいて構成され、そして保存されるときにユーザーが提供する値が .tst ファイルに保持するために使用されます。このセクション レイアウトはプログラムに影響を及ぼしません。エンドユーザーが使用しやすいように、さまざまな GUI フィールドを セクションまたはカテゴリに整理します。
プロジェクトのビルド後に SOAtest を再起動します。parasoft-extension.xml に指定したトランスポート名が [トランスポート] メニューに表示されるか検証します。
Parasoft Marketplace (marketplace.parasoft.com または組織のEnvironment Manager からアクセスできます )に、カスタム トランスポート実装のサンプルがあります。サンプル トランスポートを使用するには、システム設定のクラスパス リストに JAR ファイルを追加します。そして新しい SOAP Client ツールか Messeging Client ツールを作成、または作業中の .tst ファイルを再オープンします。
[トランスポート] メニューの [カスタム拡張] エントリが、実装した名前に変わります。サンプル トランスポートはユーザーのテストで直接使用できます。サンプル トランスポートのソースを SOAtest (または Eclipse) へインポートするには、 [ファイル] メニューの [インポート] > [一般 / 既存のプロジェクトをワークスペースへ] > [アーカイブ・ファイルの選択] よりファイルを選択します。 インポート後、 プロジェクトをビルドするために [SOAtest install dir]/plugins/com.parasoft.xtest.libs.web_[version]/root/com.parasoft.api.jar をユーザーの Java プロジェクトのクラスパスに追加します。
GUI フィールドをパスワード フィールド (入力が隠され、指定したパスワードが安全に保存される) として働かせたい場合、そのフィールド要素に password に設定した type 属性を与えます。たとえば、以下は pwd フィールドをパスワード モードに設定します。
<form xmlns="urn:com/parasoft/extensibility-framework/gui"> <section label="Main Settings"> <field id="usr" label="Username"/> <field id="pwd" label="Password" type="password"/> </section> </form> |