Oracle® Fusion Middleware Oracle Data Integrator接続およびナレッジ・モジュール・ガイド 12c (12.2.1.2.0) E82656-01 |
|
前 |
次 |
この章では、XMLペイロードを使用するJava Message Services (JMS)のOracle Data Integratorでの使用方法について説明します。
この章には次の項が含まれます:
Oracle Data Integratorには、JMS宛先を統合するための、単純で透過的な方法が用意されています。この章では、XMLペイロードを使用するJMSメッセージの処理について説明します。バッチ・モードでのテキスト・ペイロードの処理の説明は、第20章「JMS」を参照してください。
JMS XMLナレッジ・モジュールは、最も一般的なJMS準拠のミドルウェア(Oracle Service Bus、Sonic MQなど)に適用されます。これらのほとんどのナレッジ・モジュールには、メッセージを確実に配信するためのトランザクション処理が含まれます。
JMSメッセージの構造の詳細は、21.1.1.1項「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メッセージの処理は、パッケージ単位で次のように実行されます。
JMSメッセージとXMLスキーマの同期化: この操作では、メッセージの読取りおよびXMLスキーマの生成が行われます。通常、メッセージに最初にアクセスするマッピングによって実行されます。
データの抽出: 一連のマッピングにより、XMLスキーマのデータストアがソースとして使用されます。このデータを使用できるのは、セッションの終了、新規の同期化アクションによる別のメッセージの読取り、またはJMS読取りのコミットの実行が発生するまでです。
JMS読取りのコミット: この操作では、メッセージ消費の検証およびXMLスキーマの削除が行われます。XMLメッセージからデータを抽出する最後のマッピングで実行する必要があります。
XMLメッセージの生成
XMLメッセージを生成するには、パッケージが次のタスクを実行できるように設計されている必要があります。
XMLスキーマの初期化: この操作では、生成するXMLメッセージに対応する空のXMLスキーマが作成されます。この操作は、通常、構造をロードする最初のマッピングで実行されます。
データのロード: 一連のマッピングによって、XMLスキーマにデータがロードされます。
XMLスキーマとJMSの同期化: この操作では、XMLスキーマがXMLメッセージに変換され、JMS宛先に送信されます。この操作は、通常、スキーマをロードする最後のマッピングで実行されます。
メッセージのフィルタリング
サーバー上のメッセージをフィルタ処理するためのメッセージ・セレクタ(MESSAGE_SELECTOR KMオプション)を定義することで、JMS XML宛先のメッセージをフィルタ処理できます。このタイプのフィルタでは、メッセージのプロパティまたはヘッダー・フィールドのみを使用できます。フィルタはサーバーによって処理されるため、Data Integratorで読み取られる情報量が削減されます。XMLスキーマから抽出されたデータを使用して、マッピングでデータをフィルタ処理することもできます。これらのフィルタは、メッセージがXMLスキーマと同期化された後、Data Integratorで処理されます。
JMSナレッジ・モジュールの使用を開始する前に、この項の情報を必ず読んでください。
インストールを実行する前に、システム要件および動作要件のドキュメントを読んで、使用する環境がインストールする製品の最低インストール要件を満たすことを確認する必要があります。
サポートされているプラットフォームおよびバージョンのリストには、次のOracle Technical Network (OTN)からアクセスできます。
http://www.oracle.com/technology/products/oracle-data-integrator/index.html
JMS宛先へのアクセスは、通常、JNDIサービス経由で行われます。JNDIおよびJMSの構成および固有の要件は、接続先のJMSプロバイダによって異なります。詳細は、JMSプロバイダ固有のドキュメントを参照してください。
注意: デフォルトでは、JMS XMLドライバ読取り操作の固定レコード・セパレータとして、4つの連続する';'が使用されます。XMLデータにも4つ以上の連続する';'文字が含まれている場合は、エラーが発生するため、レコード・セパレータを別の値に設定する必要があります。これを行うには、Doracle.odi.jmsxmlColSepString JVMオプションを使用します。たとえば、Doracle.odi.jmsxmlColSepString="????" を指定すると、JMS XMLドライバ・レコード・セパレータが";;;;"ではなく"????"に設定されます。
このオプションは、次の場所で設定する必要があります。
|
この項では、JMS XMLデータベースに接続するための要件をリストします。
Oracle Data Integratorには、JMSプロバイダ専用のドライバは含まれていません。このプロバイダの接続性要件は、JMSプロバイダのドキュメントを参照してください。
XML構成
XMLコンテンツへのアクセスは、Oracle Data Integrator JDBC for XMLドライバを介して行われます。このドライバは、Oracle Data Integratorとともにインストールされます。
XMLコンテンツを説明するDTDファイルの場所は、システム管理者に問い合せてください。
トポロジの設定には次が含まれます。
各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メッセージに戻すことができます。
『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データ・サーバーの定義に関する必須または固有のフィールドのみについて説明します。
「定義」タブ:
名前: Oracle Data Integratorに表示されるデータ・サーバーの名前。
ユーザー/パスワード: ここでは使用しません。これらのフィールドは空のままにします。
「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>
JNDI URLのプロパティの説明は、表21-2を参照してください。
JNDIリソース: JMSキュー(またはトピック)の接続ファクトリに対応するJNDIリソースの論理名。
注意: メッセージ・キューにアクセスする場合はQueueConnectionFactory 、トピックにアクセスする場合はTopicConnectionFactoryを指定します。これらのパラメータはJNDIディレクトリ固有のものです。 |
表21-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名。このパラメータは必須です。 |
transform_nonasciiまたはtna |
ブール値(true|false) |
非ASCIIを変換します。非ASCII文字を保持するにはfalseに設定します。デフォルトはtrueです。このパラメータは必須ではありません。 |
例
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>
『Oracle Data Integratorの管理』の物理スキーマの作成に関する項の説明に従って、標準の手順を使用してJMS XML物理スキーマを作成します。
注意: スキーマおよび作業スキーマの名前として、JMSキューXMLまたはJMSトピックXMLデータ・サーバーのJNDI URLのs=<schema name> プロパティで定義されたスキーマ名を使用してください。 |
注意: 各JMS XMLデータ・サーバーに必要な物理スキーマは、1つのみです。 |
『Oracle Data Integratorの管理』の論理スキーマの作成に関する項の説明に従って、標準の手順を使用してこの物理スキーマ用の論理スキーマを作成し、特定のコンテキストで関連付けます。
JMS XMLを使用してプロジェクトを設定するには、標準の手順に従います。『Oracle Fusion Middleware Oracle Data Integrator開発者ガイド』の統合プロジェクトの作成に関する項を参照してください。
JMS XMLでの作業を開始するにあたり、使用するプロジェクトに次のナレッジ・モジュールをインポートすることをお薦めします。
IKM SQL to JMS XML Append
LKM JMS XML to SQL
この項には次のトピックが含まれます:
『Oracle Fusion Middleware Oracle Data Integrator開発者ガイド』のモデルの作成に関する項に記載されている標準の手順で、JMSキューXMLまたはJMSトピックXMLモデルを作成します。
JMSキューXMLまたはJMSトピックXMLの各モデルは一連のデータストアに対応し、各データストアはXMLファイルのエントリ・レベルを表します。これらのモデルには、JMSメッセージの構造を説明するデータストアが含まれます。各モデルには、1つのトピックまたはキューのメッセージ構造が含まれます。このモデルの構造は、標準のリバース・エンジニアリングを使用して、データ・サーバー定義で指定されたDTDまたは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の参照情報」を参照してください。
マッピングまたはチェック用に選択したKMによって、このマッピングまたはチェックの機能およびパフォーマンスが決まります。この項に示す推奨事項は、XMLメッセージに関連する様々な状況でのKMの選択に役立ちます。
JMS XMLをマッピングのソースまたはターゲットとして使用できます。XMLメッセージ・キューまたはトピックのデータは、ステージング領域として使用される任意のANSI SQL-92標準準拠データベースにロードできます。マッピング・フロー・タブでの、JMS XMLと別のタイプのデータ・サーバー間でデータをロードするためのLKMの選択は、正常なデータ抽出を行うためにきわめて重要です。
Oracle Data Integratorには、JMS準拠メッセージのキューまたはトピックから、ステージング領域として使用される任意のANSI SQL-92標準準拠データベースにXMLでデータをロードするための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固有のオプションは、表21-3を参照してください。
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オプションは、表21-3を参照してください。XMLメッセージ固有のオプションは太字で表記されています。
JMS XMLナレッジ・モジュール・オプション
JMS XMLのLKMおよびIKMのKMオプションは、表21-3を参照してください。XMLメッセージ固有のオプションは太字で表記されています。
ほとんどのオプションはLKMとIKMで同じですが、次の点のみ異なります。
INITIALIZE_XML_SCHEMAおよびROOT_TABLEオプションは、IKMのみで使用できます。
DELETE_TEMPORARY_OBJECTSおよびJMS_COMMITオプションは、LKMのみで使用できます。
ルーター(JMS XML)上でメッセージ消費をコミットするには、JMS_COMMITをYes
に設定します。
表21-3 JMS固有のKMオプション
オプション | 用途 | 説明 |
---|---|---|
CLIENTID |
読取り |
サブスクライバ識別文字列。 公開には使用されません。 |
DURABLE |
読取り |
D: セッションは永続的です。切断後もサブスクライバ定義がルーター上に残ることを示します。 |
INITIALIZE_XML_SCHEMA |
書込み |
空のXMLスキーマを初期化します。スキーマをロードする最初のマッピングで、このオプションを |
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構文のメッセージ・セレクタ。メッセージ・セレクタの詳細は、20.7.1項「JMSプロパティの使用」を参照してください。 |
MESSAGETIMEOUT |
読取り |
最初のメッセージの待機時間をミリ秒で示します(0から4 000 000 000)。MESSAGETIMEOUTが0の場合、タイムアウトは発生しません。 MESSAGETIMEOUTおよびMESSAGEMAXNUMBERの両方をゼロにすることはできません。 警告: このタイムアウト値が小さすぎると、マッピングによってメッセージが取得されない可能性があります。 |
NEXTMESSAGETIMEOUT |
読取り |
後続の各メッセージの待機時間をミリ秒で示します(0から4 000 000 000)。デフォルト値は1000です。 警告: この値が小さすぎると、マッピングによってトピックまたはキューにあるメッセージの一部のみが取得される場合があります。 |
ROOT_TABLE |
書込み |
XMLモデル階層のルートであるデータストアのリソース名。スキーマの最初のマッピング・ロードにのみ適用できるオプション(INITIALIZE_XML_SCHEMA=true)。ROOT_TABLE<>''およびINITIALIZE_XML_SCHEMA=trueの場合、IKMによってXMLスキーマのルート要素のレコードが挿入されます。 警告: XML構造のルート表への移入を行うマッピングがない場合にのみ使用してください。そうでない場合、重複するルート要素が発生します。 |
SENDMESSAGETYPE |
書込み |
送信するメッセージのタイプ(1 - BytesMessage、2 - TextMessage)。 |
SYNCHRO_XML_TO_JMS |
書込み |
XMLスキーマからXMLメッセージを生成し、このメッセージを送信します。スキーマXMLへの書込みを行う最後のマッピングで、このオプションを |