ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Data Integrator接続およびナレッジ・モジュール・ガイド
11gリリース1(11.1.1)
B62261-01
  ドキュメント・ライブラリへ
ライブラリ
製品リストへ
製品
目次へ
目次

戻る
戻る
 
次へ
次へ
 

23 JMS XML

この章では、XMLペイロードを使用するJava Message Services(JMS)のOracle Data Integratorでの使用方法について説明します。

この章の内容は次のとおりです。

23.1 概要

Oracle Data Integratorには、JMS宛先を統合するための、単純で透過的な方法が用意されています。この章では、XMLペイロードを使用するJMSメッセージの処理について説明します。バッチ・モードでのテキスト・ペイロードの処理の説明は、第22章「JMS」を参照してください。

23.1.1 概念

JMS XMLナレッジ・モジュールは、最も一般的なJMS準拠のミドルウェア(Oracle Service Bus、Sonic MQ、IBM Websphere MQなど)に適用されます。これらのほとんどのナレッジ・モジュールには、メッセージを確実に配信するためのトランザクション処理が含まれます。

23.1.1.1 JMSメッセージの構造

JMSメッセージの構造の詳細は、22.1.1.1項「JMSメッセージの構造」を参照してください。

23.1.1.2 JMS宛先の使用

Oracle Data Integratorでは、JMS宛先によって配信されるXMLメッセージの処理が可能です。各メッセージはXMLデータのコンテナとして扱われ、JMS XMLキューまたはJMS XMLトピック・テクノロジを介して処理されます。

JMS XMLキューまたはJMS XMLトピック・テクノロジでは、各メッセージ・ペイロードに完全なXMLデータ構造が含まれます。この構造は、Oracle Data Integrator XML Driverを使用して、モデルとして表示されるリレーショナル・スキーマ(XMLスキーマ)にマップされます。


注意:

この方法は、XMLファイルの処理と非常に似ています。JMS XMLでは、メッセージ・ペイロードがXMLファイルです。XMLファイルの処理およびXMLドライバの詳細は、第5章「XMLファイル」および付録B「Oracle Data Integrator Driver for XMLの参照情報」を参照してください。

トポロジでは、単一の物理スキーマを使用して、各JMS宛先がJMS XMLトピックまたはキューのデータ・サーバーとして定義されます。XML形式のメッセージを配信する各トピックまたはキューに対して、データ・サーバーと物理スキーマの1つのペアが宣言されます。

XMLメッセージの構造は、データ・モデルとして表示されるリレーショナル構造(XMLスキーマと呼ぶ)にマップされます。このモデル内の各データストアは、XMLファイルの一部(一般的には要素タイプ)を表します。

メッセージの処理

各XMLメッセージは1つのOracle Data Integratorモデルに対応するため、JMS XMLメッセージの消費または生成時には、モデル全体を1つの単位として使用およびロードする必要があります。XMLメッセージの処理単位はパッケージです。

モデル内でメッセージのプロパティまたはヘッダー・フィールドを宣言したり、インタフェース内で列として使用することはできません。ただし、メッセージ・セレクタでの使用やKMオプションを介した設定は可能です。

XMLメッセージの消費

受信XMLメッセージの処理は、パッケージ単位で次のように実行されます。

  1. JMSメッセージとXMLスキーマの同期化: この操作では、メッセージの読取りおよびXMLスキーマの生成が行われます。通常、メッセージに最初にアクセスするインタフェースによって実行されます。

  2. データの抽出: 一連のインタフェースにより、XMLスキーマのデータストアがソースとして使用されます。このデータを使用できるのは、セッションの終了、新規の同期化アクションによる別のメッセージの読取り、またはJMS読取りのコミットの実行が発生するまでです。

  3. JMS読取りのコミット: この操作では、メッセージ消費の検証およびXMLスキーマの削除が行われます。XMLメッセージからデータを最後に抽出するインタフェースで実行する必要があります。

XMLメッセージの生成

XMLメッセージを生成するには、パッケージが次のタスクを実行できるように設計されている必要があります。

  1. XMLスキーマの初期化: この操作では、生成するXMLメッセージに対応する空のXMLスキーマが作成されます。この操作は、通常、構造をロードする最初のインタフェースで実行されます。

  2. データのロード: 一連のインタフェースによって、XMLスキーマにデータがロードされます。

  3. XMLスキーマとJMSの同期化: この操作では、XMLスキーマがXMLメッセージに変換され、JMS宛先に送信されます。この操作は、通常、スキーマをロードする最後のインタフェースで実行されます。

メッセージのフィルタ処理

サーバー上のメッセージをフィルタ処理するためのメッセージ・セレクタ(MESSAGE_SELECTOR KMオプション)を定義することで、JMS XML宛先のメッセージをフィルタ処理できます。このタイプのフィルタでは、メッセージのプロパティまたはヘッダー・フィールドのみを使用できます。フィルタはサーバーによって処理されるため、Data Integratorで読み取られる情報量が削減されます。XMLスキーマから抽出されたデータを使用して、インタフェースでデータをフィルタ処理することもできます。これらのフィルタは、メッセージがXMLスキーマと同期化された後、Data Integratorで処理されます。

23.1.2 ナレッジ・モジュール

Oracle Data Integratorには、XMLメッセージを処理するためのナレッジ・モジュール(KM)が用意されています。これらのリストを表23-1に示します。

表23-1 JMS XMLナレッジ・モジュール

ナレッジ・モジュール 説明

IKM SQL to JMS XML Append

任意のANSI SQL-92標準準拠ステージング領域からJMS準拠のメッセージのキューまたはトピックへ、XML形式でデータを統合します。

LKM JMS XML to SQL

XMLのJMS準拠メッセージのキューまたはトピックから、ステージング領域として使用される任意のANSI SQL-92標準準拠データベースへ、データをロードします。


23.2 インストールおよび構成

JMSナレッジ・モジュールの使用を開始する前に、この項の情報を必ず読んでください。

23.2.1 システム要件および動作要件

インストールを実行する前に、システム要件および動作要件のドキュメントを読んで、使用する環境がインストールする製品の最低インストール要件を満たすことを確認する必要があります。

サポートされているプラットフォームおよびバージョンのリストには、次のOracle Technical Network(OTN)からアクセスできます。

http://www.oracle.com/technology/products/oracle-data-integrator/index.html

23.2.2 テクノロジ固有の要件

JMS宛先へのアクセスは、通常、JNDIサービス経由で行われます。JNDIおよびJMSの構成および固有の要件は、接続先のJMSプロバイダによって異なります。詳細は、JMSプロバイダ固有のドキュメントを参照してください。

23.2.3 接続性要件

この項では、JMS XMLデータベースに接続するための要件をリストします。

Oracle Data Integratorには、JMSプロバイダ専用のドライバは含まれていません。このプロバイダの接続性要件は、JMSプロバイダのドキュメントを参照してください。

XML構成

XMLコンテンツへのアクセスは、Oracle Data Integrator JDBC for XMLドライバを介して行われます。このドライバは、Oracle Data Integratorとともにインストールされます。

XMLコンテンツを説明するDTDファイルの場所は、システム管理者に問い合せてください。

23.3 トポロジの設定

トポロジの設定には次が含まれます。

  1. JMS XMLデータ・サーバーの作成

  2. JMS XML物理スキーマの作成

23.3.1 JMS XMLデータ・サーバーの作成

各JMS XMLデータ・サーバーは、ローカル・ネットワーク経由でアクセス可能な1つのJMSプロバイダまたはルーターに対応します。

JMS XMLデータ・サーバーには、JMSキューXMLとJMSトピックXMLの2タイプがあります。

  • JMSキューXMLデータ・サーバーは、JMSルーター内の単一のキューに接続してXMLメッセージを統合するために使用されます。

  • JMSトピックXMLデータ・サーバーは、JMSルーター内の単一のトピックに接続してXMLメッセージを統合するために使用されます。

Oracle Data Integrator JMSドライバにより、XMLコンテンツを含むメッセージがメモリー内のリレーショナル・スキーマにロードされます。このスキーマは、XMLメッセージの階層構造を表し、リレーショナル構造をアンロードしてJMSメッセージに戻すことができます。

23.3.1.1 データ・サーバーの作成

『Oracle Fusion Middleware Oracle Data Integrator開発者ガイド』のデータ・サーバーの作成に関する項に記載されている標準の手順で、JMSキューXMLテクノロジまたはJMSトピックXMLテクノロジ用のデータ・サーバーを作成します。

JMSキューXMLまたはJMSトピックXMLデータ・サーバーの作成手順は、XMLデータ・サーバーの作成手順と同じですが、JNDI接続を定義する際に、「JNDI URL」でJMS XML固有の情報を指定する必要があります。詳細は、5.3.1項「XMLデータ・サーバーの作成」を参照してください。

この項では、JMSキューXMLまたはJMSトピックXMLデータ・サーバーの定義に関する必須または固有のフィールドのみについて説明します。

  1. 「定義」タブ:

    • 名前: Oracle Data Integratorに表示されるデータ・サーバーの名前。

    • ユーザー/パスワード: ここでは使用しません。これらのフィールドは空のままにします。

  2. 「JNDI」タブ:

    • JNDI認証: 認証モードをリストから選択します。

    • JNDIユーザー: JNDIディレクトリに接続するためのユーザー名を入力します(オプション)。

    • パスワード: このユーザーのパスワード(オプション)。

    • JNDIプロトコル: リストから「JNDI」プロトコルを選択します(オプション)。

    • JNDIドライバ: JNDIプロバイダに接続するための初期コンテキスト・ファクトリjavaクラスの名前。次に例を示します。

      com.sun.jndi.ldap.LdapCtxFactory

    • JNDI URL: <JMS_RESOURCE>?d=<DTD_FILE>&s=<SCHEMA>&JMS_DESTINATION=<JMS_DESTINATION_NAME>

      NDI URLのプロパティの説明は、表23-2を参照してください。

    • JNDIリソース: JMSキュー(またはトピック)の接続ファクトリに対応するJNDIリソースの論理名。


      注意:

      メッセージ・キューにアクセスする場合はQueueConnectionFactory、トピックにアクセスする場合はTopicConnectionFactoryを指定します。これらのパラメータはJNDIディレクトリ固有のものです。

      表23-2 JNDI URLのプロパティ

      パラメータ 説明

      d

      <DTDファイルの場所>

      UNC形式で示したDTDファイルの場所(相対パスまたは絶対パス)。パス名にはスラッシュ(/)を使用します。ファイル・パスにはバックスラッシュ(\)を使用しないでください。このパラメータは必須です。

      re

      <ルート要素>

      スキーマのルート表として選択する要素の名前。この値では大/小文字が区別されます。このパラメータは、WSDLファイルの特定のメッセージ定義をリバース・エンジニアリングする場合や、使用可能なルート要素がXSDファイル内に複数存在する場合に使用できます。

      ro

      true | false

      trueの場合は、XMLファイルが読取り専用モードで開きます。

      s

      <スキーマ名>

      XMLファイルのロード先となるリレーショナル・スキーマの名前。この値は、このデータ・サーバーに添付されている物理スキーマの設定値と一致する必要があります。このパラメータは必須です。

      cs

      true | false

      大/小文字を区別するモードまたは区別しないモードで、XMLファイルがロードされます。区別しないモードの場合は、DTDファイル内のすべての要素名を区別できることが必要です(たとえば、同じファイルにAbcとabcを含めることはできません)。大/小文字を区別するパラメータは、スキーマの永続パラメータです。そのため、スキーマの作成後に変更できません。大/小文字を区別しないモードでXMLファイルを開く場合、XMLファイルの大/小文字は保持されます。

      JMSXML_ROWSEPARATOR

      5B23245D

      異なるXMLコンテンツの行セパレータ(改行)として使用される文字列の16進コード。デフォルト値の5B23245Dは、文字列[#$]に相当します。

      JMS_DESTINATION

      JNDIキュー名またはトピック名

      JMSキューまたはトピックのJNDI名。このパラメータは必須です。


LDAPディレクトリをJNDIプロバイダとして使用する場合は、次のパラメータを使用する必要があります。

  • JNDIドライバ: com.sun.jndi.ldap.LdapCtxFactory

  • JNDI URL: ldap://<ldap_host>:<port>/<dn>?d=<DTD_FILE>&s=<SCHEMA>&JMS_DESTINATION=<JMS_DESTINATION_NAME>

  • JNDIリソース: <Name of the connection factory>

23.3.2 JMS XML物理スキーマの作成

『Oracle Fusion Middleware Oracle Data Integrator開発者ガイド』の物理スキーマの作成に関する項に記載されている標準の手順で、JMS XML物理スキーマを作成します。


注意:

スキーマおよび作業スキーマの名前として、JMSキューXMLまたはJMSトピックXMLデータ・サーバーのJNDI URLのs=<schema name>プロパティで定義されたスキーマ名を使用してください。


注意:

各JMS XMLデータ・サーバーに必要な物理スキーマは、1つのみです。

『Oracle Fusion Middleware Oracle Data Integrator開発者ガイド』の論理スキーマの作成に関する項に記載されている標準の手順で、この物理スキーマ用の論理スキーマを作成し、特定のコンテキストで関連付けます。

23.4 統合プロジェクトの設定

JMS XMLを使用してプロジェクトを設定するには、標準の手順に従います。『Oracle Fusion Middleware Oracle Data Integrator開発者ガイド』の統合プロジェクトの作成に関する項を参照してください。

JMS XMLでの作業を開始するにあたり、使用するプロジェクトに次のナレッジ・モジュールをインポートすることをお薦めします。

23.5 JMS XMLモデルの作成およびリバース・エンジニアリング

この項の内容は次のとおりです。

23.5.1 JMS XMLモデルの作成

『Oracle Fusion Middleware Oracle Data Integrator開発者ガイド』のモデルの作成に関する項に記載されている標準の手順で、JMSキューXMLまたはJMSトピックXMLモデルを作成します。

JMSキューXMLまたはJMSトピックXMLの各モデルは一連のデータストアに対応し、各データストアはXMLファイルのエントリ・レベルを表します。これらのモデルには、JMSメッセージの構造を説明するデータストアが含まれます。各モデルには、1つのトピックまたはキューのメッセージ構造が含まれます。このモデルの構造は、標準のリバース・エンジニアリングを使用して、データ・サーバー定義で指定されたDTDまたはXMLファイルからリバース・エンジニアリングされます。

23.5.2 JMS XMLモデルのリバース・エンジニアリング

JMS XMLでは、XMLドライバの機能のみを使用する標準のリバース・エンジニアリングがサポートされています。

JMSキューXMLまたはJMSトピックXMLで標準のリバース・エンジニアリングを実行するには、『Oracle Fusion Middleware Oracle Data Integrator開発者ガイド』のモデルのリバース・エンジニアリングに関する項に記載されている通常の手順を行います。

Oracle Data Integratorにより、XMLデータから生成された表に、次の列が自動的に追加されます。

  • 主キー(PK列): 親子関係に使用されます。

  • 外部キー(FK列): 親子関係に使用されます。

  • 順序識別子(ORDER列): XMLファイルでのデータの表示順序を取得できます。

これらの追加の列により、スキーマに格納されたリレーショナル構造でのXML階層構造のマッピングが可能になります。詳細は、付録B「Oracle Data Integrator Driver for XMLの参照情報」を参照してください。

23.6 インタフェースの設計

インタフェースまたはチェック用に選択したKMによって、このインタフェースまたはチェックの機能およびパフォーマンスが決まります。この項に示す推奨事項は、XMLメッセージに関連する様々な状況でのKMの選択に役立ちます。

23.6.1 JMS XMLソースからのデータのロード

JMS XMLは、インタフェースのソースまたはターゲットとして使用できます。XMLメッセージ・キューまたはトピックのデータは、ステージング領域として使用される任意のANSI SQL-92標準準拠データベースにロードできます。インタフェース・フロー・タブでの、JMS XMLと別のタイプのデータ・サーバー間でデータをロードするためのLKMの選択は、正常なデータ抽出を行うためにきわめて重要です。

Oracle Data Integratorには、JMS準拠メッセージのキューまたはトピックから、ステージング領域として使用される任意のANSI SQL-92標準準拠データベースへデータをロードするための、LKM JMS XML to SQLが用意されています。このLKMは、エージェントを使用してソース・キューまたはトピックから選択されたメッセージを読み取り、動的に作成された一時ステージング表に結果を書き込みます。メッセージを確実に配信するために、メッセージのコンシューマ(またはサブスクライバ)は、IKMによってデータが実際にターゲットに統合されるまで、読取りをコミットしません。ソース・データストアの1つがXMLのJMSメッセージの場合は、このLKMの使用を検討してください。

JMSプロバイダからXMLメッセージをロードするには、次の手順に従う必要があります。

  • JMS XMLソースからXMLメッセージを読み取る最初のインタフェースでLKM JMS XML to SQLを使用し、その際にSYNCHRO_JMS_TO_XML LKMオプションをYesに設定する必要があります。このオプションによって、キューまたはトピックから取得されるメッセージから、XMLスキーマが作成およびロードされます。

  • 最後のインタフェースで、JMS_COMMITをYesに設定して、メッセージの消費をコミットする必要があります。

このナレッジ・モジュールのJMS固有のオプションは、表23-3を参照してください。

23.6.2 JMS XMLターゲットでのデータの統合

Oracle Data Integratorには、JMS XML用に最適化されたデータ統合戦略を実装するIKM SQL to JMS XML Appendが用意されています。このIKMは、任意のANSI SQL-92標準準拠ステージング領域からJMS準拠のメッセージのキューまたはトピックへ、XML形式でデータを統合します。

このIKMを使用するには、ステージング領域がターゲットと異なる必要があります。

JMS XMLターゲットにXMLデータを統合するには、次の手順に従う必要があります。

  • XMLスキーマをロードする最初のインタフェースで、ROOT_TABLE(XMLファイルのルート要素に対応するモデルの表)の値を指定し、さらにINITIALIZE_XML_SCHEMAオプションをYesに設定する必要があります。


    注意:

    XMLスキーマのルート表は、通常、JMS XMLモデルの階層ツリー表示の最上位にあるデータストアに対応します。そのため、ROOT_TABLEパラメータには、このデータストアのリソース名の値を使用する必要があります。

  • インタフェースによるデータストアのロードは、階層の順序に従って、階層の最上位から下位へ行う必要があります。XMLスキーマ階層の最上位より下のレベルをロードするインタフェースでは、現在の階層レベルを上位のレベルとリンクする外部キー列をロードする必要があります。

    たとえば、階層の2番目のレベル(ルート表の下のレベル)をロードする場合、外部キー列を0(ゼロ)に設定する必要があります。これは、ルート表の初期化時にIKMによってルート表の主キーに設定される値が0であるためです。

  • 最後のインタフェースでは、XMLスキーマをJMSプロバイダに送信する必要があります。そのために、SYNCHRO_JMS_TO_XMLパラメータをYesに設定します。

XMLファイル形式によって次のデータストア階層のスキーマが生成されるとします。

+ GEOGRAPHY_DIM (GEO_DIMPK, ...)
  |
  +--- COUNTRY (GEO_DIMFK, COUNTRYPK, COUNTRY_NAME, ...)
       |
       +--- REGION (COUNTRYFK, REGIONPK, REGION_NAME, ...)

この階層では、GEOGRAPHY_DIMがルート表で、そのGEOGRAPHY_DIMPK列が初期化時に0に設定されます。この表は、GEOGRAPHY_DIM、COUNTRY、REGIONの順にロードする必要があります。

  • XML階層の2番目のレベル(COUNTRY)のロード時に、このレベルをルート表のレベルとリンクするFKフィールドが0に設定されていることを確認します。上のモデルでは、COUNTRYのロード時に、0に設定されているCOUNTRY.GEOGRAPHY_DIMFKをロードする必要があります。

  • また、REGIONのレコードをCOUNTRYレベルにリンクする必要があります。そのためには、COUNTRY内の親レコードに対応する値を指定して(REGION.COUNTRYFK = COUNTRY.COUNTRYPK)、REGION.COUNTRYFK列をロードします。

XMLスキーマへのデータのロードの詳細は、付録B「Oracle Data Integrator Driver for XMLの参照情報」を参照してください。

このIKMのJMS固有のKMオプションは、表23-3を参照してください。XMLメッセージ固有のオプションは太字で表記されています。

JMS XMLナレッジ・モジュール・オプション

JMS XMLのLKMおよびIKMのKMオプションは、表23-3を参照してください。XMLメッセージ固有のオプションは太字で表記されています。

ほとんどのオプションはLKMとIKMで同じですが、次の点のみ異なります。

  • INITIALIZE_XML_SCHEMAおよびROOT_TABLEオプションは、IKMのみで使用できます。

  • DELETE_TEMPORARY_OBJECTSおよびJMS_COMMITオプションは、LKMのみで使用できます。

  • ルーター(JMS XML)上でメッセージ消費をコミットするには、JMS_COMMITをYesに設定します。

表23-3 JMS固有のKMオプション

オプション 用途 説明

CLIENTID

読取り

サブスクライバ識別文字列。

公開には使用されません。

DURABLE

読取り

D: セッションは永続的です。切断後もサブスクライバ定義がルーター上に残ることを示します。

INITIALIZE_XML_SCHEMA

書込み

空のXMLスキーマを初期化します。スキーマをロードする最初のインタフェースで、このオプションをYESに設定する必要があります。

JMSDELIVERYMODE

書込み

JMS配信モード(1: 非永続、2: 永続)。永続メッセージはサーバーに残り、サーバーのクラッシュ時にリカバリされます。

JMSEXPIRATION

書込み

サーバー上でのメッセージの有効期限をミリ秒で指定します(0〜4 000 000 000)。0の場合、メッセージの有効期限が切れることはありません。

警告: この有効期限を過ぎると、メッセージは期限切れとみなされ、トピックまたはキューからなくなります。インタフェースの開発時には、このパラメータをゼロに設定することをお薦めします。

JMSPRIORITY

書込み

メッセージの相対的優先度: 0(最低)〜9(最高)。

JMSTYPE

書込み

メッセージの名前(オプション)。

MESSAGEMAXNUMBER

読取り

取得されるメッセージの最大数(0〜4 000 000 000)。0: すべてのメッセージが取得されます。

MESSAGESELECTOR

読取り

ルーター上でフィルタ処理するための、ISO SQL構文のメッセージ・セレクタ。メッセージ・セレクタの詳細は、22.7.1項「JMSプロパティの使用」を参照してください。

MESSAGETIMEOUT

読取り

最初のメッセージの待機時間をミリ秒で示します(0〜4 000 000 000)。MESSAGETIMEOUTが0の場合、タイムアウトは発生しません。

MESSAGETIMEOUTおよびMESSAGEMAXNUMBERの両方をゼロにすることはできません。MESSAGETIMEOUT= 0MESSAGEMAXNUMBER =0の場合、MESSAGETIMEOUTの値として1が使用されます。

警告: このタイムアウト値が小さすぎると、インタフェースによってメッセージが取得されない可能性があります。

NEXTMESSAGETIMEOUT

読取り

後続の各メッセージの待機時間をミリ秒で示します(0〜4 000 000 000)。デフォルト値は1000です。

警告: この値が小さすぎると、トピックまたはキューにあるメッセージの一部分しか取得されない可能性があります。

ROOT_TABLE

書込み

XMLモデル階層のルートであるデータストアのリソース名。

SENDMESSAGETYPE

書込み

送信するメッセージのタイプ(1: BytesMessage、2: TextMessage)。

SYNCHRO_XML_TO_JMS

書込み

XMLスキーマからXMLメッセージを生成し、このメッセージを送信します。スキーマXMLへの書込みを行う最後のインタフェースで、このオプションをYESに設定する必要があります。