ヘッダーをスキップ
Oracle Application Server Adapters for Files, FTP, DatabasesおよびEnterprise Messagingユーザーズ・ガイド
10g (10.1.3.1.0)
B31889-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

5 Oracle Application Server Adapter for Java Message Service

この章では、BPELプロセスまたはESBサービスによるJMSとの通信を可能にする、Oracle Application Server Adapter for Java Message Service(JMSアダプタ)の使用方法を説明します。

この章には、次の項目が含まれます。

5.1 JMSアダプタの概要

JMSアーキテクチャでは、多数のメッセージ・サーバーに対して1つのクライアント・インタフェースが使用されます。JMSモデルには、Point-to-Pointおよびパブリッシュ・サブスクライブという2つのメッセージ・ドメインがあります。Point-to-Pointドメインでは、メッセージはキューを介して交換され、各メッセージは1人の受信者にのみ配信されます。パブリッシュ・サブスクライブ・モデルでは、メッセージはトピックに送信され、複数のサブスクライブ・クライアントによって読み取られます。JMSアダプタのサンプル・ファイルを参照するには、次の場所に移動します。

Oracle_Home\bpel\samples\tutorials\123.JmsAdapter

この項には、次の項目が含まれます。

5.1.1 JMSアダプタの機能

JMSアダプタには次の特徴があります。

  • JMSバージョン1.0.2bに基づいています。

  • 汎用JMSアダプタで、任意のJMSプロバイダで機能します。 OEMS JMS、TIBCO JMSおよびIBM WebSphere MQSeriesで動作確認されています。 (JMSプロバイダOJMS 8.1.7、9.0.1.4および9.2と、IBM MQSeries JMS 5.2および5.3)。

  • JMSトピックおよびキューをサポートしています。

  • このリリースでのみ、バイトおよびテキスト・メッセージ・タイプをサポートしています。アダプタ構成ウィザードにより、実行時のネイティブ・データ・ペイロードの消費にネイティブ・フォーマット・ビルダー・ウィザードが提供されます。ネイティブ・フォーマット・ビルダー・ウィザードでは、基礎となるネイティブ・データのXSD定義が作成されます。

  • JMSヘッダーおよびプロパティをサポートしています。

  • JMSトピックおよびキューへのサブスクライブ中のフィルタ処理の実行用にJMSメッセージ・セレクタをサポートしています。このパラメータは、JMSヘッダーおよびプロパティのセクションに存在するフィールドに基づくメッセージをフィルタ処理するためのSQL 92言語に基づいています。

  • 永続JMSサブスクライバの指定をサポートしています。

  • JMSパブリッシャの永続および非永続モードをサポートしています。

  • 現在、MQプロバイダに対する接続再試行機能はサポートされていません。

  • SolarisでのAQJMSに対するアウトバウンド再試行機能はサポートされていません。


    注意:

    JMSアダプタを使用してAQJMSプロバイダに接続する際に、AQ宛先をホストするデータベースがリリース10.1.0.4の場合は、データベース・サーバーが停止すると、アウトバウンド方向でのアダプタの再試行メカニズムはデータベース・サーバーに再接続できません。 これは、クライアントJDBCとojdbc14.jarとの問題によるものです。 この問題を解決するには、リリース10.1.0.4のJDBCドライバをダウンロードし、$MIDTIER_ORACLE_HOME/jdbc内のライブラリ(特にojdbc14.jar)を置き換えて中間層で使用します。 この問題を解決する方法の詳細は、Metalink Note 317385.1を参照してください。

  • JMS APIでは、JMSパブリッシャによって送信される3つの確認情報を指定します。

    • DUPS_OK_ACKNOWLEDGE: メッセージの重複に関連のないコンシューマ用

    • AUTO_ACKNOWLEDGE: セッションがメッセージの受信を自動的に確認

    • CLIENT_ACKNOWLEDGE: クライアントがメッセージの確認メソッドを呼び出してメッセージを確認

送信または受信されたメッセージを1つの単位として扱うことで、アプリケーションは、1つのトランザクションで発行および消費のメッセージのグループを調整できます。アプリケーションがトランザクションをコミットすると、JMSプロバイダにより、そのアプリケーションがそのトランザクション内で受信したすべてのメッセージが削除されます。そのトランザクション内で送信されたメッセージは、1つの単位としてすべてのJMSコンシューマに配信されます。アプリケーションがトランザクションをロールバックすると、そのアプリケーションがそのトランザクション内で受信したメッセージはメッセージ・システムに戻され、受信したメッセージは廃棄されます。JMSアダプタはJMSトランザクションをサポートします。JMSで処理されたセッションは、そのセッション内に配置されたトランザクションをサポートします。JMSで処理されたセッションのトランザクションは、そのセッション以外には影響しません。

5.1.2 JMSアダプタとOracle BPEL Process Managerの統合

J2CA 1.5リソース・アダプタとBPEL Process Managerを双方向で統合するために、アダプタ・フレームワークが使用されています。 アダプタ・フレームワークは規格に準拠しており、基盤となるJ2CA相互作用をWebサービスとして公開するためのWeb service Invocation Framework(WSIF)テクノロジが使用されています。

JMSアダプタのアーキテクチャ、Oracle BPEL Process Managerとのアダプタの統合、およびアダプタのデプロイの詳細は、『Oracle Application Server Adapter概要』を参照してください。

5.1.3 JMSアダプタとOracle Enterprise Service Busの統合

Oracle Enterprise Service BusはOracleアダプタをサポートしており、それぞれのインバウンドおよびアウトバウンドのアダプタ・サービスを定義できます。 インバウンド・アダプタ・サービスでは、外部データソースからデータが受信されてXMLメッセージに変換されます。 アウトバウンド・アダプタ・サービスでは、XMLメッセージが特定のアダプタのネイティブ・フォーマットに変換され、データがターゲット・アプリケーションに送信されます。

JMSアダプタ・サービスの場合、Oracle Enterprise Service Busを使用するとJMSキューまたはトピックからのメッセージを送受信できます。

ESBはBPELの後継であり、このマニュアルのほとんどの部分およびサンプルはBPELを使用することを想定しています。 ただし、アダプタの動作はBPELでもESBでも同じです。 ここでBPELに言及している箇所は、ESBで置き換えてかまいません。

5.2 Oracle BPEL Process ManagerでのJMSアダプタの使用例

この項は、次の2つの使用例で構成されています。

5.2.1 ケース1: JMSアダプタの構成

次の使用例では、JMSアダプタの構成手順を説明し、結果のWSDLファイルおよび関連するoc4j-ra.xmlファイルを検証します。

この項には、次の項目が含まれます。

5.2.1.1 概要

メッセージ機能はプログラム間の通信を可能にするメカニズムです。メッセージは、あるアプリケーションが別のアプリケーションに送信する構造化データです。メッセージ指向ミドルウェア(MOM)は、スケーラブルなエンタープライズ・メッセージング機能をサポートするインフラストラクチャです。MOMにより、高速で信頼できる非同期の通信、保証付きメッセージ配信、受信通知およびトランザクション制御が実現されます。JMSは、エンタープライズ・メッセージング・システムのメッセージの発行、送信および受信を目的としてSun社により開発されたJavaインタフェースです。JMSはJMSベンダーが実装するAPIです。オラクル社では、OC4J JMSおよびOracleアドバンスト・キューに基づいたOracle JMSの2つの実装を提供しています。JMSプロデューサによりJMSメッセージが作成され、JMSコンシューマによってJMSメッセージが消費されます。

JMSでは、Point-to-Point(キュー)およびパブリッシュ・サブスクライブ(トピック)という2つのメッセージ・パラダイムをサポートしています。

この項には、次の項目が含まれます。

Point-to-Point

Point-to-Pointメッセージでは、メッセージは消費されるまでキューに格納されます。1つ以上のプロデューサがキューに書き込み、1つ以上のコンシューマがキューからメッセージを抽出します。JMSコンシューマにより、メッセージの消費後に確認情報が送信されるため、キューからメッセージがパージされます。

パブリッシュ・サブスクライブ

パブリッシュ・サブスクライブ・メッセージでは、プロデューサがメッセージをトピックに公開し、コンシューマが特定のトピックにサブスクライブします。複数のパブリッシャが同じトピックを公開でき、複数のコンシューマが同じトピックにサブスクライブできます。プロデューサによってトピックに公開されたすべてのメッセージは、そのトピックにサブスクライブしたすべてのコンシューマによって受信されます。デフォルトでは、サブスクライバがメッセージを受信できるのはアクティブなときのみです。ただし、JMS APIでは、コンシューマが稼働中ではなくても、公開されたメッセージを受信できる永続サブスクリプションをサポートしています。永続サブスクリプションでは、コンシューマがアクティブではないときに送信されたメッセージを受信するために、コンシューマを一意のIDで登録します。これらのメッセージはJMSプロバイダにより保存され、コンシューマが再度アクティブになった際に送信されるか、メッセージが失効した場合には記憶域からパージされます。JMSプロデューサは、永続モードまたは非永続モードに設定できます。非永続モードではメッセージは保存されず、非永続サブスクリプションにのみ使用できます。


注意:

JMSアダプタでは、特定の永続サブスクリプションを使用しているBPELパートナ・リンクがそれを使用しなくなっても、永続サブスクリプションは削除されません。永続サブスクライバは手動で削除する必要があります。

JMS APIでは、メッセージ消費のための同期または非同期通信の両方をサポートしています。同期の場合、コンシューマはトピックまたはキューのreceive()メソッドを明示的に呼び出します。非同期の場合、JMSクライアントによりトピックまたはキューにメッセージ・リスナーが登録され、メッセージはそのリスナーのonMessage()メソッドを呼び出すことで配信されます。

宛先、接続、コネクション・ファクトリおよびセッション

宛先プロパティには、JMSキューまたはトピックのアドレス情報が含まれます。接続は、JMSプロバイダへの物理接続を表します。コネクション・ファクトリは、JMS接続の作成に使用されます。セッションは、キューまたはトピックの宛先、JMSプロデューサ、およびJMSコンシューマのオブジェクトの作成に使用されます。


注意:

OC4J JMSには、単一のOC4J JMS接続リスナーに関する既知の制限があり、同じトピックに対してサブスクライバとパブリッシャを使用することはできません。 したがって、同じトピックにパブリッシュおよびサブスクライブするBPELプロセスに同じ接続は使用できません。つまり、同じJNDIを共有することはできません。 この問題を回避するには、次の2つの方法があります。
  1. 異なるJNDIコネクション・ファクトリ(WSDLのjca:address要素に異なるロケーション属性値)を使用します。

  2. WSDLのjca:operation要素でuseMessageListener=falseを指定します(Oracle JDeveloperの「JMSアダプタ」ウィザードを介して設定することもできます)。


JMSメッセージの構造

JMSメッセージには、必須の標準ヘッダー要素、オプションのプロパティ要素およびオプションの標準ペイロード要素があります。ペイロードはテキスト・メッセージ、バイト・メッセージ、マップ・メッセージ、ストリーム・メッセージまたはオブジェクト・メッセージのいずれかになります。プロパティ要素はJMSプロバイダ固有で、JMSプロバイダごとに異なります。

JMSヘッダー・プロパティ

表5-1に、JMSヘッダー・プロパティを説明します。

表5-1 JMSヘッダー・プロパティ

プロパティ名 説明

JMSDestination

メッセージの送信先で、JMSプロデューサによって設定されます。

JMSDeliveryMode

JMSコンシューマによって永続または非永続モードに設定されます。

JMSExpiration

コンシューマによって期限切れが設定される前のメッセージの期間です。

JMSPriority

コンシューマによって設定される0から9の間の数値。数値が大きいほど優先度が高くなります。

JMSMessageID

コンシューマによって設定される一意のメッセージ識別子です。

JMSTimestamp

転送するためにメッセージがJMSプロバイダに送信された際のタイムスタンプです。

JMSCorrelationId

レスポンス・メッセージとリクエスト・メッセージをリンクするために、プロデューサおよびコンシューマの両方によって設定されます。これはオプションの属性です。

JMSReplyTo

メッセージの返信先を示すオプションの属性。プロデューサおよびコンシューマで設定できます。

JMSType

JMSメッセージ・タイプ。

JMSRedelivered

プロバイダがこのメッセージのコンシューマへの送信を以前に一度試行して失敗したことを示すために、JMSプロバイダによって設定されます。


5.2.1.2 「アダプタ構成ウィザード」を使用したJMSアダプタの構成

この項では、パートナ・リンクへのアダプタ・サービスの作成方法を説明します。

  1. 図5-1に示すように、「パートナ・リンクの作成」ウィンドウの「アダプタ・サービスの定義」(3つ目のアイコン)をクリックします。

    図5-1 「パートナ・リンクの作成」ウィンドウ

    図5-1の説明が続きます
    「図5-1 「パートナ・リンクの作成」ウィンドウ」の説明

    図5-2に示す「アダプタ構成ウィザード - ようこそ」ウィンドウが表示されます。

    図5-2 「アダプタ構成ウィザード - ようこそ」ウィンドウ

    図5-2の説明が続きます
    「図5-2 「アダプタ構成ウィザード - ようこそ」ウィンドウ」の説明


    注意:

    アダプタ構成ウィザードを使用するたびにこのウィンドウを表示する必要がない場合には、「次回にこのページを表示しない」チェック・ボックスをクリックします。

  2. 「次へ」をクリックします。

    図5-3に示す「アダプタ・タイプ」ダイアログ・ボックスが表示されます。

    図5-3 「アダプタ・タイプ」ウィンドウ

    図5-3の説明が続きます
    「図5-3 「アダプタ・タイプ」ウィンドウ」の説明

  3. 使用可能なアダプタ・タイプのリストから「JMSアダプタ」を選択して「次へ」をクリックします。

    図5-4に示す「サービス名」ウィンドウが表示されます。

    図5-4 「サービス名」ウィンドウ

    図5-4の説明が続きます
    「図5-4 「サービス名」ウィンドウ」の説明

  4. サービスの名前を入力します。オプションで説明を追加することもできます。「次へ」をクリックします。

    図5-5に示す「JMSプロバイダ」ダイアログ・ボックスが表示されます。

    図5-5 「JMSプロバイダ」ダイアログ・ボックス

    図5-5の説明が続きます
    「図5-5 「JMSプロバイダ」ダイアログ・ボックス」の説明

  5. 操作を1つ選択します。 この操作で、「Oracle Enterprise Messaging Service (OEMS)」「データベース」を順番に選択します。

    • Oracle Enterprise Messaging Service (OEMS): Oracleのメモリー、ファイルまたはデータベース・メッセージ・サービスと統合できます。

    • サード・パーティ: このオプションを選択すると、サード・パーティのプロバイダと統合できます。

  6. 「次へ」をクリックします。

    図5-6に示す「サービス接続」ダイアログ・ボックスが表示されます。

    図5-6 新規データベース接続の作成

    図5-6の説明が続きます
    「図5-6 新規データベース接続の作成」の説明

  7. 「データベース・サーバーのJNDI名」フィールドにJava Naming and Directory Interface(JNDI)名を入力します。 JNDI名は、サービスがBPELサーバーにデプロイされる際に使用される接続のプレースホルダとして機能します。 これにより、開発とその後の本番に異なるデータベースを使用できます。


    関連項目:

    JNDIの概念の詳細は、『Oracle Application Server Adapter概要』を参照してください。

  8. 「新規」をクリックしてデータベース接続を定義します。

    「データベース接続の作成」ウィザードが表示されます。


    注意:

    Oracle Applicationsを実行中のデータベースに接続する必要があります。

  9. 「次へ」をクリックします。

  10. 「タイプ」ダイアログ・ボックスに次の情報を入力します。

    1. 「接続名」フィールドで、データベース接続に使用する一意の名前を指定します。 この例では、MyDBConnection1と入力します。

    2. 「接続タイプ」ボックスから、データベース接続に使用する接続のタイプを選択します。 この例では、デフォルトの接続タイプ「Oracle(JDBC)」を保持します。

      図5-7に「タイプ」ダイアログ・ボックスを示します。

      図5-7 接続名と接続タイプの指定

      図5-7の説明が続きます
      「図5-7 接続名と接続タイプの指定」の説明

  11. 「次へ」をクリックします。 「認証」ダイアログ・ボックスが表示されます。

  12. 次のフィールドに情報を入力します。

    1. 「ユーザー名」フィールドで、データベース接続に使用する一意の名前を指定します。 この例では、scottと入力します。

    2. 「パスワード」フィールドで、データベース接続に使用するパスワードを指定します。 この例では、tigerと入力します。


    注意:

    なんらかのデータベースのSCOTTスキーマへのアクセス権限が必要です。

  13. 「次へ」をクリックします。 「接続」ダイアログ・ボックスが表示されます。

  14. 次のフィールドに情報を入力します。

    1. 「ドライバ」リストから「thin」を選択します。

    2. 「ホスト名」フィールドで、データベース接続に使用するホスト名を指定します。

    3. 「JDBCポート」フィールドで、データベース接続に使用するポート番号を指定します。 この例では、1521と入力します。

    4. 「SID」フィールドで、データベース接続に使用する一意のSID値を指定します。 この例では、ORCLと入力します。

  15. 「次へ」をクリックします。

    「テスト」ダイアログ・ボックスが表示されます。

  16. 「接続のテスト」をクリックし、指定した情報によりデータベースとの接続が確立されるかどうかを確認します。

  17. 「終了」をクリックして新規データベース接続の作成プロセスを完了します。

    図5-8のように、「サービス接続」ダイアログ・ボックスが表示され、データベース接続のサマリーが示されます。

    図5-8 「サービス接続」ダイアログ・ボックス

    図5-8の説明が続きます
    「図5-8 「サービス接続」ダイアログ・ボックス」の説明

  18. 「次へ」をクリックします。

    「操作」ダイアログ・ボックスが表示されます。

  19. 「メッセージ消費」または「メッセージ発行」を選択します。 この例では「メッセージ消費」を選択します。

    図5-9のように、操作名は自動的に入力されます。

    図5-9 「操作」ウィンドウ

    図5-9の説明が続きます
    「図5-9 「操作」ウィンドウ」の説明

    「メッセージ消費」オプションを選択すると、JMS宛先からのインバウンド・メッセージをアダプタで消費(受信)できます。

  20. 「次へ」をクリックします。

    図5-10に示す「消費操作のパラメータ」ダイアログ・ボックスが表示されます。

    図5-10 「消費操作のパラメータ」ダイアログ・ボックス

    図5-10の説明が続きます
    「図5-10 「消費操作のパラメータ」ダイアログ・ボックス」の説明

  21. 次のフィールドに値を入力します。

    • リソース・プロバイダ

      OC4Jには、JMSプロバイダを透過的にプラグインするためのResourceProviderインタフェースが用意されています。 OC4JのResourceProviderインタフェースにより、EJB、サーブレットおよびOC4Jクライアントは多数の異なるJMSプロバイダにアクセスできます。 リソースは、java:comp/resource/で使用可能です。 Oracle JMSへのアクセスには、ResourceProviderインタフェースが使用されます。

      そのため、ユーザーは「JMSアダプタ」ウィザードでOJMS(データベース・オプション)のリソース・プロバイダを入力する必要があります。

    • 接続先名

      メッセージの送信元であるJMSキューまたはトピックのJNDI名です。 このフィールドは編集できません。 「参照」をクリックしてキューまたはトピックを参照する必要があります。 使用しているJMSプロバイダのタイプに基づいて、キューまたはトピックを選択します。詳細は、次の項を参照してください。

    • メッセージ本文のタイプ

      「TextMessage」または「BytesMessage」を選択します。

      このリリースでは、StreamMessageおよびMapMessageメッセージ・タイプはサポートされていません。

    • 永続サブスクライバID

      このフィールドはオプションです。永続サブスクライバを設定する場合には、永続サブスクライバIDが必要です。接続が解除されるとサブスクライバは通常メッセージを失いますが、永続サブスクライバは再接続の際に保存されているメッセージをダウンロードします。


      注意:

      JMSプロバイダがメモリー、ファイルまたはデータベース・メッセージ・サービスの場合、「永続サブスクライバID」オプションが表示されるのはトピックを選択した場合のみです。 ただし、JMSプロバイダがサード・パーティの場合は、常に「永続サブスクライバID」オプションが表示されます。

    • メッセージ・セレクタ

      このフィールドもオプションです。ヘッダーおよびプロパティの情報に基づいてメッセージをフィルタ処理します。メッセージ・セレクタ・ルールはブール式です。 式がtrueの場合には、メッセージが消費されます。 式がfalseの場合には、メッセージが拒否されます。

      たとえば、次のような式を入力できます。

      • JMSPriority > 3。これに基づき、優先度が3より高いメッセージが消費され、それ以外のメッセージはすべて拒否されます。

      • JMSType = 'car' AND color = 'blue' AND weight > 2500

      • Country in ('UK', 'US', 'France')。

    • MessageListenerを使用

      このフィールドはデフォルトで「true」に設定されており、サーバーはアダプタに対して非同期コールバックを行います。 「false」に設定されている場合、アダプタは同期ブロック受信を行います。


    注意:

    この例ではメッセージ消費操作が示されています。メッセージ発行操作の場合は、このウィンドウは異なります。 この部分の手順の違いは、「メッセージ発行手順」を参照してください。

    適切なパラメータを入力したら、「次へ」をクリックします。

  22. 図5-11に示す「メッセージ」ダイアログ・ボックスが表示されます。 このダイアログ・ボックスでの設定により、メッセージ・ペイロードの適切なスキーマが定義されます。

    次のいずれかを実行できます。

    • 「ネイティブ・フォーマット変換は不要(スキーマを不透明(Opaque)にする)」を選択します。これにより残りのフィールドが使用できなくなります。

    • ネイティブ・フォーマットの定義プロセスを支援するネイティブ・フォーマット・ビルダー・ウィザードを起動するには、「ネイティブ・フォーマットのスキーマの定義」をクリックします。

    • スキーマ・ファイルURLのパスを入力します(またはパスを参照します)。

    次に、最後に示した、スキーマ・ファイルURLを参照するオプションの手順を示します。

    図5-11 「メッセージ」ウィンドウ

    図5-11の説明が続きます
    「図5-11 「メッセージ」ウィンドウ」の説明

  23. 「参照」ボタンをクリックします。

    図5-12のように、「タイプ・エクスプローラ」ナビゲーション・ツリーを含む「タイプの選択」ウィンドウが表示されます。

  24. ツリーを参照し、適切なスキーマ・タイプを選択して「OK」をクリックします。

    図5-12 「タイプの選択」ウィンドウからのスキーマの選択

    図5-12の説明が続きます
    「図5-12 「タイプの選択」ウィンドウからのスキーマの選択」の説明

    今度は、図5-13のように、「スキーマ・ファイルのURL」フィールドおよび「スキーマ要素」フィールドが入力された状態で、「メッセージ」ウィンドウが再度表示されます。

    図5-13 入力が完了した「メッセージ」ウィンドウ

    図5-13の説明が続きます
    「図5-13 入力が完了した「メッセージ」ウィンドウ」の説明

  25. 「次へ」をクリックします。

    「終了」ウィンドウが表示されます。このボックスには、ウィザードにより作成されるアダプタ・ファイルのパスと名前が表示されます。

  26. 「終了」をクリックします。

    各フィールドが移入済の状態で、図5-14に示す「パートナ・リンクの作成」ウィンドウが表示されます。

    図5-14 入力が完了した「パートナ・リンクの作成」ウィンドウ

    図5-14の説明が続きます
    「図5-14 入力が完了した「パートナ・リンクの作成」ウィンドウ」の説明

  27. 「OK」をクリックします。

5.2.1.3 生成されたWSDLファイル

アダプタ構成ウィザードにより、次のWSDLファイルが生成されます。

<definitions
     name="JMS_Example"
     targetNamespace="http://xmlns.oracle.com/pcbpel/adapter/jms/JMS_Example/"
     xmlns="http://schemas.xmlsoap.org/wsdl/"
     xmlns:tns="http://xmlns.oracle.com/pcbpel/adapter/jms/JMS_Example/"
     xmlns:plt="http://schemas.xmlsoap.org/ws/2003/05/partner-link/"
     xmlns:jca="http://xmlns.oracle.com/pcbpel/wsdl/jca/"
     xmlns:opaque="http://xmlns.oracle.com/pcbpel/adapter/opaque/"
     xmlns:pc="http://xmlns.oracle.com/pcbpel/"
     xmlns:hdr="http://xmlns.oracle.com/pcbpel/adapter/jms/"
    >

このコード・セグメントでは、アダプタの名前、様々な必要なスキーマの場所およびその他の定義ファイルが定義されています。

    <import namespace="http://xmlns.oracle.com/pcbpel/adapter/jms/"
 location="jmsAdapterInboundHeader.wsdl"/>

このコード・セグメントでは必要なネームスペースをインポートしています。

    <types>
    <schema targetNamespace="http://xmlns.oracle.com/pcbpel/adapter/opaque/"
            xmlns="http://www.w3.org/2001/XMLSchema" >
      <element name="opaqueElement" type="base64Binary" />
    </schema>
    </types>
    <message name="Consume_Message_msg">
        <part name="opaque" element="opaque:opaqueElement"/>
    </message>
    <portType name="Consume_Message_ptt">
        <operation name="Consume_Message">
            <input message="tns:Consume_Message_msg"/>
        </operation>
    </portType>

このコード・セグメントでは、メッセージ・タイプ、メッセージ名およびパートナ・リンクのポート・タイプが定義されています。

    <binding name="Consume_Message_binding" type="tns:Consume_Message_ptt">
    <pc:inbound_binding />
        <operation name="Consume_Message">
      <jca:operation
          ActivationSpec="oracle.tip.adapter.jms.inbound.JmsConsumeActivationSpec"
          DestinationName="jms/DemoQue"
          UseMessageListener="true"
          PayloadType="TextMessage"
          OpaqueSchema="true" >
      </jca:operation>
      <input>
        <jca:header message="hdr:InboundHeader_msg" part="inboundHeader"/>
      </input>
        </operation>
    </binding>

このコード・セグメントでは、メッセージ消費操作に必要なバインディングとターゲット・キューが定義され、メッセージ・ヘッダーが識別されています。

    <service name="JMS_Example2">
        <port name="Consume_Message_pt" binding="tns:Consume_Message_binding">
      <jca:address location="eis/Jms/topics.xml" />
        </port>
    </service>
  <plt:partnerLinkType name="Consume_Message_plt" >
    <plt:role name="Consume_Message_role" >
      <plt:portType name="tns:Consume_Message_ptt" />
    </plt:role>
  </plt:partnerLinkType>
</definitions>

最後の部分では、データベース接続、コネクション・ファクトリ(oc4j-ra.xmlファイルで定義)、およびpartnerLinkTypeportTypeの名前とロールが定義されています。

5.2.1.4 oc4j-ra.xmlファイル

oc4j-ra.xmlファイルでは、JMSコネクション・ファクトリのエンドポイントが定義されます。コネクション・ファクトリには、各エンドポイントの構成プロパティが含まれます。後続の項で示すように、エンドポイントは、タイプの異なる接続に対応するために追加されます。汎用的なoc4j-ra.xmlファイルの次の例を示します。

<?xml version="1.0"?>
<!DOCTYPE oc4j-connector-factories PUBLIC "-//Oracle//DTD Oracle Connector
 9.04//EN" "http://xmlns.oracle.com/ias/dtds/oc4j-connector-factories-9_04.dtd">
<oc4j-connector-factories>
     <connector-factory location="eis/MyJmsTopic1" connector-name="Jms Adapter">
     <config-property name="connectionFactoryLocation"
                      value="jms/TopicConnectionFactory"/>
     <config-property name="factoryProperties" value=""/>
     <config-property name="acknowledgeMode" value="AUTO_ACKNOWLEDGE"/>
     <config-property name="isTopic" value="true"/>
     <config-property name="isTransacted" value="true"/>
     <config-property name="username" value="admin"/>
     <config-property name="password" value="welcome"/>
</connector-factory>
<connector-factory location="eis/MyJmsTopic2" connector-name="Jms Adapter">
     <config-property name="connectionFactoryLocation"

...
</oc4j-connector-factories>

5.2.1.5 メッセージ発行手順

メッセージ発行操作では、特に「「アダプタ構成ウィザード」を使用したJMSアダプタの構成」の手順19において、定義の手順が異なります。消費操作パラメータを指定するかわりに、次の発行操作パラメータを指定します。これにより、JMS宛先へのアウトバウンド・メッセージをアダプタで発行(送信)できます。 図5-15に、「発行操作のパラメータ」ウィンドウを示します。

  • 接続先名:

    メッセージの配信先であるJMSキューまたはトピックのJNDI名。入力する名前は、使用しているJMSプロバイダのタイプに基づきます。詳細は、次の項を参照してください。

  • メッセージ本文のタイプ:

    サポートされている値は「TextMessage」または「BytesMessage」です。このリリースでは、StreamMessageおよびMapMessageメッセージ・タイプはサポートされていません。

  • 配信モード:

    値は「永続」または「非永続」です。永続配信モードでは、今後の使用に備えて、永続サブスクライバによりメッセージを保存するパブリッシャである永続JMSパブリッシャを指定します。 永続サブスクライバは、「アダプタ構成ウィザードを使用したJMSアダプタの構成」の手順21の対応するフィールドに永続サブスクライバIDのあるメッセージ消費です。非永続サブスクライバでは、アダプタがアクティブではないときに発行されたメッセージは失われます。永続サブスクライバでは、永続パブリッシャに保存されていたメッセージをダウンロードするため、すべてのメッセージを受信するために常にアクティブである必要はありません。

  • 優先度:

    優先度の値を選択します。9は最も高い優先度を、0は最も低い優先度を表します。デフォルトは4です。

  • TimeToLive:

    メッセージが失効して消費できなくなるまでの期間です。

図5-15 「発行操作のパラメータ」ウィンドウ

図5-15の説明が続きます
「図5-15 「発行操作のパラメータ」ウィンドウ」の説明

5.2.1.6 OJMSの構成

OJMSプロバイダは、グローバルapplication.xmlファイルのresource-provider要素内に構成します。URLプロパティのあるリソース・プロバイダを構成できます。次にURL構成を説明します。

<resource-provider class="oracle.jms.OjmsContext" name="ojmsdemo">
     <description>OJMS/AQ</description>
     <property name="url" value="jdbc:oracle:thin:@localhost:1521:my" />
     <property name="username" value="jmsuser" />
     <property name="password" value="jmsuser" />
</resource-provider>

oc4j-ra.xmlファイルに次のコード・セグメントを追加します。

<connector-factory location="eis/aqjms/Topic" connector-name="Jms Adapter">
     <config-property name="connectionFactoryLocation"
           value="java:comp/resource/ojmsdemo/TopicConnectionFactories/myTCF" />
     <config-property name="factoryProperties" value="" />
     <config-property name="acknowledgeMode" value="AUTO_ACKNOWLEDGE" />
     <config-property name="isTopic" value="true" />
     <config-property name="isTransacted" value="true" />
     <config-property name="username" value="jmsuser" />
     <config-property name="password" value="jmsuser" />
</connector-factory>
<connector-factory location="eis/aqjms/Queue" connector-name="Jms Adapter">
    <config-property name="connectionFactoryLocation" value="
         java:comp/resource/ojmsdemo/QueueConnectionFactories/myQCF" />
    <config-property name="factoryProperties" value="" />
    <config-property name="acknowledgeMode" value="AUTO_ACKNOWLEDGE" />
    <config-property name="isTopic" value="false" />
    <config-property name="isTransacted" value="true" />
    <config-property name="username" value="jmsuser" />
    <config-property name="password" value="jmsuser" />
</connector-factory>

この場合、「アダプタ構成ウィザードを使用したJMSアダプタの構成」の手順7の正しいJMS接続のJNDI名は、eis/aqjms/Topicまたはeis/aqjms/Queueです。

oc4j-ra.xmlファイルのisTransacted値をtrueに設定します。falseに設定すると例外エラーになります。

OJMSリソースへのアクセス

java:comp/resource + JMS_provider_name + TopicConnectionFactories + user_defined_name

java:comp/resource + JMS_provider_name + QueueConnectionFactories + user_defined_name

コネクション・ファクトリのOJMS構文は次のとおりです。

または

user_defined_nameは任意に指定でき、その他の構成とは一致しません。ConnectionFactoriesでは、定義されているファクトリ・タイプの詳細を示します。この例では、JMSプロバイダ名はojmsdemoのようにresource-provider要素に定義されます。キュー・コネクション・ファクトリでは、JMSプロバイダ名がojmsdemomyQCFという名前を使用することを決めた場合、コネクション・ファクトリ名はjava:comp/resource/ojmsdemo/QueueConnectionFactories/myQCFになります。トピック・コネクション・ファクトリでは、JMSプロバイダ名がojmsdemomyTCFという名前を使用することを決めた場合、コネクション・ファクトリ名はjava:comp/resource/ojmsdemo/TopicConnectionFactories/myTCFになります。myQCFおよびmyTCFというユーザー定義の名前は、構文のその他の部分には使用されません。そのため、任意の名前を選択できます。

宛先

任意の宛先のOJMS構文は次のとおりです。

java:comp/resource + JMS_provider_name + Topics + Destination_name

または

java:comp/resource + JMS_provider_name + Queues + Destination_name

トピックまたはキューでは、定義されている宛先のタイプの詳細を示します。宛先の名前は、データベースで定義されたキューまたはトピックの実際の名前です。この例では、JMSプロバイダ名は、ojmsdemoのようにresource-provider要素に定義されています。データベースでは、キュー名はaqQueueです。キューでは、JMSプロバイダ名がojmsdemoでキュー名がaqQueueの場合、キューのJNDI名はjava:comp/resource/ojmsdemo/Queues/aqQueueになります。トピックでは、JMSプロバイダ名がojmsdemoでトピック名がaqTopicの場合、トピックのJNDI名はjava:comp/resource/ojmsdemo/Topics/aqTopicになります。

OJMSおよびリモート・データベース

リモート・データベースを使用するようアダプタを構成するには、application.xmlファイルのエントリは次のようになっている必要があります。

<resource-provider class="oracle.jms.OjmsContext" name="ojmsdemo">
<description>OJMS/AQ</description>
<property name="url"
value="jdbc:oracle:thin:@remote-host:remote-port:remote-sid" />
<property name="username" value="jmsuser" />
@ <property name="password" value="jmsuser" />
</resource-provider>

5.2.1.7 OC4J JMSの構成

OC4J JMSサーバーが別のリモート・ホストで稼働中の場合、次のコネクタ・エントリを使用してサーバーと通信するようJMSアダプタを構成できます。このコネクタ・エントリとの唯一の違いは、ファクトリ・プロパティです。ファクトリ・プロパティは、アダプタのJNDIコンテキストを確立できます。[hostname]をOC4J JMSサーバーが稼働しているサーバーのホスト名と置き換えます。リモートOC4JインスタンスのRMIポートがデフォルト値(23791)ではない場合、プロバイダURL(ormi://remotehost.domain.com:23795)にRMIポートを指定する必要があります。

<connector-factory location="eis/RemoteOC4JJMS/Queue"
connector-name="Jms Adapter">
     <config-property name="connectionFactoryLocation"
           value="jms/QueueConnectionFactory" />
     <config-property name="factoryProperties"
value="java.naming.factory.initial=com.evermind.server.ApplicationClientInitialCon
textFactory;java.naming.provider.url=ormi://[hostname];
java.naming.security.principal=admin;java.naming.security.credentials=welcome"/>
     <config-property name="acknowledgeMode" value="AUTO_ACKNOWLEDGE" />
     <config-property name="isTopic" value="false" />
     <config-property name="isTransacted" value="true" />
     <config-property name="username" value="admin" />
     <config-property name="password" value="welcome" />
</connector-factory>

この場合、「アダプタ構成ウィザードを使用したJMSアダプタの構成」の手順7の正しいJMS接続のJNDI名は、eis/RemoteOC4JJMS/Queueです。

また、クラスパスにファイルMETA-INF/application-client.xmlがある必要があります。このファイルのコンテンツは次のようになります。

<application-client/>

このファイルをクラスパスに配置するには、Oracle_Home\bpel\system\classes\META-INF\application-client.xmlにあるファイルに指定されたコンテンツを配置し、Oracle BPEL Serverを再起動します。

アウトバウンド接続のoc4j-ra.xmlファイルのisTransactedtrueに設定すると、エラーが発生します。アウトバウンド接続ではこの値をtrueに設定しないでください。

接続先名

OC4J JMSの接続先名は、JNDIロケーション(jms/demoQueueまたはjms/demoTopicなど)か、jms.xmlで構成された接続先の実際の名前(Demo QueueまたはDemo Topicなど)です。

5.2.1.8 TIBCO JMSの構成

Tibco EMSがC:\tibco\emsにインストールされている場合、BPEL OC4J application.xmlフィルには、次のjarファイルが含まれている必要があります。JMSおよびJNDI jarファイルは、すでにクラスパスに存在するため、含める必要はありません。

<library path="C:\tibco\ems\clients\java\tibjms.jar" />

oc4j-ra.xmlのJMSコネクション・ファクトリの適切なエンドポイントを作成します。この変更を行った後、Oracle BPEL Serverを再起動します。適切なコード・セグメントを示します。必要なパラメータを変更し、目的にあわせて使用できます。

<connector-factory location="eis/tibjms/Topic" connector-name="Jms Adapter">
     <config-property name="connectionFactoryLocation"
           value="TopicConnectionFactory" />
     <config-property name="factoryProperties"
value="java.naming.factory.initial=com.tibco.tibjms.naming.TibjmsInitialContextFa
ctory;java.naming.provider.url=tibjmsnaming://localhost:7222;java.naming.security.
principal=admin;java.naming.security.credentials=password" />
     <config-property name="acknowledgeMode" value="AUTO_ACKNOWLEDGE" />
     <config-property name="isTopic" value="true" />
     <config-property name="isTransacted" value="true" />
     <config-property name="username" value="admin" />
     <config-property name="password" value="password" />
</connector-factory>
<connector-factory location="eis/tibjms/Queue" connector-name="Jms Adapter">
     <config-property name="connectionFactoryLocation"
           value="QueueConnectionFactory" />
     <config-property name="factoryProperties"
value="java.naming.factory.initial=com.tibco.tibjms.naming.TibjmsInitialContextFa
ctory;java.naming.provider.url=tibjmsnaming://localhost:7222;java.naming.security.
principal=admin;java.naming.security.credentials=password" />
     <config-property name="acknowledgeMode" value="AUTO_ACKNOWLEDGE" />
     <config-property name="isTopic" value="false" />
     <config-property name="isTransacted" value="true" />
     <config-property name="username" value="admin" />
     <config-property name="password" value="password" />
</connector-factory>

この場合、「アダプタ構成ウィザードを使用したJMSアダプタの構成」の手順7の正しいJMS接続のJNDI名は、eis/tibjms/Topicまたはeis/tibjms/Queueです。

Tibco JMSを使用する場合は、Oracle_Home\bpel\system\appserver\oc4j\j2ee\home\application-deployments\default\FtpAdapter\oc4j-ra.xmlファイルのClientIDプロパティを常に次のように設定します。

<config-property name="factoryProperties"
    value="ClientID=clientId{time}"/>

サブストリング{time}は、それをJava System.currentTimeMillis()の値に置き換えるよう実行時に指示します。置換えがサポートされているその他のサブストリングは次のとおりです。

  • {checksum}

    oc4j-ra.xmlコネクション・ファクトリ・プロパティの値に基づくチェックサム(jca:addressから参照)

  • {sequence}

    ゼロから始まり増加する整数の次のメンバー

これらの設定により、oc4j-ra.xmlに固定または変数のClientIDを指定できます。

5.2.1.8.1 直接接続

直接接続は、JNDI接続のかわりに定義することもできます。直接接続はSolaris中間層に必要です。JNDIエントリのかわりに、oc4j-ra.xmlファイルの次の直接接続エントリを使用します。

5.2.1.9 IBM Websphere JMSの構成

C:\mqseriesディレクトリにMQSeriesがインストールされている場合、BPEL OC4J application.xmlフィルには、次のjarファイルが含まれている必要があります。

<library path="C:\mqseries\java\lib\com.ibm.mq.jar" />

<library path="C:\mqseries\java\lib\com.ibm.mqjms.jar" />

oc4j-ra.xmlのJMSコネクション・ファクトリの適切なエンドポイントを作成します。この変更を行った後、Oracle BPEL Serverを再起動する必要があります。適切なコード・セグメントを示します。必要なパラメータを変更し、目的に合せて使用できます。

<connector-factory location="eis/mqseries/Queue" connector-name="Jms Adapter">
     <config-property name="connectionFactoryLocation"
           value="com.ibm.mq.jms.MQQueueConnectionFactory" />
     <config-property name="factoryProperties"
value="QueueManager=my.queue.manager;TransportType=1;HostName=myhost.com;Port=141
       4;Channel=MYCHANNEL" />
     <config-property name="acknowledgeMode" value="AUTO_ACKNOWLEDGE" />
     <config-property name="isTopic" value="false" />
     <config-property name="isTransacted" value="true" />
     <config-property name="username" value="MUSR_MQADMIN" />
     <config-property name="password" value="password" />
</connector-factory>

この場合、「アダプタ構成ウィザードを使用したJMSアダプタの構成」の手順7の正しいJMS接続のJNDI名は、eis/mqseries/Queueです。


注意:

WebSphere MQでは、WebSphere MQアプリケーションとWebSphere MQ Administrationを保護するために、通常のWindowsのユーザー名およびグループの認可が使用されます。

ユーザー名およびグループの認可を操作するには、次のようにします。

  • 「コントロール パネル」「ユーザー アカウント」または「ユーザー」「パスワード」を順番に開きます。



  • Windows NTの場合は、「ユーザー マネージャ」を開きます。

WebSphere MQインストールでは、ローカル・グループmqmおよびユーザー名MUSR_MQADMINが自動的に作成されます。 このグループのメンバーであるユーザー名には、WebSphere MQキュー・マネージャを操作および管理するための権限が付与されます。 ユーザーMUSR_MQADMINのパスワードは、それを選択して「パスワードの設定」をクリックすると変更できます。 これは、次の例に示すように、oc4j-ra.xmlのエントリに反映させる必要のあるユーザー名とパスワードです。

<config-property name="username" value="MUSR_MQADMIN"/>
<config-property name="password" value="password"/>


接続先名

接続先名は、MQ Series構成にリストされたトピックまたはキューの名前です。 たとえば、キュー名はqueue:///MYQUEUE?targetClient=0になります。

5.2.2 ケース2: OracleAS Adapter for JMSを介したMQSeriesキューの統合

OracleAS Adapter for JMSは、Oracle BPEL Process Managerインストールに付属するJCA 1.5リソース・アダプタです。 JCA 1.5リソース・アダプタとBPEL Process Managerを双方向で統合するために、アダプタ・フレームワーク(AF)が使用されています。 アダプタ・フレームワークはオープン規格に準拠しており、基盤となるJCA相互作用をWebサービスとして公開するためのWeb service Invocation Framework(WSIF)テクノロジが使用されています。 この例を次に示します。

  • MQSeriesのキュー・コンシューマは、MQSeriesキューからメッセージをデキューしてBPELプロセスをトリガーします。 メッセージ・ペイロードはText型で、ネイティブ・フォーマット・ビルダーを使用してデリミタ付きスキーマにより定義されます。

  • MQSeriesのキュー・プロデューサは、invoke BPELメッセージに基づいてMQSeriesキューにメッセージをエンキューします。

5.2.2.1 MQSeriesのコンシューマ・サービスの構成

この項では、パートナ・リンクへのアダプタ・サービスの作成方法を説明します。

  1. 「アダプタ構成ウィザードを使用したJMSアダプタの構成」の手順1から3に従います。

  2. 「アダプタ構成ウィザードを使用したJMSアダプタの構成」の手順4で、図5-16に示すようにサービス名としてInboundと入力します。

    図5-16 「サービス名」ダイアログ・ボックス

    図5-16の説明が続きます
    「図5-16 「サービス名」ダイアログ・ボックス」の説明

  3. サード・パーティと統合するために操作タイプとして「サード・パーティ」を選択し、「次へ」をクリックします。

    「JMS接続」ダイアログ・ボックスが表示されます。

  4. 「JMS接続」ダイアログ・ボックスで次の接続情報を指定します。

    1. ファクトリ・プロパティ:

      コネクション・ファクトリの場所(mcf.ConnectionFactoryLocation)により、JMSアダプタに対して、基礎となるJMSプロバイダ内でキューまたはトピック・コネクション・ファクトリをインスタンス化する場所または方法を指示します。 JMSアダプタは、最初にJNDIを介して指定の値を検索します。 失敗すると、値をインスタンス化対象のJavaクラス名であるとみなします。 この場合にのみ、mcf.FactoryProperties内のFactory Properties値で、コネクション・ファクトリに対するベンダー固有のBeanメソッドを提示する名前/値ペアも調べます。

      これは必須フィールドであり、編集はできません。 「編集」をクリックし、JNDI接続のファクトリ・プロパティを入力して「OK」をクリックします。

      図5-17に、ファクトリ・プロパティを入力済の「ファクトリ・プロパティ」ダイアログ・ボックスを示します。

      図5-17 ファクトリ・プロパティの指定

      図5-17の説明が続きます
      「図5-17 ファクトリ・プロパティの指定」の説明

    2. JMSコネクション・ファクトリ:

      JMSコネクション・ファクトリは、JMS接続の作成に使用されます。 この例では、MQQueueConnectionFactoryを使用してQueueConnectionsが作成されます。

      この例では、「JMSコネクション・ファクトリ」フィールドに次の値を入力します。

      com.ibm.mq.jms.MQQueueConnectionFactory
      
      
    3. 処理済:

      これは、セッションが処理済であるか未処理であるかを決定するブールです。

      この例では、デフォルト値のtrueを保持します。

    4. 接続先タイプ:

      接続先がキューであるかトピックであるかを指定します。

      この例では、デフォルト値のQueueを保持します。

    5. ユーザー名:

      ユーザー名を入力します。

    6. パスワード:

      パスワードを入力します。

    図5-18に、すべてのフィールドに値が移入された後の「JMS接続」ダイアログ・ボックスを示します。

    図5-18 「JMS接続」ダイアログ・ボックス

    図5-18の説明が続きます
    「図5-18 「JMS接続」ダイアログ・ボックス」の説明

  5. 「次へ」をクリックします。

    「操作」ダイアログ・ボックスが表示されます。

  6. 「消費」を選択して「次へ」をクリックします。

  7. 図5-19のように、「消費操作のパラメータ」ダイアログ・ボックスに値を入力して「次へ」をクリックします。

    「接続先名」フィールドでは、MQSeriesのキュー名を指します。 「接続先名」フィールドの値targetClient=0は、JMSヘッダーがメッセージの一部であることを示すために使用されます。 JMSヘッダーをメッセージから切り捨てる場合は、targetClientに値1を指定する必要があります。 JMSアダプタは、テキスト・メッセージとバイト・メッセージをサポートしています。 この例ではテキスト・メッセージ・フォーマットを使用しています。

    図5-19 「消費操作のパラメータ」ダイアログ・ボックス

    図5-19の説明が続きます
    「図5-19 「消費操作のパラメータ」ダイアログ・ボックス」の説明

  8. 「メッセージ」ダイアログ・ボックスで、「参照」をクリックしてスキーマ・ファイルのURLを選択します。 この例では、図5-20に示すようにexpense.xsdを選択します。

    JMSアダプタの重要な機能の1つは、XMLとの間のネイティブ・フォーマット・トランスレーションをサポートすることです。 アダプタ・ペイロード(テキストまたはバイト)では、デリミタ付き、固定位置、COBOLコピーブックのデータを指すことができ、これらはネイティブ・フォーマット・トランスレータによりXMLとの間で変換されます。 この例では、着信テキスト・メッセージのデリミタ付きスキーマを指しています。

    図5-20 「メッセージ」ダイアログ・ボックス

    図5-20の説明が続きます
    「図5-20 「メッセージ」ダイアログ・ボックス」の説明

    「アダプタ構成ウィザード - 終了」画面が表示されます。

  9. 「次へ」をクリックし、「終了」をクリックしてMQSeriesコンシューマ・サービスの構成を完了します。

    図5-21に示す「終了」画面が表示されます。

    図5-21 「終了」画面(JMSアダプタ・サービス: インバウンド)

    図5-21の説明が続きます
    「図5-21 「終了」画面(JMSアダプタ・サービス: インバウンド)」の説明

  10. 「パートナ・リンクの作成」ダイアログ・ボックスで「OK」をクリックしてパートナ・リンクの作成を完了します。

5.2.2.2 MQSeriesのプロデューサ・サービスの構成

MQSeriesコンシューマ・サービスの構成後、次のステップはMQSeriesのプロデューサ・サービスを構成することです。

次の手順に従ってMQSeriesのプロデューサ・サービスを構成します。

  1. 「アダプタ構成ウィザードを使用したJMSアダプタの構成」の手順1から3に従います。

  2. 「アダプタ構成ウィザードを使用したJMSアダプタの構成」の手順4で、サービス名としてOutboundと入力します。

  3. サード・パーティと統合するために操作タイプとして「サード・パーティ」を選択し、「次へ」をクリックします。

    「JMS接続」ダイアログ・ボックスが表示されます。

  4. 図5-22のように、「JMS接続」ダイアログ・ボックスで接続情報を指定します。

    図5-22 「JMS接続」ダイアログ・ボックス

    図5-22の説明が続きます
    「図5-22 「JMS接続」ダイアログ・ボックス」の説明

  5. 「操作」ダイアログ・ボックスで「発行」をクリックし、「次へ」をクリックします。

  6. 「発行」を選択して「次へ」をクリックします。

  7. 図5-23のように、「消費操作のパラメータ」ダイアログ・ボックスに値を入力して「次へ」をクリックします。

    図5-23 「発行操作のパラメータ」ダイアログ・ボックス

    図5-23の説明が続きます
    「図5-23 「発行操作のパラメータ」ダイアログ・ボックス」の説明

  8. 「メッセージ」ダイアログ・ボックスで、「参照」をクリックしてスキーマ・ファイルのURLを選択します。 この例では、図5-24に示すようにexpense.xsdを選択します。

    図5-24 「メッセージ」ダイアログ・ボックス

    図5-24の説明が続きます
    「図5-24 「メッセージ」ダイアログ・ボックス」の説明

    「アダプタ構成ウィザード - 終了」画面が表示されます。

  9. 「次へ」をクリックし、「終了」をクリックしてMQSeriesプロデューサ・サービスの構成を完了します。

    図5-25に示す「終了」画面が表示されます。

    図5-25 「終了」画面(JMSアダプタ・サービス: アウトバウンド)

    図5-25の説明が続きます
    「図5-25 「終了」画面(JMSアダプタ・サービス: アウトバウンド)」の説明

  10. 「パートナ・リンクの作成」ダイアログ・ボックスで「OK」をクリックしてパートナ・リンクの作成を完了します。

5.2.2.3 エンドツーエンドのBPELプロセスの構成

次の手順に従って、エンドツーエンドのBPELプロセスを構成します。

  1. 「Receive」をクリックして、MQSeriesコンシューマ・サービスを指すようにreceiveアクティビティを構成します。

    図5-26にreceiveアクティビティを示します。

    図5-26 receiveアクティビティの構成

    図5-26の説明が続きます
    「図5-26 receiveアクティビティの構成」の説明

  2. MQSeriesのコンシューマから着信メッセージを受信するために、図5-26のように「インスタンスの作成」オプションを選択してグローバル変数InputVariableを作成します。

  3. 「OK」をクリックします。

  4. invokeアクティビティを、MQSeriesプロデューサのパートナ・リンクを指すようにドラッグ・アンド・ドロップします。

    図5-27にinvokeアクティビティを示します。

    図5-27 invokeアクティビティの構成

    図5-27の説明が続きます
    「図5-27 invokeアクティビティの構成」の説明

  5. assignアクティビティをドラッグ・アンド・ドロップして、MQSeriesプロデューサ用のMQSeriesヘッダーおよびペイロード・メッセージを設定し、「OK」をクリックします。

    図5-28にassignアクティビティを示します。

    図5-28 assignアクティビティの構成

    図5-28の説明が続きます
    「図5-28 assignアクティビティの構成」の説明

  6. 「作成」ドロップダウン・リストをクリックし、図5-29のように「コピー操作」を選択します。

    図5-29 「コピー操作」の選択

    図5-29の説明が続きます
    「図5-29 「コピー操作」の選択」の説明

    「コピー操作の作成」ダイアログ・ボックスが表示されます。

  7. 図5-30および図5-31のように、コピー操作を実行します。

    図5-30 コピー操作: 例1

    図5-30の説明が続きます
    「図5-30 コピー操作: 例1」の説明

    図5-31 コピー操作: 例2

    図5-31の説明が続きます
    「図5-31 コピー操作: 例2」の説明

  8. 必要なコピー操作の実行後、「Assign」ダイアログ・ボックスは図5-32のようになります。

    図5-32 コピー操作完了後の「Assign」ダイアログ・ボックス

    図5-32の説明が続きます
    「図5-32 コピー操作完了後の「Assign」ダイアログ・ボックス」の説明

  9. エンドツーエンドのBPELプロセスは、図5-33のようになります。

    図5-33 BPELプロセス

    図5-33の説明が続きます
    「図5-33 BPELプロセス」の説明

5.3 Oracle Enterprise Service BusでのJMSアダプタの使用例

この項には、次のことを示す例が含まれています。

前述のシナリオの目的は、次のとおりです。

この項には、次の項目が含まれます。

5.3.1 前提条件の確認

このシナリオの作成を開始する前に、次の前提条件が満たされていることを確認してください。

  1. ESBSamples.zipをC:\ESBSamplesまたは他の場所に解凍します。

  2. ESBSamples\AQJMStoDBが存在することを確認します。

  3. ESBSamples図5-34に示すツリー構造になっていることを確認します。

    図5-34 ESBSamplesフォルダ

    図5-34の説明が続きます
    「図5-34 ESBSamplesフォルダ」の説明

5.3.2 データベース・アカウントの準備

次の手順に従って、シナリオを作成するためのデータベース・アカウントを準備します。

  1. DOSプロンプトを開き、次の例に示すように既存のディレクトリをチュートリアル・ディレクトリに変更します。

    cd \ESBSamples\AQJMStoDB
    
    
  2. ORACLE_HOMEを、次の例に示すようにコンピュータ上のデータベース・インストールに設定します。

    ex: set ORACLE_HOME=D:\ORADB_10gR2
    
    
  3. 次のスクリプトを実行してアカウントを作成します。

    sqlplus sys as sysdba @accounts_create.sql
    
    

5.3.3 ストアド・プロシージャの作成

次の手順に従ってストアド・プロシージャを作成します。

  1. 次の例に示すように、既存のディレクトリからsqlディレクトリに変更します。

    cd \ESBSamples\AQJMStoDB\sql
    
    
  2. 次のスクリプトを実行してストアド・プロシージャを作成します。

    sqlplus dbapp/dbapp @procedure_create.sql
    
    

5.3.4 AQでの接続先の作成

次の手順に従ってAQで接続先を作成します。

  1. 次の例に示すように、既存のディレクトリからsqlディレクトリに変更します。

    cd \ESBSamples\AQJMStoDB\sql
    
    
  2. 次のSQLスクリプトを使用して、JMSDEMO_TOPICというJMSトピックに必要なインフラストラクチャをデータベースに作成します。

    sqlplus jmuser/jmuser @topic_create.sql
    
    

5.3.5 新規ESBプロジェクトの作成

次の手順に従って新規ESBプロジェクトを作成します。

  1. Oracle JDeveloperを開きます。

  2. 「ファイル」メニューから「新規」を選択します。

    「新規ギャラリ」ダイアログ・ボックスが表示されます。

  3. 「フィルタ方法」ボックスから「すべてのテクノロジ」を選択します。 使用可能なカテゴリのリストが表示されます。

  4. 「General」ノードを開いて「Projects」を選択します。

  5. 図5-35のように、「項目」グループから「ESBプロジェクト」を選択します。

    図5-35 新規ESBプロジェクトの作成

    図5-35の説明が続きます
    「図5-35 新規ESBプロジェクトの作成」の説明

  6. 「OK」をクリックします。

    「ESBプロジェクトの作成」ダイアログ・ボックスが表示されます。

  7. 「プロジェクト名」フィールドにわかりやすい名前を入力します。 たとえば、図5-36のようにAQJMStoDBと入力します。

    図5-36 ESBプロジェクト名の入力

    図5-36の説明が続きます
    「図5-36 ESBプロジェクト名の入力」の説明

  8. 「OK」をクリックします。

    新規ESBプロジェクトAQJMStoDBが作成されました。

5.3.6 インバウンドJMSアダプタの作成

次の手順に従ってインバウンドJMSアダプタを作成します。

  1. 「コンポーネント・パレット」から「アダプタ・サービス」を選択し、「JMSアダプタ」AQJMStoDB.esbプロジェクトにドラッグ・アンド・ドロップします。

    図5-37に示す「JMSアダプタ・サービスの作成」ダイアログ・ボックスが表示されます。

    図5-37 JMSアダプタ・サービスの作成

    図5-37の説明が続きます
    「図5-37 JMSアダプタ・サービスの作成」の説明

  2. 「JMSアダプタ・サービスの作成」ダイアログ・ボックスで次の情報を指定します。

    • 名前: サービスの名前を入力します。 この例では、ListenForNewEmployeesと入力します。

    • システム/グループ: デフォルト値を保持します。

    図5-38に、「名前」および「システム/グループ」フィールドに情報を入力した後の「JMSアダプタ・サービスの作成」ダイアログ・ボックスを示します。

    図5-38 JMSアダプタ・サービスの定義

    図5-38の説明が続きます
    「図5-38 JMSアダプタ・サービスの定義」の説明

  3. 「アダプタ・サービスのWSDL」で「アダプタ・サービスのWSDLの構成」アイコンをクリックします。

    「アダプタ構成ウィザード」の「ようこそ」ページが表示されます。

  4. 「次へ」をクリックします。

    図5-39のように、「サービス名」フィールドが入力済の「サービス名」ダイアログ・ボックスが表示されます。

    図5-39 サービス名の入力

    図5-39の説明が続きます
    「図5-39 サービス名の入力」の説明

  5. サービス名を保持して「次へ」をクリックします。

    「JMSプロバイダ」ダイアログ・ボックスが表示されます。

  6. JMSプロバイダとして「Oracle Enterprise Messaging Service (OEMS)」を選択し、ドロップダウン・リストから「データベース」をクリックします。

    図5-40に「JMSプロバイダ」ダイアログ・ボックスを示します。

    図5-40 「JMSプロバイダ」ダイアログ・ボックス

    図5-40の説明が続きます
    「図5-40 「JMSプロバイダ」ダイアログ・ボックス」の説明

  7. 「次へ」をクリックします。

    図5-41に示す「サービス接続」ダイアログ・ボックスが表示されます。

    図5-41 「サービス接続」ダイアログ・ボックス

    図5-41の説明が続きます
    「図5-41 「サービス接続」ダイアログ・ボックス」の説明

  8. 「新規」をクリックしてデータベース接続を定義します。

    「データベース接続の作成」ウィザードの「ようこそ」ページが表示されます。

  9. 「次へ」をクリックします。

    「タイプ」ダイアログ・ボックスが表示されます。

  10. 「タイプ」ダイアログ・ボックスに次の情報を入力します。

    1. 「接続名」フィールドで、データベース接続に使用する一意の名前を指定します。 この例では、OEMSと入力します。

    2. 「接続タイプ」ボックスから「Oracle (JDBC)」を選択します。

      図5-42に「タイプ」ダイアログ・ボックスを示します。

      図5-42 接続名と接続タイプの指定

      図5-42の説明が続きます
      「図5-42 接続名と接続タイプの指定」の説明

  11. 「次へ」をクリックします。

    「認証」ダイアログ・ボックスが表示されます。

  12. 次のフィールドに認証の資格証明を入力します。

    1. 「ユーザー名」フィールドで、データベース接続に使用する一意の名前を指定します。 この例では、jmsuserと入力します。

    2. 「パスワード」フィールドで、データベース接続に使用するパスワードを指定します。 この例では、jmsuserと入力します。

    3. 「ロール」フィールドは空白にしておきます。

    4. 「パスワードを配布」を選択します。

    図5-43に、資格証明が移入された後の「認証」ダイアログ・ボックスを示します。

    図5-43 認証資格証明の指定

    図5-43の説明が続きます
    「図5-43 認証資格証明の指定」の説明

  13. 「次へ」をクリックします。

    「接続」ダイアログ・ボックスが表示されます。

  14. 次のフィールドに情報を入力します。

    1. 「ドライバ」リストで、デフォルト値の「thin」を保持します。

    2. 「ホスト名」フィールドでデフォルト値の「localhost」を保持します。

    3. 「JDBCポート」フィールドで、データベース接続に使用するポート番号を指定します。

    4. 「SID」フィールドで、データベース接続に使用する一意のSID値を指定します。

    図5-44に「接続」ダイアログ・ボックスを示します。

    図5-44 新規データベース接続情報の指定

    図5-44の説明が続きます
    「図5-44 新規データベース接続情報の指定」の説明

  15. 「次へ」をクリックします。

    「テスト」ダイアログ・ボックスが表示されます。

  16. 「接続のテスト」をクリックし、指定した情報によりデータベースとの接続が確立されるかどうかを確認します。

  17. 「終了」をクリックして新規データベース接続の作成プロセスを完了します。

    「サービス接続」ダイアログ・ボックスが表示され、データベース接続のサマリーが示されます。

  18. 「次へ」をクリックします。

    「操作」ダイアログ・ボックスが表示されます。

  19. 「メッセージ消費」を選択します。

    「操作名」フィールドには自動的に入力されます。

    図5-45に、「メッセージ消費」を選択した状態の「操作」ダイアログ・ボックスを示します。

    図5-45 JMSアダプタの操作の選択

    図5-45の説明が続きます
    「図5-45 JMSアダプタの操作の選択」の説明

  20. 「次へ」をクリックします。

    「消費操作のパラメータ」ダイアログ・ボックスが表示されます。

  21. 「リソース・プロバイダ」フィールドでOEMSを指定し、「接続先名」で「参照」をクリックします。

    「接続先の選択」ダイアログ・ボックスが表示されます。

  22. 図5-46に示すように、「接続先」「すべてのタイプ」をクリックしてJMSUSERと入力し、JMSDEMO_TOPIC (topic)を選択して「OK」をクリックします。

    「消費操作のパラメータ」ダイアログ・ボックスが表示されます。

    図5-46 接続先の選択

    図5-46の説明が続きます
    「図5-46 接続先の選択」の説明

  23. 「永続サブスクライバID」フィールドにNewProvisioningESBと入力し、「次へ」をクリックします。

    図5-47に、すべてのフィールドを入力済の「消費操作のパラメータ」ダイアログ・ボックスを示します。

    図5-47 「消費操作のパラメータ」ダイアログ・ボックス

    図5-47の説明が続きます
    「図5-47 「消費操作のパラメータ」ダイアログ・ボックス」の説明

    図5-48に示す「メッセージ」ダイアログ・ボックスが表示されます。

    図5-48 「メッセージ」ダイアログ・ボックス

    図5-48の説明が続きます
    「図5-48 「メッセージ」ダイアログ・ボックス」の説明

  24. 「メッセージ・スキーマ」で、「スキーマの場所」の横にある「参照」をクリックします。

    図5-49に示す「タイプの選択」ダイアログ・ボックスが表示されます。

    図5-49 「タイプの選択」ダイアログ・ボックス

    図5-49の説明が続きます
    「図5-49 「タイプの選択」ダイアログ・ボックス」の説明

  25. 「スキーマ・ファイルのインポート」アイコン(右上)をクリックします。

    「スキーマ・ファイルのインポート」ダイアログ・ボックスが表示されます。

  26. 「ファイルシステムの参照」アイコンをクリックします。

    「スキーマのインポート」ダイアログ・ボックスが表示されます。

  27. このチュートリアルがあるディレクトリにナビゲートします。 図5-50のように、ADDEMPLOYEES.xsdスキーマを選択します。

    図5-50 ADDEMPLOYEES.xsdスキーマの選択

    図5-50の説明が続きます
    「図5-50 ADDEMPLOYEES.xsdスキーマの選択」の説明

  28. 「開く」をクリックします。

    「スキーマのインポート」ダイアログ・ボックスが再表示されます。図5-51に示すように、今度は「URL」フィールドが入力済になっています。

    図5-51 「スキーマのインポート」ダイアログ・ボックス

    図5-51の説明が続きます
    「図5-51 「スキーマのインポート」ダイアログ・ボックス」の説明

  29. 「OK」をクリックします。 「プロジェクトに追加」チェック・ボックスが選択されていることを確認します。

    「タイプの選択」ダイアログ・ボックスが再表示されます。

  30. 「タイプの選択」ダイアログ・ボックスで、図5-52のように「インポートしたスキーマ」を開いて「ADDEMPLOYEES.xsd」の下で「InputParameters」を選択します。

    図5-52 「タイプの選択」ダイアログ・ボックスでのスキーマの選択

    図5-52の説明が続きます
    「図5-52 「タイプの選択」ダイアログ・ボックスでのスキーマの選択」の説明

  31. 「OK」をクリックします。

    図5-53のように、「スキーマの場所」および「スキーマ要素」フィールドが入力済の状態で「メッセージ」ボックスが表示されます。

    図5-53 スキーマ詳細が入力されている「メッセージ」ダイアログ・ボックス

    図5-53の説明が続きます
    「図5-53 スキーマ詳細が入力されている「メッセージ」ダイアログ・ボックス」の説明

  32. 「次へ」をクリックして「終了」をクリックします。

    すべてのフィールドが入力済の状態で、図5-54に示す「JMSアダプタ・サービスの作成」ダイアログ・ボックスが表示されます。

    図5-54 定義が入力済の「JMSアダプタ・サービスの作成」ダイアログ・ボックス

    図5-54の説明が続きます
    「図5-54 定義が入力済の「JMSアダプタ・サービスの作成」ダイアログ・ボックス」の説明

  33. 「OK」をクリックします。

    インバウンドJMSアダプタ・サービスの作成を完了しました。


ヒント:

transaction-manager.xml内のタイムアウト値は、jtaトランザクションを十分に完了できるレベルに設定する必要があります。 例外が発生した場合は、次の例に示すようにtransaction-manager.xml内のタイムアウト値を増やしてください。
Caused by: javax.transaction.RollbackException: Transaction has been marked
for rollback: Timed out

at
com.evermind.server.ApplicationServerTransaction.checkMarkedForRollback(ApplicationServerTransaction.java:612)

at
com.evermind.server.ApplicationServerTransaction.enlistResource(ApplicationSer
verTransaction.java:108)

at
com.evermind.server.ApplicationServerTransaction.enlistResource(ApplicationSer
verTransaction.java:87)

at
com.evermind.server.jms.EvermindSession.checkForCMT(EvermindSession.java:1450)


5.3.7 アウトバウンド・データベース・アダプタ・サービスの作成

次の手順に従ってアウトバウンド・データベース・アダプタ・サービスを作成します。

  1. 「コンポーネント・パレット」から「アダプタ・サービス」を選択し、「データベース・アダプタ」NewEmployee.esbプロジェクトにドラッグ・アンド・ドロップします。

    「データベース・アダプタ・サービスの作成」ダイアログ・ボックスが表示されます。

  2. 「データベース・アダプタ・サービスの作成」ダイアログ・ボックスで次の情報を指定します。

    • 名前: サービスの名前を入力します。 この例では、CreateEmployeeと入力します。

    • システム/グループ: デフォルト値を保持します。

  3. 「アダプタ・サービスのWSDL」で「アダプタ・サービスのWSDLの構成」アイコンをクリックします。

    「アダプタ構成ウィザード」の「ようこそ」ページが表示されます。

  4. 「次へ」をクリックします。

    図5-55のように、「サービス名」フィールドが入力済の「サービス名」ダイアログ・ボックスが表示されます。

    図5-55 サービス名の入力

    図5-55の説明が続きます
    「図5-55 サービス名の入力」の説明

  5. サービス名を保持して「次へ」をクリックします。

    「サービス接続」ダイアログ・ボックスが表示されます。

  6. 「新規」をクリックしてデータベース接続を定義します。

    「データベース接続の作成」ウィザードの「ようこそ」ページが表示されます。

  7. 「次へ」をクリックします。

    「タイプ」ダイアログ・ボックスが表示されます。

  8. 「タイプ」ダイアログ・ボックスに次の情報を入力します。

    1. 「接続名」フィールドで、データベース接続に使用する一意の名前を指定します。 この例では、EmployeeDBと入力します。

    2. 「接続タイプ」ボックスから「Oracle (JDBC)」を選択します。

      図5-56に「タイプ」ダイアログ・ボックスを示します。

      図5-56 接続名と接続タイプの指定

      図5-56の説明が続きます
      「図5-56 接続名と接続タイプの指定」の説明

  9. 「次へ」をクリックします。

    「認証」ダイアログ・ボックスが表示されます。

  10. 次のフィールドに認証の資格証明を入力します。

    1. 「ユーザー名」フィールドで、データベース接続に使用する一意の名前を指定します。 この例では、dbappと入力します。

    2. 「パスワード」フィールドで、データベース接続に使用するパスワードを指定します。 この例では、dbappと入力します。

    3. 「ロール」フィールドは空白にしておきます。

    4. 「パスワードを配布」を選択します。

    図5-57に、資格証明が移入された後の「認証」ダイアログ・ボックスを示します。

    図5-57 認証資格証明の指定

    図5-57の説明が続きます
    「図5-57 認証資格証明の指定」の説明

  11. 「次へ」をクリックします。

    「接続」ダイアログ・ボックスが表示されます。

  12. 次のフィールドに情報を入力します。

    1. 「ドライバ」リストで、デフォルト値の「thin」を保持します。

    2. 「ホスト名」フィールドでデフォルト値の「localhost」を保持します。

    3. 「JDBCポート」フィールドで、データベース接続に使用するポート番号を指定します。

    4. 「SID」フィールドで、データベース接続に使用する一意のSID値を指定します。

    図5-58に「接続」ダイアログ・ボックスを示します。

    図5-58 新規データベース接続情報の指定

    図5-58の説明が続きます
    「図5-58 新規データベース接続情報の指定」の説明

  13. 「次へ」をクリックします。

    「テスト」ダイアログ・ボックスが表示されます。

  14. 「接続のテスト」をクリックし、指定した情報によりデータベースとの接続が確立されるかどうかを確認します。

  15. 「終了」をクリックして新規データベース接続の作成プロセスを完了します。

    図5-59のように、「サービス接続」ダイアログ・ボックスが表示され、データベース接続のサマリーが示されます。

    図5-59 データベース接続のサマリーを含む「サービス接続」ダイアログ・ボックス

    図5-59の説明が続きます
    「図5-59 データベース接続のサマリーを含む「サービス接続」ダイアログ・ボックス」の説明

  16. 「次へ」をクリックします。

    「操作」ダイアログ・ボックスが表示されます。

  17. 操作タイプとして「ストアド・プロシージャまたはファンクションの呼出し」を選択します。

    図5-60に、操作タイプ「ストアド・プロシージャまたはファンクションの呼出し」が選択されている「操作」ダイアログ・ボックスを示します。

    図5-60 データベース・アダプタの操作の選択

    図5-60の説明が続きます
    「図5-60 データベース・アダプタの操作の選択」の説明

  18. 「次へ」をクリックします。

    「ストアド・プロシージャの指定」ダイアログ・ボックスが表示されます。

  19. 「スキーマ」で、ドロップダウン・リストから「DBAPP」を選択し、「参照」をクリックしてプロシージャを選択します。

    「ストアド・プロシージャ」ダイアログ・ボックスが表示されます。

  20. DBAPPスキーマから「ストアド・プロシージャ」の下のADDEMPLOYEESを選択し、「OK」をクリックします。

    図5-61に、「ストアド・プロシージャ」ダイアログ・ボックスでストアド・プロシージャADDEMPLOYEESを選択する様子を示します。

    図5-61 「ストアド・プロシージャ」ダイアログ・ボックス

    図5-61の説明が続きます
    「図5-61 「ストアド・プロシージャ」ダイアログ・ボックス」の説明

  21. 「OK」をクリックします。

    図5-62に示す「ストアド・プロシージャの指定」ダイアログ・ボックスが表示され、指定したスキーマおよびストアド・プロシージャのサマリーが示されます。

    図5-62 「ストアド・プロシージャの指定」ダイアログ・ボックス

    図5-62の説明が続きます
    「図5-62 「ストアド・プロシージャの指定」ダイアログ・ボックス」の説明

  22. 「次へ」をクリックして「終了」をクリックします。

    すべてのフィールドが入力済の状態で、図5-63に示す「データベース・アダプタ・サービスの作成」ダイアログ・ボックスが表示されます。

    図5-63 「データベース・アダプタ・サービスの作成」ダイアログ・ボックス

    図5-63の説明が続きます
    「図5-63 「データベース・アダプタ・サービスの作成」ダイアログ・ボックス」の説明

  23. 「OK」をクリックします。

    アウトバウンドRDBMSアダプタの作成が完了しました。

5.3.8 ルーティング・サービスの構成

次の手順に従ってListenForNewEmployeesルーティング・サービスを構成します。

  1. 図5-64のように、ListenForNewEmployeesルーティング・サービスをダブルクリックします。

    図5-64 ルーティング・サービスの選択

    図5-64の説明が続きます
    「図5-64 ルーティング・サービスの選択」の説明

  2. 「ルーティング・ルール」タブを選択し、「+」アイコンをクリックしてルールを追加します。

    「ターゲット・サービス操作の参照」ダイアログ・ボックスが表示されます。

  3. 図5-65のように、「CreateEmployee」サービスを選択します。

    図5-65 「ターゲット・サービス操作の参照」ダイアログ・ボックス

    図5-65の説明が続きます
    「図5-65 「ターゲット・サービス操作の参照」ダイアログ・ボックス」の説明

  4. 「OK」をクリックします。

    「アプリケーション」ウィンドウの中央ペインは図5-66のようになります。

    図5-66 トランスフォーメーション・マップの選択

    図5-66の説明が続きます
    「図5-66 トランスフォーメーション・マップの選択」の説明

  5. 「トランスフォーメーション」アイコンをダブルクリックし、「新規マッパー・ファイルの作成」アイコンをクリックします。

    図5-67に示す「リクエスト・トランスフォーメーション・マップ」ダイアログ・ボックスが表示されます。

    図5-67 「リクエスト・トランスフォーメーション・マップ」ダイアログ・ボックス

    図5-67の説明が続きます
    「図5-67 「リクエスト・トランスフォーメーション・マップ」ダイアログ・ボックス」の説明

  6. 「新規マッパー・ファイルの作成」を選択し、デフォルト名を受け入れて「OK」をクリックします。

    「アプリケーション」ウィンドウの中央ペインは図5-68のようになります。

    図5-68 マッパー・ファイルの選択

    図5-68の説明が続きます
    「図5-68 マッパー・ファイルの選択」の説明

  7. マッパーの左側にある「EMPS」を選択し、右側の「EMPS」へドラッグします。

    図5-69に示す「自動マップ・プリファレンス」ダイアログ・ボックスが表示されます。

    図5-69 「自動マップ・プリファレンス」ダイアログ・ボックス

    図5-69の説明が続きます
    「図5-69 「自動マップ・プリファレンス」ダイアログ・ボックス」の説明

  8. デフォルトのマップ・プリファレンスを受け入れて「OK」をクリックします。

    「アプリケーション」ウィンドウの中央ペインは図5-70のようになります。

    図5-70 マップ・プリファレンスの設定

    図5-70の説明が続きます
    「図5-70 マップ・プリファレンスの設定」の説明

  9. マッパーの設定を保存してタブを閉じます。

  10. ルーティング・サービスの設定を保存してタブを閉じます。

5.3.9 開発から本番へのプロジェクトのプロモート

サービスを開発から本番へとそのままデプロイすると、最後にアダプタはデプロイメント・リソース(EmployeeDBなど)を指すことになります。 このような非管理モードには、次の問題があります。

  • 接続情報がWSDLファイルで指定されます。

  • デフォルト(ウィザードでは、これを実行時接続とみなして設計時の接続情報が取得されます)。

この状況を回避するには、管理者は次のいずれかの管理対象接続を使用してESBサーバー上に一致するデータソースを作成する必要があります。

  • 管理モード(TopLink)

    • 接続情報は、JNDIエントリを介してoc4j-ra.xmlで指定されます。

    • このJNDIエントリがWSDLで参照されます。

  • 管理モード(OC4J)

    これは推奨アプローチです。

    • 接続情報はdata-sources.xmlで指定されます。

    • data-sourceはoc4j-ra.xml内のJNDIエントリで参照されます。

    • このJNDIエントリがWSDLで参照されます。

5.3.10 管理モードでのJMSアダプタの構成

作成したプロジェクトからの次の値が必要です。

  • リソース・プロバイダ: 「インバウンドJMSアダプタの作成」の手順21でリソース・プロバイダに指定した値をapplication.xmlおよびoc4j-ra.xml内で使用します。

  • JNDI名: この例で指定したJNDI名eis/Jms/jmuseroc4j-ra.xml内で使用します。

5.3.11 JMSアダプタ: データベース・リソース・プロバイダの構成

次の手順に従って、application.xml内でデータベース・リソース・プロバイダを構成します。

  1. ESBサーバーのインストール場所(%ESB_HOME%\j2ee\home\config)にナビゲートします。次に例を示します。

    cd D:\ORACLE\OracleESB_beta\j2ee\home\config
    
    
  2. application.xmlを開き、次のエントリを追加します。

    <resource-provider class="oracle.jms.OjmsContext" name="OEMS">
    <description>Resource provider for the OEMS database</description>
    <property name="url" value="jdbc:oracle:thin:jmsuser/jmsuser@localhost:1521:XE"
    />
    </resource-provider>
    
    

    データベース接続名が、この使用例で指定したデータベース名(OEMS)と一致していることを確認します。

5.3.12JMSアダプタ: oc4j-ra.xmlでのJMS宛先の構成

次の手順に従って、oc4j-ra.xml内でJMSアダプタの接続先を構成します。

  1. ESBサーバーのインストール場所にあるJMSアダプタ・デプロイメント・フォルダにナビゲートします。次に例を示します。

    D:\ORACLE\OracleESB_beta\j2ee\home\application-deployments\default\JmsAdapter
    
    
  2. 次の例に示すように、oc4j-ra.xml内でJNDI名とリソース・プロバイダ名を変更します。

    <connector-factory location="eis/Jms/OEMS" connector-name="Jms Adapter">
    <config-property name="connectionFactoryLocation"
    value="java:comp/resource/OEMS/TopicConnectionFactories/myTCF"/>
    <config-property name="factoryProperties" value=""/>
    <config-property name="acknowledgeMode" value="AUTO_ACKNOWLEDGE"/>
    <config-property name="isTopic" value="true"/>
    <config-property name="isTransacted" value="true"/>
    <config-property name="username" value="jmsuser"/>
    <config-property name="password" value="jmsuser"/>
    <connection-pooling use="none">
    </connection-pooling>
    <security-config use="none">
    </security-config>
    </connector-factory>
    
    

    「管理モードでのJMSアダプタの構成」で前述したように、JNDI名とリソース・プロバイダ名を変更する必要があることに注意してください。

5.3.13データベース・アダプタ: oc4j-ra.xmlでのデータベース接続先の構成

次の手順に従って、oc4j-ra.xml内でJMSアダプタの接続先を構成します。

  1. ESBサーバーのインストール場所にあるデータベース・アダプタ・デプロイメント・フォルダにナビゲートします。次に例を示します。

    D:\ORACLE\OracleESB_beta\j2ee\home\application-deployments\default\DBAdapter
    
    
  2. 次の例に示すようにoc4j-ra.xmlを変更します。

    <connector-factory location="eis/DB/EmployeeDB" connector-name="Database Adapter">
        <config-property name="xADataSourceName" value="jdbc/EmployeeDB-XA"/>
        <config-property name="dataSourceName" value="jdbc/EmployeeDB"/>
        <config-property name="platformClassName"
    value="oracle.toplink.platform.database.Oracle9Platform"/>
        <config-property name="usesNativeSequencing" value="true"/>
        <config-property name="sequencePreallocationSize" value="50"/>
        <config-property name="defaultNChar" value="false"/>
        <config-property name="usesBatchWriting" value="true"/>
        <connection-pooling use="none">
        </connection-pooling>
        <security-config use="none">
        </security-config>
    </connector-factory>
    
    

5.3.14データベース・アダプタ: data-sources.xmlの構成

次の手順に従って、oc4j-ra.xml内でJMSアダプタの接続先を構成します。

  • ESBサーバーのインストール場所にあるconfigフォルダにナビゲートします。次に例を示します。

    D:\ORACLE\OracleESB_beta\j2ee\home\config
    
    
  • 次の例に示すようにdata-sources.xmlを変更します。

    <managed-data-source name="EmployeeDB-XA" connection-pool-name="EmployeePool"
    jndi-name="jdbc/EmployeeDB-XA"/>
    <managed-data-source name="EmployeeDB" connection-pool-name="EmployeePool"
    jndi-name="jdbc/EmployeeDB"/>
    <connection-pool name="EmployeePool">
              <connection-factory factory-class="oracle.jdbc.pool.OracleDataSource"
    user="dbapp" password="dbapp" url="jdbc:oracle:thin:@//localhost:1521/XE">
              </connection-factory>
    
    

5.3.15 サーバーの再起動

リソース・プロバイダの構成後に、次の手順に従ってESBサーバーを再起動します。

  1. 「スタート」「ESB」「Stop ESB」を選択します。

  2. 「スタート」「ESB」「Start ESB」を選択します。

5.3.16 ESBへの登録

これは、設計時の最終ステップです。 次の手順でESBに登録します。

  1. すべてを保存します。

  2. 「AQJMStoDB」プロジェクトを右クリックして「ESBに登録」を選択し、「LocalIntegrationServer」をクリックします。

5.3.17 ESB Consoleのチェック

ESB Controlをチェックするには、ESB Consoleを開きます。 例: http://localhost:8888/esb/esb/EsbConsole.html

図5-71のようなサービス・ウィンドウが表示されます。

5.3.18 新規サービスをトリガーするためのJMSメッセージの送信

次の手順に従って、新規サービスをトリガーするためのJMSメッセージを送信します。

  1. DOSプロンプトを開き、次の例に示すようにチュートリアルの下のtoolsディレクトリに移動します。

    cd C:\ESBSamples\AQJMStoDB\tools
    
    
  2. 環境(classpath)が反映されるようにsetenv.batを編集し、サーバー設定(場所、ポートなど)が反映されるようにOEMSプロパティを編集します。 その後、次の例に示すようにメッセージを送信します。

    C:\ESBSamples\AQJMStoDB\tools>setenv
    C:\ESBSamples\AQJMStoDB\tools>java send JMSDEMO_TOPIC
    
    -------------------------------------------------------------
    OEMS.155 - simple JMS send / JMS 1.02 / Database AQ / no JNDI
    -------------------------------------------------------------
    Connection factory = oracle.jms.AQjmsTopicConnectionFactory@ab95e6
    
    destination: JMSUSER.JMSDEMO_TOPIC
    message    :
    
    <?xml version = '1.0' encoding = 'UTF-8'?>
    <db:InputParameters
    xmlns:db="http://xmlns.oracle.com/pcbpel/adapter/db/DBAPP/AD
    DEMPLOYEES/">
       <EMPS>
          <EMPS_ITEM>
             <FNAME>John</FNAME>
             <MIDDLE>W</MIDDLE>
             <LNAME>Doe</LNAME>
             <ADDR>
                <STREET>100 Oracle Parkway</STREET>
                <CITY>Redwood Shores</CITY>
                <STATE>CA</STATE>
                <ZIP>94065</ZIP>
             </ADDR>
          </EMPS_ITEM>
       </EMPS>
    </db:InputParameters>
    
    message was sent with ID=ID:F85494669F764BFAB51CC75367D07B35
    
    

5.3.19 ESB Controlでの実行チェック

次の手順に従ってESB Controlで実行をチェックします。

  1. ESB Consoleを開きます。

  2. 右上隅の「インスタンス」をクリックします。

  3. 「検索」の横にある緑の矢印をクリックします。

    図5-72のようなインスタンスが表示されます。

    図5-72 ESB Controlのインスタンス

    図5-72の説明が続きます
    「図5-72 ESB Controlのインスタンス」の説明