Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Published by Scroll Versions from space FUNCTDEV and version SOAVIRT_9.10.8_CTP_3.1.4

...

Table of Contents
maxLevel1

JMS の前提条件

SOAtest を JMS クライアントとして使用している場合は、JMS ミドルウェアとの接続確立に SOAtest で JNDI プロバイダーを使用することを推奨します。このようにするには、JNDI プロバイダーをセットアップする必要や、すべての必要な Jar ファイル (例:初期コンテキストを含むもの) がクラスパスに追加されている必要があります (Jar ファイルをクラスパスに追加する方法についての詳細は、「システムプロパティの設定」を参照してください)。また、ConnectionFactory、 Destination、および JNDI プロバイダーがルックアップする Reply-to キューの名前も指定する必要があります。

JMS のセットアップに SOAtest が ConnectionFactory のインスタンスを照会することができる JNDI を持たない場合は、「JNDI を使用しない JMS メッセージング」の手順に従ってください。あるいは、単純なファイル システム JNDI プロバイダーを設定することもできます。  そのようなプロバイダーの Jars やマニュアルは Oracle Java サイトから入手できます。ファイル システムプロバイダーのセットアップは非常に簡単であり、マニュアルはダウンロードに含まれています。  プロバイダーの準備ができたら、「一般的な JMS プロバイダーの構成」で説明されているように、引数にホストとポートを使用して JMS サーバーに接続する ConnectionFactory のインスタンスを作成する単純な Java コードの一部分を使用します。Virtualize で使用されるトピックとキューについても同様に対処します。 

JMS オプションの構成 

適切なツールの [トランスポート] タブ内の [トランスポート] ドロップダウンメニューから [JMS] を選択すると、以下のオプションが [トランスポート] タブの左ペインに表示されます。

Anchor
jms_connection_settings
jms_connection_settings
接続設定

[接続設定] は、 [JNDI 初期コンテキスト] の [設定] および [プロパティ] タブを含みます。 

...

  • JMS 接続用の共有プロパティを作成した場合、ドロップダウン メニューが使用可能になり、[ローカルの設定を使用] または [共有プロパティを使用] を選択できます。
    • [共有プロパティを使用] を選択すると、もう 1 つのドロップダウン メニューが表示され、ツールが使用するグローバル JMS 設定を選択できます。グローバルな JMS 設定の詳細については 「グローバル設定の追加 1Adding Global Test Suite Properties」を参照してください。
    • [ローカルの設定を使用] を選択するか、共有プロパティが設定されていない場合は、接続設定の他のオプションを構成できます。

...

  • キープアライブ接続 : テストが現在の接続を共有するかクローズするかを指定します。共有接続は接続プールに返され、他のテスト スイートで使用されます。接続プールのライフ サイクルは次のとおりです。
    • 単一のテストの場合、テスト実行後に接続プールが破棄されます。
    • テスト スイートの場合、テスト スイート実行の最後で接続プールが破棄されます。
    • 負荷テストの場合、負荷テストの最後で接続プールが破棄されます。

Anchor
jms_queue_topic
jms_queue_topic
キュー/トピック

[キュー/トピック オプション] には以下のオプションがあります。

  • JMS Destination: メッセージを送信するキュー名 (ポイント ツー ポイントを使用する場合) まはたトピック名 (パブリッシュ/サブスクライブを使用する場合) を指定します。
  • JMS ReplyTo: レスポンス メッセージを取得するキュー名 (ポイント ツー ポイントを使用する場合) まはたトピック名 (パブリッシュ/サブスクライブを使用する場合) を指定します。[差出人] ではなく [一時的] を選択すると、一時キューを使用できます。

Anchor
jms_messaging_model
jms_messaging_model
メッセージング モデル

メッセージング モデル オプションは、アプリケーション間でどのようにメッセージが送信されるかを指定します。[ポイント ツー ポイント] または [パブリッシュ/サブスクライブ] を選択します。

Anchor
jms_messaging_expiration
jms_messaging_expiration
メッセージの期限

メッセージ期限オプションは、メッセージの有効期限を (ミリ秒で) 指定します。

Anchor
jms_message_exchange_pattern
jms_message_exchange_pattern
メッセージ交換パターン

メッセージ交換パターン オプションは、SOAtest がレスポンスを受信するかどうかを指定します。[レスポンスの取得] をオンにすると、SOAtest はメッセージを送信してレスポンスを受信します。[レスポンスの取得] をオフにすると、SOAtest は一方向のメッセージを送信し、レスポンスを受信しません。

...

このオプションと [レスポンスの JMSCorrelationID とリクエストの JMSMessageID を照合] は同時に選択できません。なぜなら、 JSM の仕様はメッセージ送信後に JMSMessageID を生成するようベンダーに要求しているからです。そのため、メッセージが送信され JMSMessageID が利用可能になる前に、応答条件 (セレクター) を指定してレスポンスの返信先にコンシューマーを作成することはできません。 

Anchor
jms_message_type
jms_message_type
メッセージ タイプ

ドロップダウン メニューからメッセージ タイプを選択できます。JMS メッセージは、JMS クライアント間で転送されるデータを含む Java オブジェクトです。次のメッセージ タイプを選択できます。

  • TextMessage: java.lang.String を含むメッセージの送信に使用されます。単にシンプルなテキスト ドキュメントを送信したい場合に役立ちます。SOAP over JMS の場合は、TextMessage に入力した文字列は SOAP エンベロープである必要があります。
  • BytesMessage: 未解釈バイトのストリームを含むメッセージの送信に使用します。メッセージの受信者はそのバイトが適切であるとして解釈します。SOAP over JMS の場合は、ByteMessage に入力したバイトは SOAP エンベロープを構成するべきです。データは、最も基本的な表現で送信されます。また、JMS ノードが転送データ/ルーティング データのみに興味があり、データのコンテンツが重要ではないときに役立ちます。BytesMessage は TextMessage と並んで最も一般的に使用されます。
    • Parasoft 設定のエンコーディングが UTF-8 (デフォルト) のとき、SOAtest がレスポンスの BytesMessage から文字列を抽出する方法を制御するために [メソッド] オプションを使用できます。ドロップダウン リストの 2 つのメソッドは BytesMessage JMS API で利用可能な 2 つのメソッドに対応します (詳細については Oracle Java ドキュメントを参照してください)。
    • 異なるエンコーディングが設定で選択されている場合、 SOAtest は異なる文字エンコーディングを考慮するためにレスポンス メッセージ上で常に BytesMessage.readBytes() を呼び出します。
  • StreamMessage: プリミティブ値のストリームの送信に使用します。SOAP over JMS の場合、 StreamMessage に入力したストリームは SOAP エンベロープであるべきです。
  • ObjectMessage: Java Serializable の送信に使用します。Java Serializable を返すにはスクリプティング入力ビューを使用するべきです。SOAtest はこのオブジェクトを取得し、実行中に ObjectMessage に挿入します。
  • MapMessage: 名前 - 値の組み合わせの送信に使用します。この値は、 Java プリミティブか個々のラッパー、文字列、またはバイト配列のみです。MapMessage オブジェクトの複雑さのひとつは、ユーザーが文字列 (setString() を使用) として値を挿入しても、値が数値に強制できる場合は getInt() を呼び出して integer 型の値を取得することです。

Anchor
jms_request_message_properties
jms_request_message_properties
リクエスト メッセージ プロパティ

リクエスト メッセージ プロパティは任意プロパティです。メッセージをキューに送信 (またはトピックにパブリッシュ) する前に javax.jms.Message オブジェクトにさまざまなプロパティ値を設定できます。これらは、対応する javax.jms.Message の "set" メソッドの 1 つ、またはカスタム プロパティ (たとえば、 setStringProperty、setBooleanProperty、 setByteProperty などで設定されたプロパティ) を含みます。

[追加] をクリックし、 [JMS プロパティの追加] ダイアログを完了することによって追加できるプロパティの値は、固定値、パラメータライズ値、スクリプトを使用した値、または固有値 (2 つのツールの呼び出しが同じ値を使用しないような、自動的に生成されるランダムな一意の値) に設定することができます。追加する値それぞれに必ずタイプを指定してください。


Anchor
jms_response_message_correlation
jms_response_message_correlation
レスポンス メッセージ応答条件

[レスポンス メッセージ応答条件] には以下のオプションがあります。

  • レスポンスの JMSCorrelationID とリクエストの JMSMessageID を照合: このオプションをオンにすると、セレクター式に JMSCorrelationID = '[msgId]' という条件が追加されます。msgId は発信 (リクエスト) avax.jms.Message が getJMSMessageID() を使用して動的に生成する値です。つまり、指定された相関 ID を持つメッセージがキュー (またはトピック) で利用可能になるまで、ツールはブロックされます。また、ツールはキュー (またはトピック) の任意のメッセージではなく、指定された特定のメッセージだけを取得します。タイムアウト期間が経過してもセレクター条件によって期待されるメッセージがない場合、ツールはタイムアウトします。
  • レスポンスの JMSCorrelationID とリクエストの JMSCorrelationID を照合 : このオプションをオンにすると、セレクター式に JMSCorrelationID = '[correlationId]' という条件が追加されます。correlationId は [リクエスト メッセージ プロパティ] セクションの JMSCorrelationID プロパティから取得されます。このオプションは、[リクエスト メッセージ プロパティ] セクションに JMSCorrelationID プロパティが追加されている場合にだけ利用可能です。つまり、指定された相関 ID を持つメッセージがキュー (またはトピック) で利用可能になるまで、ツールはブロックされます。また、ツールはキュー (またはトピック) の任意のメッセージではなく、指定された特定のメッセージだけを取得します。タイムアウト期間が経過してもセレクター条件によって期待されるメッセージがない場合、ツールはタイムアウトします。
  • その他のセレクター式の条件: (任意) メッセージ フィルターとして機能する値を入力します。たとえば、username==John と入力することで、ユーザー名として "John" を含むメッセージのみが配信されます。このフィールドが空の場合、どんなメッセージでもキューから受信できます。
    この式はポイントツー ポイントの javax.jms.QueueSession クラスの createReceiver() メソッドに渡されるか、パブリッシュ/サブスクライブメッセージの javax.jms.TopicSession クラスの createSubscriber() メソッドに渡されます。セレクターの指定に関するヒントは、「メッセージ セレクター フィルターの使用」を参照してください。

JMS を使用するクライアントのためのメッセージ オブジェクト出力

JMS トランスポートを使用する Messaging Client にメッセージ オブジェクト出力を追加できます。また、JMS トランスポートを使用する Call Back ツールに受信 JMS メッセージ オブジェクト出力を追加することもできます。たとえば、JMS を使用する Messaging Client に連結された Extension ツールは、レスポンスの JMS メッセージにアクセスできます。ObjectMessage では、getter および equals() メソッドを使用してレスポンスを検証し、回帰コントロールを作成できます。また、レスポンス トラフィックに Diff ツールを連結し、レスポンスが ObjectMessage である場合、SOAtest は挿入されたシリアライザブル オブジェクトを XML 形式に変換し、XML の比較を実行します。その際、データ バンクの値を使用したり、XPath の差異を無視したりできます。

...

  1. 出力を追加する Messaging Client または Call Back ツールのノードを右クリックし、ショートカット メニューの [出力の追加] をクリックします。[出力の追加] ウィザードが表示されます。



  2. [出力の追加] ウィザードの左側のペインで [レスポンス] > [ メッセージオブジェクト] (Call Back ツールの場合は [受信リクエスト] > [受信 JMS メッセージ]) を選択します。 
  3. 右側のペインで [新規出力] または [既存の出力] および目的のツール (Extension ツールなど) を選択します。
  4. [終了] ボタンをクリックします。選択されたノードに新規出力が追加されます。

Anchor
jms_provider_configuration
jms_provider_configuration
一般的な JMS プロバイダーの構成

詳細については、次を参照してください。 JMS プロバイダーの設定Provider Configuration

一時的な JMSReplyTo キューへの応答

JMS メッセージに対して、JMSReplyTo フィールドに設定した一時キューを使用して応答するには、次の操作を行います。

...

SOAtest は、宛先として入力されたキーワードの代わりに、受信メッセージの一時キューを宛先として使用します。

Anchor
jms_message_selector_filters
jms_message_selector_filters
メッセージセレクター フィルターの使用

さまざまなツールで、メッセージ フィルターとして振る舞う値を指定できます。[メッセージ セレクター] または [その他のセレクター式条件] というラベルのフィールドで指定します。

...

  • [その他のセレクター式の条件] の値を変数、環境変数、およびデータ ソース値に対してパラメータライズできます。変数および環境変数を参照する構文は、 ${myVariableName} です。XML Data Bank の値と XML Data Source の値を参照する構文は ${myColumnName} です。${myColumnName}.たとえば、 JMSCorrelationID = '${myColumnName} を使用できます。

  • コンテンツに基づいてイベント メッセージをフィルターしたい場合、XML Transformer のようなツールを自身の XML のイベント出力として連結できます。
  • セレクター フィールドは "message selectors" と呼ばれる JMS 機能にリンクします。SOAtest は指定した式を javax.jms.MessageConsumer を作成するときに javax.jms.Session オブジェクトに渡します。JMS 仕様によって定義されたように、セレクター式は JMS メッセージ ヘッダーおよびプロパティに適用できます。メッセージ ボディのコンテンツには適用できません。
  • ポイントツー ポイント メッセージングでは、この式は javax.jms.QueueSession クラスの createReceiver() メソッドに渡されます。パブリッシュ/サブスクライブ メッセージングでは、javax.jms.TopicSession クラスの createSubscriber() メソッドに渡されます。
  • 式構文は SQL92 のサブセットです。たとえば、fruit = 'apple' または JMSCorrelationID = '123456' という式は、 SOAtest がプロパティ fruit が値 apple で定義された JMS メッセージ、または JMSCorrelationID が値 123456 に設定された JMS ヘッダーだけをピックアップすることになります。

  • JMS 機能についての詳細な情報は、 Oracle Java サイトの Java Message Service 仕様を参照してください。

Anchor
jms_messaging_without_JNDI
jms_messaging_without_JNDI
JNDI を伴わない JMS メッセージング

JMS 接続ファクトリおよび宛先インスタンスを取得するために JNDI を使用することは、構造上の側面から非常に推奨されています。なぜなら、JMS コンシューマー コードをベンダー固有の依存性から分離するからです。テスト環境またはステージング環境では、 JMS システムは JNDI が構成されていない、または JNDI が任意の接続ファクトリに含まれていない場合があります。さらに、 JNDI の有無で課題をデバッグするまたはシステム パフォーマンスの特性を分離するために、テスト中に JNDI をバイパスするのに役立つ可能性があります。

...

この機能は、JMS 接続がそもそも JNDI を使用することなく確立されることを可能にするよう設計され、単一の文字列引数を接続 URL として受け取るコンストラクターとともに接続ファクトリ クラスを提供する特定の JMS 実装をサポートします。

サポートされている JMS の実装

JNDI を使用しない JMS メッセージのサポートは、標準の JMS API に基づいていないため異なる JMS 実装間での移植性は保証されません。 

...

現時点では、Oracle/BEA WebLogic、 JBoss、または WebSphere Default JMS プロバイダー用に接続ファクトリを直接作成することは SOAtest ではサポートされていません。ほとんどの場合は、これらのベンダーによってドキュメント化または推奨されていません。 

設定

SOAtest で JMS メッセージ ツールの 1 つが JNDI を使用せずにメッセージを送受信するように構成するには、次の操作を行います。

...

注意: Sun の JNDI 実装も利用可能です。詳細については、「Sun JMS」を参照してください。

キューのコンテンツをブラウズ

[キュー ブラウザー] ビューでは、Websphere MQ、 Websphere Application Server、 Tibco EMS、 Sonic MQ、 ActiveMQ、 およびその他の JMS プロバイダー上にデプロイされたキューの内容を参照できます。詳細については、 「SOAtest でのキューのブラウズ」および「 Virtualize でのキューのブラウズ」 を参照してください。