セクションの内容:
SOAtest はJMS メッセージ タイプのほかに SonicMQ トランスポートの MultiPartMessage
をサポートします。JMS メッセージ タイプの場合は、JMS トランスポートを使用する必要があります。JMS トランスポートの詳細については 「JMS」を参照してください。
発信メッセージの場合、text/xml" タイプとしてリクエスト メッセージをラップする単一のパートからなる MultiPartMessage
が作成されます。ユーザーは、[パート コンテンツID] フィールドを使用してパートの 'Content-ID' ヘッダー フィールドの値を指定できます。受信メッセージの場合、JMS トランスポートもSonicMQ トランスポートも複数のパートからなる MultiPartMessage を解析できます。
SonicMQ のための新規テストを作成
SonicMQ のためのテストを作成するには、次の操作を行います。
- 通常と同じように WSDL テスト作成ウィザードを完了します (詳細については 「WSDL からのテスト作成」を参照してください)。
- SonicMQ を使用するテストのノードをダブルクリックします。
- GUI 右側のパネルで [トランスポート] タブを開き、[トランスポート] ドロップダウン リストから [SonicMQ] を選択します。[トランスポート] ドロップダウン リストの下に、以下のオプションが表示されます。
- 接続設定
- キュー/トピック
- メッセージング モデル
- メッセージ交換パターン
- メッセージ タイプ
- リクエスト メッセージ プロパティ
- レスポンス メッセージ応答条件
- 以下のセクションの説明に従って必要なオプションを構成します。
SonicMQ オプションの構成
ツールの [トランスポート] タブの [ トランスポート] ドロップダウン メニューで [SonicMQ] を選択すると、[トランスポート] タブの左ペインに次のオプションが表示されます。
接続設定
[接続設定] には [設定] タブと [プロパティ] タブがあります。[プロパティ] タブは任意オプションであり、[設定] タブで指定される プロバイダー URL および 初期コンテキスト プロパティの他に、JNDI の javax.naming.InitalContext コンストラクターに渡される付加的なプロパティを指定できます。[設定] タブには以下のオプションがあります。
- SonicMQ 接続用の共有プロパティを作成した場合、ドロップダウン メニューが使用可能になり、[ローカルの設定を使用] または [共有プロパティを使用] を選択できます。
[共有プロパティを使用] を選択すると、もう 1 つのドロップダウン メニューが表示され、ツールが使用するグローバル SonicMQ 設定を選択できます。グローバル SonicMQ 設定の詳細については、 グローバル設定の追加を参照してください。
- [ローカルの設定を使用] を選択するか、共有プロパティが設定されていない場合は、接続設定の他のオプションを構成できます。
- プロバイダー URL: JNDI javax.naming.InitialContext コンストラクターに渡される javax.naming.Context.PROVIDER_URL プロパティの値を指定します。
- 初期コンテキスト: JNDI javax.naming.InitialContext コンストラクターにjavax.naming.Context.INITIAL_CONTEXT_FACTORY プロパティの文字列値として渡される完全修飾クラス名の文字列を指定します。
- 接続ファクトリ: javax.jms.QueueConnectionFactory または javax.jms.TopicConnectionFactory のインスタンスを作成するために javax.naming.InitialContext の lookup() メソッドに渡されます。
[接続設定] には、以下のその他のオプションがあります。
- キュー接続またはトピック接続の認証: キュー接続を作成するためのユーザー名およびパスワードを指定できます。リクエストを認証するには、[認証の実行] チェックボックスをオンにし、[ユーザー名] および [パスワード] を入力します。正しいユーザー名およびパスワードが指定されていない場合、リクエストは認証されません。ここで指定したユーザー名とパスワードは、javax.jms.QueueConnectionFactory クラスの createQueueConnection() メソッドに渡され、javax.jms.QueueConnection のインスタンスの取得に使用されます。
- キープアライブ接続 : テストが現在の接続を共有するかクローズするかを指定します。共有接続は接続プールに返され、他のテスト スイートで使用されます。接続プールのライフ サイクルは次のとおりです。
- 単一のテストの場合、テスト実行後に接続プールが破棄されます。
- テスト スイートの場合、テスト スイート実行後に接続プールが破棄されます。
キュー/トピック
[キュー/トピック オプション] には以下のオプションがあります。
- JMS Destination: メッセージを送信するキュー名 (ポイント ツー ポイントを使用する場合) まはたトピック名 (パブリッシュ/サブスクライブを使用する場合) を指定します。
- JMS ReplyTo: レスポンス メッセージを取得するキュー名 (ポイント ツー ポイントを使用する場合) まはたトピック名 (パブリッシュ/サブスクライブを使用する場合) を指定します。[差出人] ではなく [一時的] を選択すると、一時キューを使用できます。
メッセージング モデル
メッセージング モデル オプションは、アプリケーション間でどのようにメッセージが送信されるかを指定します。[ポイント ツー ポイント] または [パブリッシュ/サブスクライブ] を選択します。
メッセージ交換パターン
メッセージ交換パターン オプションは、SOAtest がレスポンスを受信するかどうかを指定します。[レスポンスの取得] をオンにすると、SOAtest はメッセージを送信してレスポンスを受信します。[レスポンスの取得] をオフにすると、SOAtest は一方向のメッセージを送信し、レスポンスを受信しません。
[レスポンスの取得] をオンにすると、[メッセージ送信前に JMS の返信先にメッセージ コンシューマーを作成] オプションも利用可能になります。JMS の返信先トピックに非常に短時間でレスポンスが到着することが予想される場合、このオプションをオンにして、レスポンス メッセージがパブリッシュされる前に必ず SOAtest が返信先トピックをサブスクライブしているようにします。
このオプションと [レスポンスの JMSCorrelationID とリクエストの JMSMessageID を照合] は同時に選択できません。なぜなら、 JSM の仕様はメッセージ送信後に JMSMessageID を生成するようベンダーに要求しているからです。そのため、メッセージが送信され JMSMessageID が利用可能になる前に、応答条件 (セレクター) を指定してレスポンスの返信先にコンシューマーを作成することはできません。
メッセージ タイプ
ドロップダウン メニューからメッセージ タイプを選択できます。SonicMQ メッセージは、SonicMQ クライアント間で転送されるデータを含む Java オブジェクトです。次のメッセージ タイプを選択できます。
- progress.message.jclient.MultipartMessage
パート コンテンツ ID
Sonic MultipartMessage は複数のパートを持つことができます。各パートには固有の名前 (ID) とコンテンツがあります。SOAtest および Virtualize は単一パートの MultipartMessages の送信をサポートします。 このフィールドでパートの名前を指定し、[リクエスト] エリアでコンテンツを定義します (フォーム入力、リテラルXMLなど)。SOAtest および Virtualize はマルチパートの MultipartMessages の受信をサポートしており、すべてのパートのコンテンツを XML としてツールのレスポンス出力に出力します。
リクエスト メッセージ プロパティ
リクエスト メッセージ プロパティは任意プロパティです。メッセージをキューに送信 (またはトピックにパブリッシュ) する前に javax.jms.Message オブジェクトにさまざまなプロパティ値を設定できます。javax.jms.Message クラスの set メソッドを使用して発信リクエスト メッセージに設定する定義済みプロパティや、setStringProperty() で設定する任意のカスタム プロパティを設定できます。
レスポンス メッセージ応答条件
[レスポンス メッセージ応答条件] には以下のオプションがあります。
- レスポンスの JMSCorrelationID とリクエストの JMSMessageID を照合: このオプションをオンにすると、セレクター式に JMSCorrelationID = '[msgId]' という条件が追加されます。msgId は発信 (リクエスト) avax.jms.Message が getJMSMessageID() を使用して動的に生成する値です。つまり、指定された相関 ID を持つメッセージがキュー (またはトピック) で利用可能になるまで、ツールはブロックされます。また、ツールはキュー (またはトピック) の任意のメッセージではなく、指定された特定のメッセージだけを取得します。タイムアウト期間が経過してもセレクター条件によって期待されるメッセージがない場合、ツールはタイムアウトします。
- レスポンスの JMSCorrelationID とリクエストの JMSCorrelationID を照合 : このオプションをオンにすると、セレクター式に JMSCorrelationID = '[correlationId]' という条件が追加されます。correlationId は [リクエスト メッセージ プロパティ] セクションの JMSCorrelationID プロパティから取得されます。このオプションは、[リクエスト メッセージ プロパティ] セクションに JMSCorrelationID プロパティが追加されている場合にだけ利用可能です。このオプションがオンの場合、指定された相関 ID を持つメッセージがキュー (またはトピック) で利用可能になるまで、ツールはブロックされます。また、ツールはキュー (またはトピック) の任意のメッセージではなく、指定された特定のメッセージだけを取得します。タイムアウト期間が経過してもセレクター条件によって期待されるメッセージがない場合、ツールはタイムアウトします。
その他のセレクター式の条件: (任意) メッセージ フィルターとして機能する値を入力します。セレクターの指定に関する詳細は、 「メッセージ セレクター フィルターの使用」を参照してください。
SonicMQ を使用するクライアントのためのメッセージ オブジェクト出力
SonicMQ トランスポートを使用するツールにメッセージ オブジェクト出力を追加できます。たとえば、SonicMQ を使用する Messaging Client ツールに Extension ツールを連結すると、レスポンス SonicMQ メッセージにアクセスできます。ObjectMessage の場合、 getter
および equals()
メソッドを使用してレスポンスを検証し、回帰コントロールを作成できます。また、レスポンス トラフィックに Diff ツールを連結し、レスポンスが ObjectMessage である場合、SOAtest は挿入されたシリアライザブル オブジェクトを XML 形式に変換し、XML の比較を実行します。その際、データ バンクの値を使用したり、XPath の差異を無視したりできます。
メッセージ オブジェクト出力を追加するには、次の操作を行います。
出力を追加するSOAP Client または Messaging Clientのノードを右クリックし、ショートカット メニューの [出力の追加] をクリックします。[出力の追加] ウィザードが表示されます。
- 左側のパネルで [レスポンス] > [メッセージ オブジェクト] を選択し、右側のパネルで [新規ツール] または [既存ツール] を選択して任意のツール (Extension ツールなど) を選択します。
- [終了] ボタンをクリックします。選択されたクライアントのノードに新規出力が追加されます。