このセクションでは、カスタム トランスポートの追加方法について説明します。カスタム トランスポートを追加すると、 クライアント ツールがデフォルトではサポートされていないトランスポートを介してメッセージを送信できるようになります。

このセクションの内容:

カスタム トランスポートとは

Parasoft SOAtest は、 SOAtest のビルトイン トランスポートとビルトイン プロトコルを拡張できるフレームワークを含んでおり、ユーザーが扱う任意のトランスポートまたはプロトコルをサポートします。たとえば、DDS、プレーン ソケット または TCP/IP ベースのメッセージング、ファイル ベースのメッセージング、そして独自API に基づくメッセージングをサポートします。拡張機能は Java で実装されます。  

SOAP Client ツール、 EDI Client ツール、 Messaging Client ツールをカスタマイズして、グループの特定のニーズに一致するトランスポート実装を表示できます。SOAtest にカスタム トランスポート実装がプラグインされても、SOAP Client ツールや他のメッセージ クライアント ツールの通常の WSDL 、スキーマ、リクエスト メッセージ構成機能は使用できます。必要なプロトコルを介したメッセージの実際の送信や受信は、トランスポート実装によって制御されます。 

カスタム トランスポートのために実装するインターフェイス

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

ICustomTransport の実装

ICustomTransport は必須クラスです。createNewConnection() メソッドは ICustomConnection クラスのインスタンスを返すか、ユーザーのプロトコルがそのインスタンスを必要としない場合は NULL を返します。invoke() メソッドは次の引数を受け取ります。

一方向 (送信のみ) トランスポートでは invoke() メソッドは NULL を返します。

ICustomConnection の実装

ICustomConnection はオプションのクラスです。つまり、 ICustomTransport.createNewConnection() で NULL を返し、 invoke() メソッドでその NULL を受け取ることができます。しかしながら、多くのプロトコルはセッションまたは接続の概念を持つ傾向にあるため、拡張性フレームワークではこのインターフェイスを用いてそれらを管理できます。 

トランスポート構成ツールの GUI で [キープ アライブ接続] オプションがオフの場合 、テストが呼び出されるたびに ICustomConnection オブジェクトの新しいインスタンスが作成されます。 [キープ アライブ接続] オプションがオンの場合、テストが接続をクローズするまで ([テスト実行後に接続をクローズする] オプションが選択されている場合) 、またはすべてのテスト実行が完了するまで、同じインスタンスが再利用されます。

SOAtest は、[接続をキープ アライブ] Keep connection alive オプションが有効な場合でも、ICustomTransport.invoke() メソッドを呼び出す前に、常に connect() メソッドを呼び出します。期待される動作は、SOAtest が接続オブジェクト内でトランスポート接続を確立すること、またはそのプロセスが失敗した場合に例外をスローすることです。close() メソッドは、テストで [接続をキープ アライブ] オプションが有効になっていない限り、テスト実行の最後に呼び出されます。

ICustomConnection はユーザーの接続状態/セッション状態を暗号化します。しかし、 [キープ アライブ接続] がオンでない限り、複数のテストで再利用はされません。

ICustomMessage

このインターフェイスの実装は、 ICustomTransport.invoke() がインスタンスを返すために必要です。あるいは、ユーザーのメッセージ コンテンツの形式が文字列の場合、デフォルト実装の DefaultCustomMessage<T> を使用できます。プロパティまたはヘッダーの文字列に適合させたオブジェクト型にはパラメータライズ タイプが使用できます。getHeaders() が返す文字列は、 Trafic Viewer のヘッダー エリアに表示されるものです。getBodyString() が返す文字列は、 Trafic Viewer のペイロード (ボディ) エリアに表示されるものです。

カスタム トランスポート用に parasoft-extension.xml を定義

必要なクラスを実装した後、次のように 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) へインポートするには、 [ファイル] メニューの [インポート] > [一般 / 既存のプロジェクトをワークスペースへ] > [アーカイブ・ファイルの選択] よりファイルを選択します。インポート後、プロジェクトをビルドするために、<INSTALL>/plugins/com.parasoft.ptest.libs.web_<VERSION>/root/ ディレクトリにある com.parasoft.api.jar ファイルを、Java プロジェクトのクラスパスに追加します。

ヒント