このセクションでは、 SOAtest で JMS トランスポートを使用する方法と Virtualize のサポート ツールおよびセットアップ アクション ツールについて説明します。 セクションの内容: SOAtest または Virtualize のツールを JMS クライアントとして使用している場合は、JMS ミドルウェアとの接続確立に SOAtest/Virtualize で JNDI プロバイダーを使用することを推奨します。このようにするには、JNDI プロバイダーをセットアップする必要や、すべての必要な Jar ファイル (初期コンテキストを含むもの) が SOAtest/Virtualize のクラスパスに追加されている必要があります (Jar ファイルをクラスパスに追加する方法についての詳細は、「システムプロパティの設定」を参照してください)。また、ConnectionFactory、 Destination、および JNDI プロバイダーがルックアップする Reply-to キューの名前も指定する必要があります。 JMS のセットアップに SOAtest が ConnectionFactory のインスタンスを照会することができる JNDI を持たない場合は、「JNDI を使用しない JMS メッセージング」の手順に従ってください。あるいは、単純なファイル システム JNDI プロバイダーを設定することもできます。そのようなプロバイダーの Jars やマニュアルは Oracle Java サイトから入手できます。ファイル システムプロバイダーのセットアップは非常に簡単であり、マニュアルはダウンロードに含まれています。プロバイダーの準備ができたら、「一般的な JMS プロバイダーの構成」で説明されているように、引数にホストとポートを使用して JMS サーバーに接続する 適切なツールの [トランスポート] タブで [トランスポート] メニューから [JMS] を選択すると、以下のオプションが [トランスポート] タブの左側のパネルに表示されます。 [接続設定] は、 [JNDI 初期コンテキスト] の [設定] および [プロパティ] タブを含みます。 [プロパティ] タブはオプションであり、(プロバイダー URL および [設定] タブで指定された初期コンテキスト ファクトリのプロパティに加えて) JNDI [設定] タブには次の内容が含まれます。 [接続設定] には、以下のその他のオプションがあります。 [キュー/トピック オプション] には以下のオプションがあります。 メッセージング モデル オプションは、アプリケーション間でメッセージを送信する方法を指定します。[ポイント ツー ポイント] または [パブリッシュ/サブスクライブ] を選択します。 メッセージ期限オプションは、メッセージの有効期限を (ミリ秒で) 指定します。 メッセージ交換パターン オプションは、SOAtest がレスポンスを受信するかどうかを指定します。[レスポンスの取得] をオンにすると、SOAtest はメッセージを送信してレスポンスを受信します。[レスポンスの取得] をオフにすると、SOAtest は一方向のメッセージを送信し、レスポンスを受信しません。 また、[レスポンスの取得] が選択されている場合には、 [メッセージ送信前に JMS の返信先にメッセージ コンシューマーを作成] を有効化することもできます。JMS の返信先トピックに非常に短時間でレスポンスが到着することが予想される場合、このオプションをオンにして、レスポンス メッセージがパブリッシュされる前に必ず SOAtest が返信先トピックをサブスクライブしているようにします。 このオプションと [レスポンスの JMSCorrelationID とリクエストの JMSMessageID を照合] は同時に選択できません。なぜなら、 JSM の仕様はメッセージ送信後に JMSMessageID を生成するようベンダーに要求しているからです。そのため、メッセージが送信され JMSMessageID が利用可能になる前に、応答条件 (セレクター) を指定してレスポンスの返信先にコンシューマーを作成することはできません。 メニューからメッセージ タイプを選択できます。JMS メッセージは、JMS クライアント間で転送されるデータを含む Java オブジェクトです。次のメッセージ タイプを選択できます。 リクエスト メッセージ プロパティは任意プロパティです。メッセージをキューに送信 (またはトピックにパブリッシュ) する前に javax.jms.Message オブジェクトにさまざまなプロパティ値を設定できます。これらは、対応する javax.jms.Message の "set" メソッドの 1 つ、またはカスタム プロパティ (たとえば、 setStringProperty、setBooleanProperty、 setByteProperty などで設定されたプロパティ) を含みます。 [追加] をクリックし、 [JMS プロパティの追加] ダイアログを完了することによって追加できるプロパティの値は、固定値、パラメータライズ値、スクリプトを使用した値、または固有値 (2 つのツールの呼び出しが同じ値を使用しないような、自動的に生成されるランダムな一意の値) に設定することができます。追加する値それぞれに必ずタイプを指定してください。 [レスポンス メッセージ応答条件] には以下のオプションがあります。 JMS トランスポートを使用する Messaging Client にメッセージ オブジェクト出力を追加できます。また、JMS トランスポートを使用する Call Back ツールに受信 JMS メッセージ オブジェクト出力を追加することもできます。たとえば、JMS を使用する Messaging Client に連結された Extension ツールは、レスポンスの JMS メッセージにアクセスできます。ObjectMessage では、 メッセージ オブジェクト出力を追加するには、次の操作を行います。 詳細については次を参照してください: JMS プロバイダーの設定 JMS メッセージに対して、JMSReplyTo フィールドに設定した一時キューを使用して応答するには、次の操作を行います。 このキーは、SOAtest Extensibility API の SOAPUtil.JMS_MSG_KEY で定義されます。SOAtest Extensibility API を参照するには、[ヘルプ] > [ヘルプ目次] または [Parasoft] > [ヘルプ] をクリックし、『Parasoft SOAtest Extensibility API』というタイトルのブックを探します。 SOAtest は、宛先として入力されたキーワードの代わりに、受信メッセージの一時キューを宛先として使用します。 さまざまなツールで、メッセージ フィルターとして振る舞う値を指定できます。[メッセージ セレクター] または [その他のセレクター式条件] というラベルのフィールドで指定します。 たとえば、 以下はメッセージ セレクター フィルターを操作するためのヒントです。 [その他のセレクター式の条件] の値を変数、環境変数、およびデータ ソース値に対してパラメータライズできます。参照変数と環境変数を参照するための構文は、 式構文は SQL92 のサブセットです。たとえば、 JMS 接続ファクトリおよび宛先インスタンスを取得するために JNDI を使用することは、構造上の側面から非常に推奨されています。なぜなら、JMS コンシューマー コードをベンダー固有の依存性から分離するからです。テスト環境またはステージング環境では、 JMS システムは JNDI が構成されていない、または JNDI が任意の接続ファクトリに含まれていない場合があります。さらに、 JNDI の有無で課題をデバッグするまたはシステム パフォーマンスの特性を分離するために、テスト中に JNDI をバイパスするのに役立つ可能性があります。 これらの理由で、 SOAtest または Virtualize の JMS 対応ツールは、 JNDI を通過することなく、JMS プロバイダーが許可する限りベンダーの接続ファクトリ ディレクトリを使用する JMS メッセージの送受信を可能にします。 この機能は、JMS 接続がそもそも JNDI を使用することなく確立されることを可能にするよう設計され、単一の文字列引数を接続 URL として受け取るコンストラクターとともに接続ファクトリ クラスを提供する特定の JMS 実装をサポートします。 JNDI を使用しない JMS メッセージのサポートは、標準の JMS API に基づいていないため異なる JMS 実装間での移植性は保証されません。 この機能は Sonic と TIBCO JMS ではテストされています。WebSphere MQ でも、「IBM WebSphere MQ (MQ Series)」に記載の構成でサポートされています。 現時点では、Oracle/BEA WebLogic、 JBoss、または WebSphere Default JMS プロバイダー用に接続ファクトリを直接作成することは SOAtest ではサポートされていません。ほとんどの場合は、これらのベンダーによってドキュメント化または推奨されていません。 SOAtest または Virtualize で JMS メッセージ ツールの 1 つが JNDI を使用せずにメッセージを送受信するように構成するには、次の操作を行います。 空の [初期コンテキスト] フィールドは、接続ファクトリ オブジェクトを JNDI を使用せずに直接インスタンス化するシグナルとして解釈されます。文字列引数を 1 つ取り、 [プロバイダー URL] フィールドで指定した接続 URL に渡すコンストラクターで実施を試みます。接続の認証設定はまだ通常どおりに使用されます。プロバイダーの接続ファクトリ API にそのようなコンストラクターが存在しない場合、接続ファクトリ クラスをインスタンス化するために JNDI が必要です。 たとえば、 Sonic JMS の場合、提供される接続ファクトリクラス名は JNDI 設定の構成に関わらず、 JNDI が存在し、名前がディレクトリに存在する場合は SOAtest および Virtualize は常に JNDI から宛先 (キューまたはトピック) 名の解決を試みます。JNDI を介して見つけられない場合は、 JMS セッション インスタンスから宛先ディレクトリの作成を試みます。ユーザーが提供する名前は物理的な宛先名であり JNDI 名ではないと想定します。 注意: Sun の JNDI 実装も利用可能です。詳細については、「Sun JMS」を参照してください。 [キュー ブラウザー] ビューでは、Websphere MQ、 Websphere Application Server、 Tibco EMS、 Sonic MQ、 ActiveMQ、 およびその他の JMS プロバイダー上にデプロイされたキューの内容を参照できます。 詳細については、「SOAtest でのキューのブラウズ」および「Virtualize でのキューのブラウズ」 を参照してください。JMS 前提条件
ConnectionFactory
のインスタンスを作成する単純な Java コードの一部分を使用します。本製品で使用されるトピックとキューについても同様に対処します。 JMS オプションの設定
接続設定
javax.naming.InitalContext
コンストラクターに渡される追加のプロパティを指定することができます。[追加] をクリックし、 [JMS プロパティの追加] ダイアログを完了することによって追加できるプロパティの値は、固定値、パラメータライズ値、スクリプトを使用した値、または固有値 (2 つのツールの呼び出しが同じ値を使用しないような、自動的に生成されるランダムな一意の値) に設定することができます。キュー/トピック
メッセージング モデル
メッセージの期限
メッセージ交換パターン
メッセージ タイプ
リクエスト メッセージ プロパティ
レスポンス メッセージ応答条件
username==John
と入力することで、ユーザー名として "John" を含むメッセージのみが配信されます。このフィールドが空の場合、どんなメッセージでもキューから受信できます。
この式はポイントツー ポイントの javax.jms.QueueSession クラスの createReceiver() メソッドに渡されるか、パブリッシュ/サブスクライブメッセージの javax.jms.TopicSession クラスの createSubscriber() メソッドに渡されます。セレクターの指定に関するヒントは、 「メッセージ セレクター フィルターの使用」を参照してください。JMS を使用するクライアントのためのメッセージ オブジェクト出力
getter
および equals()
メソッドを使用してレスポンスを検証し、回帰コントロールを作成できます。また、レスポンス トラフィックに Diff ツールを連結し、レスポンスが ObjectMessage である場合、SOAtest は挿入されたシリアライザブル オブジェクトを XML 形式に変換し、XML の比較を実行します。その際、データ バンクの値を使用したり、XPath の差異を無視したりできます。一般的な JMS プロバイダーの構成
一時的な JMSReplyTo キューへの応答
from soaptest.api import *
def getJMSReplyTo(input, context):
context.put(SOAPUtil.JMS_MSG_KEY, input)
メッセージセレクター フィルターの使用
username==John
と入力することで、ユーザー名として "John" を含むメッセージのみが配信されます。このフィールドが空の場合、どんなメッセージでもキューから受信できます。${myVariableName}
です。XML Data Bank の値と XML Data Source の値を参照する構文は ${myColumnName}
です。たとえば次のように使用できます: JMSCorrelationID ='${myColumnName}'
fruit = 'apple'
または JMSCorrelationID = '123456'
という式は、 SOAtest がプロパティ fruit
が値 apple
で定義された JMS メッセージ、または JMSCorrelationID が値 123456
に設定された JMS ヘッダーだけをピックアップすることになります。JNDI を伴わない JMS メッセージング
サポートされている JMS の実装
設定
progress.message.jclient.ConnectionFactory
となります。TIBCO JMS では、com.tibco.tibjms.TibjmsConnectionFactory
となります。一方、 JBoss および OpenJMS は接続 URL 引数を 1 つ取る接続ファクトリを持ちません。これらの場合は、 SOAtest または Virtualize を使用してこれらのシステムで JMS メッセージを交換するために JNDI がある必要があります。キューのコンテンツのブラウズ
Overview
Content Tools