IBM WebSphere Process Server または IBM WebSphere Enterprise Service Bus v7.0.0.x での、IBM WebSphere MQ JMS プロバイダーを使用した SOAP over JMS による Web サービス

IBM WebSphere Process Server と IBM WebSphere Enterprise Service Bus の両製品には、SOAP over JMS (Java Message Service) プロトコルを使用して Web サービスを呼び出したり、提供したりするためのサポートが組み込まれています。WebSphere Process Server の V6.02 と V6.1 および WebSphere Enterprise Service Bus の V6.02 と V6.1 について説明している記事を読めば、SIBus JMS プロバイダーではなく、IBM WebSphere MQ JMS プロバイダーを使用して SOAP メッセージを送受信できるように、SOAP over JMS エクスポートおよびインポートの参照先 JNDI (Java Naming and Directory Interface) リソースを変更する方法を学ぶことができます。しかし、WebSphere Process Server の V7.0 および WebSphere Enterprise Service Bus の V7.0 では、いくつかの点が変更されています。そこで、この記事ではこれらの変更点について説明します。この記事の内容を理解するには、IBM WebSphere Integration Developer 7.0 でのモジュール作成方法、そして WebSphere MQ リソースの作成方法を把握している必要があります。

Simon Holdsworth, STSM - Architect, IBM

Simon HoldsworthSimon Holdsworth は、IBM Hursley Lab のソフトウェア・エンジニアとして、これまでさまざまなプロジェクトに携わってきました。これらのプロジェクトには、メインフレーム・アセンブラー・プログラミング、C、C++、そしてごく最近では Java も含まれます。現在、IBM WebSphere Enterprise Service Bus および WebSphere Process Server 製品の全体的ソフトウェア・アーキテクチャーと接続性の高位設計を担当する彼は、OASIS SCA Bindings 技術委員会の議長でもあります。Web サービスをサポートするシステムの設計および実装を始めたのは 2001年に遡り、この最先端技術に対する取り組みを通して、15 の特許を取得しました。彼は、IBM Master Inventor です。



Bo Wang, Software Engineer, IBM

Wang BoWang Bo は、北京にある IBM China Lab のビジネス・マネジメント開発チームでソフトウェア開発者として働いています。彼の専門は、Web サービス・バインディングです。



2011年 9月 30日

はじめに

WebSphere Integration Developer では、プロトコルに SOAP over JMS が選択されたモジュールに対しては、組み込み (SIBus) JMS プロバイダーを使用すること、そして常に組み込み JMS プロバイダーのリソースを生成することを前提に、インポート・バインディングまたはエクスポート・バインディングが生成されます。WebSphere Process Server と WebSphere ESB のランタイム実装では JMS API を使用するため、管理者は生成された JMS リソースを置き換えることによって、MQ JMS での SOAP メッセージ転送に他の JMS プロバイダー (具体的には、WebSphere MQ JMS プロバイダー) を使用することができます。

この記事では、WebSphere Process Server および WebSphere Enterprise Service Bus で、WebSphere MQ JMS リソースを使用するように Web サービス SOAP over JMS バインディングを設定したインポートおよびエクスポートを構成する方法を説明します。この記事で紹介するサンプル SCA (Service Component Architecture) アプリケーションには、Web サービス・ベースの SOAP over JMS バインディングを設定したインポートおよびエクスポートを組み込みます。そして、WebSphere MQ JMS リソースを使用するように、それらのインポートおよびエクスポートを変更する方法を説明します。記事で説明する手順をひと通り読めば、この手順を他のインポートとエクスポートにも適用できるようになります。

説明する手順は、エクスポートとインポートでは幾分異なります。エクスポートではメッセージ駆動型 Bean (MDB) を使用してリクエストを受信し、各リクエストの JMSReplyTo ヘッダーによって指定された宛先にレスポンスを送信します。エクスポートのリソースを変更するには、IBM WebSphere Application Server 管理コンソールを使用します。WebSphere Process Server および WebSphere ESB V7.0 での MQ JMS プロバイダーは、JCA (J2EE (Java 2 Platform, Enterprise Edition) Connector Architecture) リソース・アダプターです。つまり、MDB は、以前のリリースで使用されていたリスナー・ポート・オブジェクトではなく、アクティベーション・スペック・オブジェクトによって構成されることを意味します。

インポートでは MDB を使用せずにレスポンスを受信します。そのため、WebSphere Integration Developer ツールでインポート・バインディングに指定する JMS URL によって、単一の返信キューを使用するように構成することも、リクエストごとに 1 つの一時返信キューを使用するように構成することもできます。JMS URL の構文のなかで、この構成に該当する部分については、この記事で説明します。

以上の構成手順に従うには、以下のソフトウェアが必要です。

この記事で使用するアプリケーション・モジュールは、WebSphere Process Server V7.0.0.3 で開発およびテストされています。これらのモジュールは、WebSphere Integration Developer と WebSphere Process Server または WebSphere Enterprise Service Bus で SOAP over JMS を使用した SCA モジュールを作成および構成する方法を説明するためのサンプルです。WebSphere Integration Developer V7.0.0.3 には、ダウンロード可能なプロジェクト交換ファイルが用意されています。

ポイント・ツー・ポイント・メッセージングに必要なリソース

このセクションでは、WebSphere MQ および WebSphere MQ JMS リソースを定義する手順を説明します。定義したリソースは、Web サービス SOAP over JMS バインディングを設定したインポートまたはエクスポートで使用できるようになります。ここで使用するリソース名は単なる例なので、必要に応じて変更して構いません。最初に説明するのは、キュー宛先を使用したポイント・ツー・ポイント・メッセージング・モデルを扱う方法です。トピックを使用したパブリッシュ/サブスクライブ・メッセージング・モデルを扱う方法については、後で記載する「パブリッシュ/サブスクライブ・メッセージングに必要なリソース」セクションで説明します。WebSphere MQ キュー・マネージャーおよびキューを作成するには、以下の 2 つの方法があります。

  • WebSphere MQ Explorer から作成する
  • コマンドライン・ウィンドウから WebSphere MQ コマンドを使用して作成する

例えばコマンドライン・ウィンドウから作成する場合、「crtmqm QMGR」と入力してキュー・マネージャーを作成し、「strmqm QMGR」と入力してそのキュー・マネージャーを起動します (必要なオブジェクトの作成方法について詳しく説明している WebSphere MQ V7.0 インフォメーション・センターへのリンクを「参考文献」で参照してください)。

この手順のために、以下の WebSphere MQ キュー・マネージャーおよび WebSphere MQ キューを作成する必要があります。

  • WebSphere MQ キュー・マネージャー: QMGR
  • WebSphere MQ キュー: Web サービス SOAP over JMS バインディングを設定したエクスポートで使用するための REQUESTQ および RESPONSEQ を QMGR に作成します。
  • WebSphere MQ キュー: Web サービス SOAP over JMS バインディングを設定したインポートで使用するための REQUESTQ1 および RESPONSEQ1 を QMGR に作成します。

さらに、WebSphere Enterprise Service Bus または WebSphere Process Server の管理コンソールで、上記の WebSphere MQ リソースに対応する WebSphere MQ JMS Provider リソースを作成する必要があります。これらのリソースは、ノード・スコープで WebSphere MQ JMS Provider のリソースとして作成しなければなりません。以下のステップに従って、エクスポートおよびインポート構成に必要なリソースを作成します。

  1. エクスポートとインポート両方のリクエスト接続に使用する WebSphere MQ キュー接続ファクトリーとして、requestMQCF を作成します。このキュー接続ファクトリーは、QMGR を使用します。
  2. エクスポートとインポート両方に返信する際の接続に使用する WebSphere MQ JMS キュー接続ファクトリーとして、replyMQCF を作成します。このキュー接続ファクトリーは、QMGR を使用します。
  3. エクスポートでリクエスト・メッセージを受信するための WebSphere MQ JMS キュー宛先として、requestQ を作成します。このキュー宛先は、REQUESTQ を使用します。
  4. インポートからリクエスト・メッセージを送信するための WebSphere MQ JMS キュー宛先として、requestQ1 を作成します。このキュー宛先は、REQUESTQ1 を使用します。
  5. サーバー上に、requestQ を使用するアクティベーション・スペック、MQAS を作成します。
  6. サーバー上に、requestQ1 を使用するアクティベーション・スペック、MQAS1 を作成します。
  7. レスポンス・メッセージを送信するための WebSphere MQ キュー宛先として、replyQ を作成します。このキュー宛先は、RESPONSEQ を使用します。

注: クライアント・アプリケーションはこのキューを、返信の送信先として使用します。JMS メッセージの JMSReplyTo ヘッダーで指定されるこの宛先は、Web サービス SOAP over JMS エクスポート・バインディングまたはインポート・バインディングに対しては構成されません。


ポイント・ツー・ポイント・メッセージング・モデルの場合のアプリケーション・シナリオ

図 1. ポイント・ツー・ポイント・メッセージング・モデルの場合のシナリオの例
ポイント・ツー・ポイント・メッセージング・モデルの場合のシナリオの例
  • WSMQJMSClient: JSP (JavaServer Pages) の sendMessage.jsp を使用して SOAP メッセージを送信する Web アプリケーション。
  • WSMQJMSBackEndService: SOAP over JMS で WebSphere MQ リソースを使用する Web サービス。この Web サービスの実装は、別の Web サービスを呼び出します。
  • WSMQJMSServiceProvider: WebSphere MQ リソースを使用する別の Web サービス・プロバイダー。これらのアプリケーションの間でのメッセージ・フローは以下のとおりです。
    1. クライアントは、指定された WebSphere MQ キューに SOAP メッセージを送信します。
    2. WebSphere MQ キューに入れられた SOAP メッセージが、Web サービス SOAP over JMS バインディングを設定したエクスポートによってビジネス・オブジェクトに変換されます。
    3. Java コンポーネントがメッセージを処理し、Web サービス SOAP over JMS バインディングを設定したインポートを使用して別の Web サービス・プロバイダーを呼び出します。
    4. Java コンポーネントが、Web サービス SOAP over JMS バインディングを設定したエクスポートを使用して、指定された WebSphere MQ キューにレスポンス・メッセージを返します (リクエスト操作がレスポンスを伴う操作 (リクエスト/レスポンス操作) の場合)。

SOAP over JMS エクスポート・バインディングを使用するアプリケーションを作成する

このアプリケーションは、Web サービス SOAP over JMS バインディングを設定したエクスポートと、Web サービスのインターフェースを実装した Java コンポーネントを使用するように設計されています。このエクスポートは、JMS クライアント・アプリケーションが送信する SOAP メッセージを受信します。SOAP メッセージは、アプリケーション内のコンポーネントが使用できるように、ランタイムによってビジネス・オブジェクトに変換されます。例として引用するこのアプリケーションを、この後 WebSphere MQ JMS リソースを使用するように変更します。これと同じ手順は、Web サービス SOAP over JMS バインディングを設定した独自のエクスポートにも適用することができます。それでは、手順を追っていきましょう。

  1. MyLibrary という名前のライブラリーを作成します。このライブラリーには、以下の 3 つの関数を持つ CustomerService インターフェースがあります (リスト 1 を参照)。
リスト 1. CustomerService インターフェース
CustomerInfo getCustomerInfo(String id);
void createCustomer(String id);
int getQuantity(String id);
  1. WSMQJMSServiceProvider という名前のモジュールを作成します。このモジュールには、Web サービス SOAP over JMS バインディングを設定したエクスポート、そして WebSphere Integration Developer の Java コンポーネントを格納します。図 2 に、ProviderSOAPMQJMSExport の Web サービス SOAP over JMS バインディングを示します。
図 2. WSMQJMSServiceProvider アプリケーション
WSMQJMSServiceProvider アプリケーション
  1. このアプリケーションが MyLibrary に依存していることを確認します。

Web サービス・アプリケーションを構築する

WebSphere Integration Developer で、以下の手順に従ってプロジェクトを作成し、インストールします。

  1. WSMQJMSServiceProvider プロジェクトを作成します。
  2. 「File (ファイル)」 > 「Export (エクスポート)」 > 「Export project to integration module export (プロジェクトを統合モジュール・エクスポートにエクスポート)」の順に選択して、プロジェクトを WSMQJMSServiceProvider.ear ファイルにエクスポートします。
  3. WebSphere Process Server または WebSphere Enterprise Service Bus のランタイムを起動します。
  4. WebSphere Application Server 管理コンソールから .ear ファイルをインストールします。

アプリケーションをインストールし、WebSphere MQ JMS を使用するようにこのアプリケーションを変更する

アプリケーションの一部のリソースは、アプリケーションをインストールした後で管理コンソールから変更する必要があります。WebSphere Process Server および WebSphere Enterprise Service Bus V7.0 以降では、インストール時に管理コンソールからリソースを変更することはできません。

デプロイ手順は以下のとおりです。

  1. WSMQJMSServiceProvider.ear ファイルを変更せずにデフォルトのままインストールします。
  2. インストール後に、リソースを変更します。それにはまず、インストール済みアプリケーションのリストに進みます。
  3. WSMQJMSServiceProviderApp アプリケーションをダブルクリックして、構成を表示します (図 3 を参照)。
図 3. アプリケーション構成
アプリケーション構成
  1. 構成に含まれる「Message Driven Bean listener bindings (メッセージ駆動型 Bean リスナー・バインディング)」(図 3 で赤丸 1 として囲ってあります) をクリックします。
  2. Activation Specification Target Resource JNDI Name (アクティベーション・スペックのターゲット・リソース JNDI 名)」を「MQAS1」に変更します (図 4 を参照)。
図 4. SOAP/MQJMS エクスポートのアクティベーション・スペックの構成
Configure Activation Specification for SOAP/MQJMS export
  1. 構成に含まれる「Resource references (リソース参照)」(図 3 で赤丸 2 として囲ってあります) をクリックします。
  2. EJB MessageDriven_ProviderSOAPMQJMSExport_CustomerServiceJmsPort エクスポートの「Target Resource JNDI Name (ターゲット・リソース JNDI 名)」を jms/WebServicesReplyQCF から replyMQCF に変更して、JNDI 名と WebSphere MQ リソースをマッピングします。
図 5. JNDI 名と WebSphere MQ リソースのマッピング
ターゲット・リソース JNDI 名
  1. アプリケーションを起動します。

Web サービス SOAP over JMS バインディングを設定したインポートとエクスポートを使用するアプリケーションを作成する

このセクションで説明するアプリケーションには、以下の構成要素があります。

  • Web サービス SOAP over JMS バインディングを設定したエクスポート。SOAP メッセージを受信してビジネス・オブジェクトに変換するために使用します。
  • Java コンポーネント実装。データ・フィールドをビジネス・オブジェクトに出力します。
  • Web サービス SOAP over JMS バインディングを設定したインポート。WSMQJMSServiceProvider を呼び出します。

このアプリケーションは、WebSphere Integration Developer で図 6 のように作成します。

図 6. WSMQJMSBackEndService アプリケーション
WSMQJMSBackEndService アプリケーション

アプリケーションを作成したら、以下の手順を実行してください。

  1. CustomerServiceImport1 を選択し、アドレス・プロパティーの宛先および接続ファクトリーの値を図 7 のように変更します。アドレス・プロパティーの更新後の値は以下のとおりです。
リスト 2. SOAP over JMS バインディングを設定した Web サービス・インポートのアドレス・プロパティー
jms:/queue?destination=requestQ1&
 connectionFactory=requestMQCF&
 targetService=ProviderSOAPMQJMSExport_CustomerServiceJmsPort
図 7. SOAP/MQJMS インポートのプロパティー
SOAP/MQJMS インポートのプロパティー
  1. アプリケーションをビルドします。
  2. アプリケーションを WSMQJMSBackEndService.ear ファイルにエクスポートします。
  3. WSMQJMSBackEndService.ear ファイルを変更せずにデフォルトのままインストールします。
  4. WSMQJMSBackEndServiceApp を、WSMQJMSServiceProviderApp で行ったように構成します。
  5. WSMQJMSServiceProviderApp のステップ 5 で行ったように、「Activation Specification Target Resource JNDI Name (アクティベーション・スペックのターゲット・リソース JNDI 名)」を変更します。ただし、今回は名前を MQAS に変更してください。
  6. WSMQJMSServiceProviderAppのステップ 7 と同じようにリソースに対するリソース参照のマッピングを変更し、EJB MessageDriven_BackEndSOAPMQJMSExport_CustomerServiceJmsPort エクスポートの JNDI 名を jms/WebServicesReplyQCF から replyMQCF に、WebServiceReference の JNDI 名を jms/ProviderSOAPMQJMSExportQCF から requestMQCF に変更します。

インポートで返信用の永続キューを使用する

デフォルトでは、SOAP over JMS バインディングを設定したインポートによってリクエスト/レスポンス操作が呼び出されると、ランタイムがレスポンス用の一時キューを作成します。このキューは、SOAP over JMS サービスに送信される JMS メッセージ内で replyTo キューとして渡されます。すると、SOAP over JMS バインディングは、レスポンス・メッセージが返信用の一時キューに入れられるのを待ちます。最終的に返信が読み取られると、バインディングは一時キューを破棄します。したがって、一時キューでは永続メッセージを保持することはできません。この理由またはその他の理由から、インポートで返信用に永続キューを使用しなければならない場合には、インポート・バインディングに構成された URL によって、使用するキューを識別することができます。以下は、返信用のキューを指定する URL 構文の一例です。

リスト 3. 返信用のキューを指定する URL 構文の例
jms:/queue?destination=requestQ1&
 connectionFactory=requestMQCF&
 targetService=ProviderSOAPMQJMSExport_CustomerServiceJmsPort&
 replyToDestination=permanentReplyQ

このように構成したインポートを使用する前に、必ず permanentReplyQ JMS リソースとこれに対応する MQ キューを作成する必要があります。

SOAP/MQ JMS クライアント・アプリケーションを作成する

このセクションでは、SOAP メッセージを WebSphere MQ JMS 宛先に送信し、前の手順で再構成したエクスポートに対応するクライアント・アプリケーションに必要な振る舞いについて説明します。SOAP メッセージのフォーマットとプロパティーは、メッセージが SOAP over JMS エクスポートで正しく使用されるように適切な方法で指定しなければなりません。リスト 4 に記載する SOAP メッセージの例は、前に定義した CustomerService インターフェースを使用した片方向のメッセージです。

リスト 4. SOAP JMS メッセージの例
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
     xmlns:q0="http://MyLibrary/CustomerService"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <SOAP-ENV:Body>
  <q0:createCustomer>
   <id>123</id>
  </q0:createCustomer>
 </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

SOAP over JMS エクスポートに送信されるメッセージには、以下の 3 つのJMS ユーザー・プロパティーを設定する必要があります。

  • targetFunctionName: 呼び出し対象とする CustomerService インターフェースの処理 (関数) の名前。この例の場合、値は createCustomer または getCustomerInfo のいずれかに設定する必要があります。
  • JMSReplyTo: レスポンス・メッセージの宛先。このプロパティーは、replyQ に設定します。
  • targetService: Web サービス・ポート名。この値は、BackEndSOAPMQJMSExport_CustomerServiceJmsPort に設定する必要があります。図 8 に、JSP として実装されたクライアント・アプリケーションの例を示します。このクライアント・アプリケーションは、SOAP メッセージを requestQ に送信して、replyQ からレスポンスを受け取ります。
図 8. リクエスト・メッセージを送信するクライアント・アプリケーション
リクエスト・メッセージを送信するクライアント・アプリケーション

sendMessage (メッセージ送信)」ボタンをクリックすると、ランタイムの実行経過がコンソール・ウィンドウに表示され (図 9 を参照)、JSP クライアントがレスポンス・メッセージを受信します (図 10 を参照)。

図 9. コンソール・ウィンドウに表示されたランタイムの実行経過
コンソール・ウィンドウに表示されたランタイムの実行経過
図 10. クライアント・アプリケーションが受信したレスポンス・メッセージ
クライアント・アプリケーションが受信したレスポンス・メッセージ

パブリッシュ/サブスクライブ・メッセージングに必要なリソース

このセクションでは、WebSphere MQ JMS プロバイダーを使って、Web サービス SOAP over JMSバインディングを設定したインポートおよびエクスポートでパブリッシュ/サブスクライブ・モデルを使用する方法を説明します。

WebSphere MQ リソースを作成する

パブリッシュ/サブスクライブ・モデルは、アプリケーション (パブリッシャー) が、このアプリケーションに関心のある一連のアプリケーション (サブスクライバー) に対してメッセージを送信するように設計されています。サブスクライバーは特定のトピックに対する関心事を登録し、パブリッシャーはメッセージがどのトピックと関連するのかを示します。パブリッシャーとサブスクライバーとの間にはブローカーが介在し、特定のトピックに関する各メッセージのコピーを適切なサブスクライバーに送信します。WebSphere MQ には、ブローカーが組み込まれています。パブリッシュ/サブスクライブ・モデルを WebSphere MQ で使用するには、WebSphere Enterprise Service Bus または WebSphere Process Server の管理コンソールで、ノード・スコープに以下の WebSphere MQ リソースを構成する必要があります。

  1. WebSphere MQ JMS トピック接続ファクトリーを作成します (図 11 を参照)。ブローカーは基本的なバージョンであればよいため、WebSphere MQ の組み込みブローカーを使用することができます。
図 11. WebSphere MQ JMS トピック接続ファクトリーの構成
WebSphere MQ JMS トピック接続ファクトリーの構成
  1. MQTopicDest という名前の WebSphere MQ JMS トピック宛先を作成し、JNDI 名を MQTopicDest に、基本トピック名を Greetings に設定します (図 12 を参照)。
図 12. JNDI 名を MQTopicDest に設定した WebSphere MQ トピックの構成
JNDI 名を MQTopicDest に設定した WebSphere MQ トピックの構成
  1. MQTopicAS という名前のアクティベーション・スペックを作成します。このアクティベーション・スペックは MQTopicCF を使用します (図 13 を参照)。
図 13. WebSphere MQ トピック・アクティベーション・スペックの構成
WebSphere MQ トピック・アクティベーション・スペックの構成

WebSphere MQ ブローカー・サービスを構成する

WebSphere MQ ブローカー・サービスを使用するには、ブローカーを初めて使用するときにのみ、以下の初期セットアップを行う必要があります。この初期セットアップによって、いくつものキューが作成されます。そのなかでも、サブスクリプション・メッセージを処理するために使用されるキューは、SYSTEM.BROKER.CONTROL.QUEUE というキューです。

$WMQ_INSTALL\Java\bin runmqsc QMGR <MQJMS_PSQ.mqsc

パブリッシュ/サブスクライブ・モデルの場合のアプリケーション・シナリオ

このアプリケーション・シナリオは、パブリッシャーとサブスクライバーの両方が WebSphere MQ リソースを使用して SOAP メッセージで通信できるように設計されています。図 14 は、アプリケーション・シナリオの一例です。このシナリオには、WSMQJMSPublisher アプリケーションと WSMQJMSSubscriber アプリケーションが含まれています。WSMQJMSPublisher は、メッセージを MQTopicDest トピックにパブリッシュするクライアント・アプリケーションです。WSMQJMSSubscriber は、MQTopicDest トピックをサブスクライブして SOAP メッセージを受信するための Web サービス・アプリケーションです。

図 14. パブリッシュ/サブスクライブ・モデルの場合のアプリケーション・シナリオ
パブリッシュ/サブスクライブ・モデルの場合のアプリケーション・シナリオ

片方向の操作を行うためのインターフェースを作成する

Web サービス SOAP over JMS バインディングを設定したインポートまたはエクスポートでパブリッシュ/サブスクライブを使用する場合には、サポートされる操作は片方向の操作のみです。したがって、ここで必要となるのは片方向の操作を行うためのインターフェースです。以下の手順に従って、インターフェースを作成してください。

  1. MyLibrary に含める GreetingService という名前の新規インターフェースを作成します。
  2. インターフェースに void sayHello(String message); という片方向の操作を作成します。
  3. MyLibrary を保存してビルドします。

サブスクライバー・アプリケーションを作成する

  1. WebSphere Integration Developer で、WSMQJMSSubscriber という名前の新規モジュールを作成します。このモジュールには、SubscriberSOAPMQJMSExport という Web サービス SOAP over JMS バインディングを設定したエクスポートと、HandleTopic という Java コンポーネントを設定します (図 15 を参照)。
図 15. Web サービス・アプリケーションの例
Web サービス・アプリケーションの例

このモジュールでは、Web サービス SOAP over JMS バインディングを設定したエクスポートで WebSphere MQ JMS トピックを使用する方法を示します。

  1. MyLibrary 内の WSMQJMSSubscriber_SubscriberSOAPMQJMSExport.wsdl という WSDL ファイルを開き、SubscriberSOAPMQJMSExport バインディングのアドレス・プロパティーがリスト 5 のようになるように、メッセージ・タイプを queue から topic に変更します。
リスト 5. SOAP over JMS バインディングを設定した Web サービス・エクスポートのアドレス・プロパティー
jms:/topic?destination=jms/SubscriberSOAPMQJMSExport&
connectionFactory=jms/SubscriberSOAPMQJMSExportQCF&
targetService=SubscriberSOAPMQJMSExport_GreetingServiceJmsPort

上記の変更は、SOAP over JMS エクスポートのプロパティー・ウィンドウ (図 16 を参照) では実行することができません。

図 16. WSMQJMS エクスポートのプロパティー
WSMQJMS エクスポートのプロパティー

この変更により、エクスポートは、リクエスト・メッセージを受信するにはトピックをサブスクライブする必要があることを確実に認識します。HandleTopic メソッドの実装は単に、SubscriberSOAPMQJMSExport から渡されるメッセージを sayHello(String message) メソッドで出力するにすぎません。

  1. 変更内容を保存して、WSMQJMSSubscriber アプリケーションをビルドします。

サブスクライバー・アプリケーションをデプロイおよびインストールする

WSMQJMSSubscriber アプリケーションを EAR ファイルにエクスポートして、このファイルを WebSphere Enterprise Service Bus または WebSphere Process Server の管理コンソールからインストールします。この手順は、「アプリケーションをインストールし、WebSphere MQ JMS を使用するようにこのアプリケーションを変更する」セクションで説明した手順と同じです

パブリッシャー・アプリケーションを作成する

このセクションでは、Web サービス SOAP over JMS バインディングが設定されたインポートを利用するサンプル・パブリッシャー・アプリケーションの作成方法を説明します。ここで作成するモジュールには、Web サービス SOAP over JMS バインディングが設定されたインポートのみが含まれるようにします。以下の手順で、その作成方法を説明します。

  1. WSMQJMSPublisher という名前の新しいモジュールを作成します。
  2. 「MyLibrary」 > 「Web Service Ports (Web サービス・ポート)」 > 「SubscriberSOAPMQJMSExport_GreetingServiceJmsPort」の順にナビゲートします。
  3. SubscriberSOAPMQJMSExport_GreetingServiceJmsPort」を「WSMQJMSPublisher」アセンブリー図にドラッグして、Web サービス SOAP over JMS バインディングを設定したインポートを作成します。
  4. インポート・コンポーネントの名前を GreetingServiceSOAPMQJMSImport に変更します。
  5. アドレス・プロパティーの値をリスト 6 に記載する内容に変更します。
リスト 6. SOAP over JMS バインディングを設定した Web サービス・インポートのトピック宛先用のアドレス・プロパティー
jms:/topic?destination=jms/SubscriberSOAPMQJMSExport&
connectionFactory=jms/SubscriberSOAPMQJMSExportQCF&
targetService=SubscriberSOAPMQJMSExport_GreetingServiceJmsPort

以上の変更は、インポートの Web サービス・バインディングのプロパティー・ウィンドウ (図 17 を参照) で直接行うことができます。

図 17. WSMQJMSPublisher およびインポート・プロパティー
WSMQJMSPublisher and the import property
  1. モジュールをビルドして、EAR ファイルとしてエクスポートします。

パブリッシャー・アプリケーションを WebSphere Integration Developer でテストする

WebSphere Integration Developer から、パブリッシャー・アプリケーションを現在稼働中のサーバーに追加します。

  1. TestWSMQJMSPub プロジェクトを右クリックして、「Test (テスト)」 > 「Test Module (モジュールのテスト)」の順に選択します (図 18 を参照)。
図 18. 完成したパブリッシャーのテスト
完成したパブリッシャーのテスト
  1. メッセージ・フィールドに任意のストリング (例えば、「hello」) を入力します。すると、入力したメッセージが Greetings トピックのメッセージとしてパブリッシュされます。
  2. サブスクライバーはメッセージを受信し、コンソール・ウィンドウに表示されたメッセージとまったく同じメッセージを出力します。

まとめ

この記事では、ポイント・ツー・ポイント・メッセージング・モデルとパブリッシュ/サブスクライブ・メッセージング・モデルの両方を使用して、Web サービス SOAP over JMS バインディングで使用する WebSphere MQ リソースを構成する方法を説明しました。ポイント・ツー・ポイント・メッセージング・モデルの場合には、アプリケーションをインストールした後、WebSphere MQ JMS メッセージ・アクティベーション・スペックを使用するようにエクスポートを変更し、エクスポートの返信用接続ファクトリーを WebSphere MQ JMS 接続ファクトリーに変更します。インポートについて必要な作業は、アドレス・プロパティーの変更のみです。具体的には、アプリケーションをインストールする前に、事前定義された WebSphere MQ JMS キュー宛先を指定するように宛先を変更し、事前定義された WebSphere MQ JMS 接続ファクトリーを指定するように接続ファクトリーを変更します。リクエスト/レスポンス・メッセージの場合には、クライアント・アプリケーションが JMS メッセージに JMSReplyTo ヘッダーを設定する必要があります。

パブリッシュ/サブスクライブ・メッセージング・モデルでは、エクスポート・バインディングのアドレス・プロパティーを変更して、宛先タイプをトピックにします。さらに、アプリケーションのインストール後に、エクスポートのアクティベーション・スペックも変更する必要があります。インポートについては、アプリケーションをインストールする前に、WebSphere MQ JMS トピック宛先を指定するように宛先を変更し、WebSphere MQ JMS トピック接続ファクトリーを指定するように接続ファクトリーを変更します。


ダウンロード

内容ファイル名サイズ
Applications for point-to-point messagingSOAPMQJMSP2P.zip41KB
Applications for publish subscribe messagingSOAPMQJMSPubSub.zip26KB

参考文献

学ぶために

製品や技術を入手するために

  • ご自分に最適な方法で IBM 製品を評価してください。評価の方法としては、製品の試用版をダウンロードすることも、オンラインで製品を試してみることも、クラウド環境で製品を使用することもできます。また、SOA Sandbox では、数時間でサービス指向アーキテクチャーの実装方法を効率的に学ぶことができます。

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=SOA and web services, WebSphere
ArticleID=758611
ArticleTitle=IBM WebSphere Process Server または IBM WebSphere Enterprise Service Bus v7.0.0.x での、IBM WebSphere MQ JMS プロバイダーを使用した SOAP over JMS による Web サービス
publish-date=09302011