ヘッダーをスキップ
Oracle Fusion Middleware Oracle SOA Suite開発者ガイド
11g リリース1(11.1.1)
B56238-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

33 Oracle BAMエンタープライズ・メッセージ・ソースの作成

この章では、Oracle BAMアーキテクト・アプリケーションによるエンタープライズ・メッセージ・ソース(EMS)の作成に必要な情報について説明します。

項目は次のとおりです。

33.1 エンタープライズ・メッセージ・ソースの概要

エンタープライズ・メッセージ・ソース(EMS)は、Java Message Service(JMS)をOracle BAMサーバーに直接接続するアプリケーションで使用されます。JMSは、アプリケーション・コンポーネント間でデータを受け渡し、異種およびレガシー環境間でのビジネス統合を可能にするための標準メッセージングAPIです。

EMSは、抽出、変換およびロード(ETL)シナリオを構成せず、かわりにメッセージからOracle BAMサーバー上のデータ・オブジェクトに直接マップされます。ただし、XMLスタイルシート言語(XSL)はこれらの間でトランスフォーメーションを実行するために継続して使用できます。 各EMSは特定のJMSトピックまたはキューに接続され、その情報はOracle BAMアクティブ・データ・キャッシュのデータ・オブジェクトに配信されます。 Oracle BAMアーキテクトWebアプリケーションを使用して、EMS定義を設定します。

次のJMSプロバイダがサポートされています。

次のメッセージ・タイプがサポートされています。

次のXMLフォーマット・オプションがテキスト・メッセージ・トランスフォーメーションでサポートされています。

既存のEMS定義を表示するには、Oracle BAMアーキテクトの機能リストから「エンタープライズ・メッセージ・ソース」を選択します。

図33-1 Oracle BAMアーキテクトの機能リスト

アーキテクトの機能リスト
「図33-1 Oracle BAMアーキテクトの機能リスト」の説明

33.2 エンタープライズ・メッセージ・ソースの作成

EMSを定義する場合は、受信するメッセージ内のすべてのフィールドを指定します。可変数のユーザー定義フィールドを持つメッセージ・システムもあれば、固定数のフィールドを持つシステムもあります。

任意の文字列タイプ・フィールドに対して、そのフィールドにフォーマットを適用し、フィールドの内容を分離された個別のフィールドに分けることができます。これは、ユーザー定義のフィールドを作成できないため、メッセージ本文全体が1つの大きなフィールドとして受信されるメッセージ・システムで役立ちます。フォーマット仕様を使用すると、XMLツリー内の場所のパスを指定した後、属性またはタグをフィールドとして抽出できます。

EMSを定義する前に、Oracle BAMアーキテクトでメッセージ・ソース接続の詳細を指定できるように、メッセージを提供するサード・パーティ・アプリケーションについて理解しておく必要があります。 さらに、(キュー/トピックをホストしている)JMSサーバーは、Oracle BAMサーバーをホストしているシステムとは別のシステムで構成可能であることに注意してください (Oracle Advanced Queuing(AQ)の場合は、データベースでJMSサーバーをホストするためOracle BAMと同じサーバーでホストできますが、他の場合は別のシステムでJMSサーバーをホストすることをお薦めします)。

33.2.1 エンタープライズ・メッセージ・ソースの作成方法

EMSを定義する手順は、次のとおりです。

  1. Oracle BAMアーキテクトの機能リストから「エンタープライズ・メッセージ・ソース」を選択します(図33-1を参照)。

  2. 「作成」をクリックします。

    bam_ar_ems_create.gifの説明は次にあります。
    図bam_ar_ems_create.gifの説明

  3. 表33-1を参考にして、各フィールドに適切な値を入力します。示されている例は、Messaging for Oracle WebLogic Serverに接続する場合の例です。

    bam_ar_ems_form.gifの説明は次にあります。
    図bam_ar_ems_form.gifの説明

  4. 「TextMessage」タイプを使用している場合は、表33-2を参考にして、「XMLフォーマット」セクションに適切なパラメータを設定します。

    bam_ar_ems_xmlform.gifの説明は次にあります。
    図bam_ar_ems_xmlform.gifの説明

  5. 「ソース値フォーマット」セクションの「日時仕様」の構成方法は、第33.2.2項「日時仕様の構成方法」を参照してください。

    「日時仕様」が無効な(選択されていない)場合、入力値の書式はxsd:dateFormatである必要があります。 つまり、「日時仕様」が構成されていない場合は、xsd:dateFormat([-]CCYY-MM-DDThh:mm:ss[Z|(+|-)hh:mm])がデフォルト書式です。

    次に、xsd:dateTimeの有効な値パターンの例を示します。

    • 2001-10-26T21:32:52

    • 2001-10-26T21:32:52+02:00

    • 2001-10-26T19:32:52Z

    • 2001-10-26T19:32:52+00:00

    • -2001-10-26T21:32:52

    • 2001-10-26T21:32:52.12679

  6. ソースからデータ・オブジェクトへのフィールド・マッピングのセクションで、ソース・メッセージのフィールドを、選択したデータ・オブジェクトにマップします。

    bam_ar_ems_map.gifの説明は次にあります。
    図bam_ar_ems_map.gifの説明

    1. 「追加」をクリックし、マップしたフィールドを追加します。

    2. フィールドがキーの場合は、「キー」チェック・ボックスを選択します。

    3. 「タグ/属性名」フィールドに、ソース・タグまたは属性名を入力します。

    4. 「データ・オブジェクト・フィールド」リストからターゲットのデータ・オブジェクト・フィールドを選択します。

  7. 「保存」をクリックして、EMSを保存します。

表33-1 EMS構成パラメータ

パラメータ 説明

名前

Oracle BAMアーキテクトのEMSリストに表示される、一意の表示名。

初期コンテキスト・ファクトリ

特定のJMSコネクション・ファクトリまたは宛先の検索に使用される、初期コンテキスト・ファクトリ。次に例を示します。

weblogic.jndi.WLInitialContextFactory

JNDIサービス・プロバイダURL

サービス・プロバイダが使用する構成情報。javax.naming.Context.PROVIDER_URLプロパティを設定するために使用され、initialContext()に対する引数として渡されます。不適切なプロバイダのURLが最も一般的なエラーの原因です。次に例を示します。

t3://localhost:7001

トピック/キューConnectionFactory名

以前に作成されたJMSコネクション・ファクトリのJNDIルックアップで使用される名前。次に例を示します。

jms/QueueConnectionFactory

トピック/キュー名

以前に作成されたJMSトピックまたはキューのJNDIルックアップで使用される名前。次に例を示します。

jms/demoQueue

jms/demoTopic

JNDIユーザー名

JNDIサービス呼出し元を認証する本人の本人証明。このユーザーにはRMIログイン許可が必要です。

javax.naming.Context.SECURITY_PRINCIPLALを設定するために使用され、initialContext()に渡されます。

JNDIパスワード

JNDIサービス呼出し元を認証する本人の本人証明。

javax.naming.Context.SECURITY_CREDENTIALSを設定するために使用され、initialContext()に渡されます。

JMSメッセージ・タイプ

TextMessageまたはMapMessage。

TextMessageを選択した場合は、XMLを使用してペイロードの内容を指定し、XMLフォーマット構成パラメータの追加セットを完成する必要があります。 詳細は、表33-2を参照してください。

永続サブスクライバ名

サブスクライバの名前を入力します。例: BAMFilteredSubscription。永続サブスクライバ名は、イベント・パブリッシャのサブスクライバ名プロパティ(指定されている場合)と一致する必要があります。

永続サブスクリプションを使用すると、サブスクライバがアクティブでない間にトピックについてパブリッシュされたメッセージを保持できます。 これによって、Oracle BAMをJMSプロバイダから一定期間切断した状態にし、後でそのプロバイダに再接続して、切断していた期間中にパブリッシュされたメッセージを処理できます。

メッセージ・セレクタ(オプション)

アプリケーション固有の基準を使用するかわりに、JMSプロバイダによるメッセージの選択またはフィルタリングを可能にする、単一の名前と値のペア(現在は、名前と値の1つのペアのみサポート)。このパラメータを設定すると、アプリケーションが定義したメッセージ・プロパティ値は、メッセージ受信用に指定された基準に一致する必要があります。メッセージ・プロパティ値を設定するには、メッセージ・インタフェースのstringProperty()を使用します。

データ・オブジェクト名

メッセージ・データを格納しておくOracle BAMのデータ・オブジェクト。 EMSごとに1つのデータ・オブジェクトのみ操作可能です。データ・オブジェクトに「参照」列を含めることができます。

「参照」をクリックして、データ・オブジェクトを選択します。

操作

リストから次の操作を選択します。

挿入: すべての新しいデータを新しい行として挿入

アップサート: データを既存の行にマージ

更新: 既存の行を更新

削除: データ・オブジェクトから行を削除

バッチング

EMSが、バッチ処理対応のOracle BAMアクティブ・データ・キャッシュAPIと通信するかどうかを指定します。 バッチ処理を使用すると、複数のメッセージを単一のテキスト・メッセージで挿入できます。バッチ処理が無効(デフォルトの状態)な場合、JMSから読み取られた各行は、行バッチの一部ではなく、個別の単位としてアクティブ・データ・キャッシュに送信されます。

バッチ処理プロパティは構成ファイルに格納されます。 詳細は、『Oracle Fusion Middleware Oracle SOA Suite管理者ガイド』を参照してください。

トランザクション

トランザクションを有効にすると、バッチ処理が有効な場合に、操作がアトミックになります(バッチ処理を使用すると、複数のメッセージを単一のテキスト・メッセージで挿入できます)。

トランザクション自体はアクティブ・データ・キャッシュのバッチ処理に影響を与えませんが、「トランザクション」をtrueに設定することで、メッセージ・バッチング(多数のメッセージを単一のバッチで処理する場合)のすべてのメッセージがアトミック操作の一部になります。 表33-2の「メッセージ・バッチング」を参照してください。

BAMサーバーの起動時に起動

EMSが、Oracle BAMサーバーの起動(または再起動)後すぐにメッセージを読み取り、アクティブ・データ・キャッシュに送信するかどうかを指定します。

JMSユーザー名(オプション)

JMSパスワード(オプション)

コネクション・ファクトリで新しいJMSコネクションが作成されたときに、この情報をオプションとして提供できます。アプリケーション管理またはコンテナ管理された認証用JMSプロバイダへの接続を認証するために使用します。


表33-2 EMS XMLフォーマット構成パラメータ

パラメータ 説明

事前処理

XSLトランスフォーメーションは、メッセージ取得および列のマッピングが行われる前に、受信テキスト・メッセージに適用できます。 詳細は、第33.2.3項「拡張XMLフォーマットの使用方法」を参照してください。

XML名は修飾できます。 修飾されている場合は、「修飾されたネームスペース」ボックスを選択し、フィールドにネームスペースURIを入力します。

メッセージ要素名

サブ要素または属性に列の値を含む親要素です。

XML名は修飾できます。 修飾されている場合は、「修飾されたネームスペース」ボックスを選択し、フィールドにネームスペースURIを入力します。

メッセージ・バッチング

複数のメッセージを1つのJMSメッセージにまとめることができます。この場合は、ラッパー要素を「バッチ要素名」にコンテナ要素として指定する必要があります。

修飾されている場合は、「修飾されたネームスペース」ボックスを選択し、フィールドにネームスペースURIを入力します。

列値

列値はXMLペイロードの要素または属性を使用して提供できます。 ペイロードにどの列値タイプが提供されるか指定します。


33.2.2 日時仕様の構成方法

日時仕様を構成する手順は、次のとおりです。

  1. 図33-2に示すように、「日時仕様」チェック・ボックスを選択します。

  2. 「パターン」フィールドに、日時パターンを入力します。

    Java SimpleDateFormatに準拠した有効な日時パターンを入力する必要があります。 表33-3でSimpleDateFormatの構文要素を示し、表33-4でいくつか例を示します。

  3. オプションで、「言語」「国」および「変数」の各フィールドにロケール情報を入力できます。

図33-2 EMS構成の「ソース値フォーマット」セクション

図33-2の説明は次にあります。
「図33-2 EMS構成の「ソース値フォーマット」セクション」の説明

表33-3 SimpleDateFormatの構文要素

記号 意味 表示

G

時代

テキスト

AD

y

数値

2003

M

テキストまたは数値

July、Jul、07

w

年内の週数(1〜53)

数値

27

W

月内の週数(1〜5)

数値

2

D

年内の日数(1〜365または1〜364)

数値

189

d

月内の日数

数値

10

F

月内の週数(1〜5)

数値

2

E

週内の曜日

テキスト

Tuesday、Tue

a

AM/PMマーカー

テキスト

AM

H

時間(0〜23)

数値

0

k

時間(1〜24)

数値

24

K

時間(0〜11 AM/PM)

数値

0

h

時間(1〜12 AM/PM)

数値

12

m

時間内の分数

数値

30

s

分内の秒数

数値

55

S

ミリ秒(0〜999)

数値

978

z

タイムゾーン

汎用タイムゾーン

太平洋標準時、PST、GMT-08:00

Z

タイムゾーン

RFC 822タイムゾーン

-0800

'


テキスト用のエスケープ

デリミタ

MMM ''01→Jul '01


表33-4の例は、日時パターンが米国のロケールでどのように解釈されるかを示しています。すべての例で使用されている日時は、アメリカ太平洋標準時タイムゾーンの2001-07-04 12:08:56ローカル時間です。

表33-4 日時パターンの例

日時パターン 結果

"yyyy.MM.dd G 'at' HH:mm:ss z"

2001.07.04 AD at 12:08:56 PDT

"EEE, MMM d, '' yy"

Wed, Jul 4, '01

"h:mm a"

12:08 PM

"hh 'o''clock' a, zzzz"

12 o'clock PM, 太平洋夏時間

"K:mm a, z"

0:08 PM, PDT

"yyyyy.MMMMM.dd GGG hh:mm aaa"

02001.July.04 AD 12:08 PM

"EEE, d MMM yyyy HH:mm:ss Z"

Wed, 4 Jul 2001 12:08:56 -0700

"yyMMddHHmmssZ"

010704120856-0700

"yyyy-MM-dd'T'HH:mm:ss.SSSZ"

2001-07-04T12:08:56.235-0700


33.2.3 拡張XMLフォーマットの使用方法

拡張フォーマット・オプションを使用すると、EMSでは、メッセージ内のフォーマットされた各フィールドにユーザーが指定したXSLトランスフォーメーション(XSLT)を含めることができます。

XSLTは、次の目的で使用されます。

  • 階層データの処理。データ・フローでは、階層データは処理されません。 XSLTでは、受信したXMLを、繰返しフィールドが含まれた単一のレコードにフラット化できます。

  • 単一のキュー内に複数のタイプのメッセージが含まれているメッセージ・キューの処理。データ・フローでは、Message Receiverからのすべてのレコードは同じスキーマのものである必要があります。 EMS出力は、受信するメッセージ・スキーマの結合スーパーセットとして定義できます。また、XSLトランスフォーメーションによって、各メッセージ・タイプを識別して、必要に応じてこのスーパーセット・スキーマにマップできます。

  • データは階層では表されていないが、必要なデータが複数のレベルで含まれているXMLの処理。EMSフォーマットでは、XMLの1つのレベルのみから読取りを行うことができます。XSLトランスフォーメーションによって、入力XML内の様々なレベルで必要なデータを識別し、すべてのデータが1つのレベルで結合される新しいXMLにすべてを出力できます。

XSLトランスフォーメーションを指定する手順は、次のとおりです。

  1. 定義中または編集中のEMSで、「XMLフォーマット」セクションの「事前処理」を選択します。

    bam_ar_ems_advanced.gifの説明は次にあります。
    図bam_ar_ems_advanced.gifの説明

  2. 「拡張フォーマット・オプション」をクリックします。

    「拡張フォーマット」ダイアログ・ボックスが表示されます。

  3. このフィールドにXML変換用のXSLマークアップを入力するか、または貼り付けます。 別の編集ツールでXSLマークアップを記述した後で、このダイアログ・ボックスにそのコードをコピーして貼り付けることができます。

  4. 「変換するサンプルXML」フィールドに、変換をテストするためのサンプルXMLを入力します。 サンプルXMLは、このダイアログ・ボックスには保存されません。このダイアログ・ボックスを閉じて開くと、サンプルXMLは表示されなくなります。

  5. 「変換構文の確認」をクリックしてXSL構文を確認します。

  6. 「サンプルXMLのテスト変換」をクリックして変換をテストします。

    結果は、リンクの下のフィールドに表示されます。XSL構文内、サンプルXML構文内または変換時にエラーが検出された場合は、このフィールドにエラー・テキストが表示されます。

33.3 外部JMSプロバイダの使用

Oracle WebLogic Serverでは、Oracle WebLogic Server以外の(外部)JMSプロバイダと、Oracle WebLogic ServerにデプロイされているOracle BAMなどのアプリケーションとの統合がサポートされています。 外部JMSプロバイダには、独自のJMSクライアントとJava Naming and Directory Interface(JNDI)クライアントAPIがあります。これらの依存性を識別してOracle WebLogic ServerでこれらのAPIを使用可能にするためにいくつかの構成を実行して、リモート・プロバイダでホストされているJMSリソースを、Oracle WebLogic Serverにデプロイされているアプリケーションで参照できるようにする必要があります。

詳細は、『Oracle Fusion Middleware Configuring and Managing JMS for Oracle WebLogic Server』のサード・パーティJMSプロバイダにアクセスするための外部サーバー・リソースの構成に関する項を参照してください。

「ユースケース: Oracle Streams AQ JMSプロバイダに対するEMSの作成」第33.4.3項「外部JMSサーバーの作成」で、詳細な例を示します。

高レベルの構成手順は、次のとおりです。

  1. 外部プロバイダのJMSおよびJNDIクライアント・ライブラリを、Oracle WebLogic Serverにデプロイされているアプリケーションで使用できるようにします。

    外部プロバイダのJMSおよびJNDIクライアントのJavaアーカイブ(JAR)ファイルを識別し、これらのファイルをDOMAIN_HOME/libディレクトリに格納します。

  2. Oracle WebLogic Server管理コンソールを使用して外部サーバーを作成します。

    Oracle WebLogic Server管理コンソールの「JMSモジュール」に移動し、新規モジュールを作成します。

    このモジュール内で、「新規」をクリックし、「外部サーバー」を選択し、すべてのページの指示に従って新規外部サーバーを作成します。

    外部サーバー定義に対するリモート・プロバイダの適切なJNDIプロパティを指定します。

  3. JMSサーバーのJMSリソース(つまり、コネクション・ファクトリと宛先)を作成します。

    「外部サーバー」リンク内で、「宛先」タブを選択して、次に対するリンクを作成します。

    • リモート・コネクション・ファクトリ

    • リモート宛先(キュー/トピック)

    これらの宛先に対して構成したローカルJNDI名は、EMSの構成時に、これらの宛先からのメッセージを消費するために使用する必要があります。

  4. Oracle BAMアーキテクトでEMS定義を構成して、外部宛先からのメッセージを消費するようにします。

    外部プロバイダでホストされているJMSリソースへのアクセスの全体プロセスは、Oracle BAMサーバーには透過的です。 前述の手順に正しく従うと、外部JMSプロバイダからのリモート宛先がローカルWLサーバーのJNDIツリー上に公開され、サーバーにデプロイされているアプリケーション(Oracle BAM EMSなど)で、他の関連付けられているOracle WebLogic Server JMSリソースと同様にそれらを参照できます。 Oracle WebLogic Serverは、実行時に適切な外部JMSプロバイダとの通信を処理します。

33.4 ユースケース: Oracle Streams AQ JMSプロバイダに対するEMSの作成

次の手順で、Oracle WebLogic ServerでOracle Streams AQ JMSプロバイダ(AQ-JMS)を構成し、Oracle BAMアーキテクトでEMS定義を構成します。

  1. AQ-JMSでのJMSトピックの作成

  2. Oracle WebLogic Serverでのデータ・ソースの作成

  3. 外部JMSサーバーの作成

  4. Oracle BAMアーキテクトでのEMSの定義

  5. SQL表のレコードの挿入と更新

33.4.1 AQ-JMSでのJMSトピックの作成

SQLplusコマンド・プロンプトを開き、次の手順を実行します。

  1. sysdbaでログインします。

    sqlplus sys as sysdba
    
  2. プロンプトが表示された場合は、システムDBAアカウントのパスワードを入力します。

  3. 次に示すスクリプトを次の順序で作成し、実行します(スクリプトの内容は例33-1例33-2および例33-3を参照)。

    @<SCRIPT_PATH>/usertabletopiccreation.sql
    @<SCRIPT_PATH>/createtable.sql
    @<SCRIPT_PATH>/createtrigger.sql
    

    スクリプトにより、次の処理が実行されます。

    1. ユーザーMyChannelDemoUserの下に新規スキーマを作成します。

    2. AQ-JMSにJMSトピックを作成します。

    3. EMPという名前のSQL表を作成します。

    4. EMPの挿入/更新時に、メッセージをAQ-JMSトピックにパブリッシュするトリガーを作成します。

例33-1 usertabletopiccreation.sqlの内容

DROP USER MyChannelDemoUser CASCADE;

GRANT connect, resource,AQ_ADMINISTRATOR_ROLE TO MyChannelDemoUser IDENTIFIED BY
 MyChannelDemoPassword;
GRANT execute ON sys.dbms_aqadm TO MyChannelDemoUser;
GRANT execute ON sys.dbms_aq    TO MyChannelDemoUser;
GRANT execute ON sys.dbms_aqin  TO MyChannelDemoUser;
GRANT execute ON sys.dbms_aqjms TO MyChannelDemoUser;

connect MyChannelDemoUser/MyChannelDemoPassword;

BEGIN
--dbms_aqadm.stop_queue( queue_name => 'MY_TOPIC' );
--dbms_aqadm.drop_queue( queue_name  => 'MY_TOPIC');
--DBMS_AQADM.DROP_QUEUE_TABLE (queue_table => 'TTab');
dbms_aqadm.create_queue_table( queue_table => 'TTab', queue_payload_type =>
 'sys.aq$_jms_text_message', multiple_consumers => true );
dbms_aqadm.create_queue( queue_name  => 'MY_TOPIC', queue_table => 'TTab' );
dbms_aqadm.start_queue( queue_name => 'MY_TOPIC' );
END;
/

例33-2 createtable.sqlの内容

connect MyChannelDemoUser/MyChannelDemoPassword;

CREATE TABLE EMP ( EMPNO NUMBER(4), ENAME VARCHAR2(10),  JOB VARCHAR2(9), MGR
 NUMBER(4), HIREDATE DATE, SAL NUMBER(7,2), COMM NUMBER(7,2), DEPTNO NUMBER(2) );

quit;

例33-3 createtrigger.sqlの内容

connect MyChannelDemoUser/MyChannelDemoPassword;
create or replace
trigger employee AFTER INSERT OR Update ON EMP
 FOR each row
    declare
       xml_complete varchar2(1000);
       v_enqueue_options dbms_aq.enqueue_options_t;
       v_message_properties dbms_aq.message_properties_t;
       v_msgid raw(16);
       temp sys.aq$_jms_text_message;
       v_recipients        dbms_aq.aq$_recipient_list_t;

    Begin
         temp:=sys.aq$_jms_text_message.construct;
 xml_complete :=
 '<?xml version="1.0"?>' ||
 '<row>' ||
 '<EMPNO>' || :new.EMPNO || '</EMPNO>' ||
 '<ENAME>' || :new.ENAME || '</ENAME>' ||
 '<JOB>' || :new.JOB || '</JOB>' ||
 '<MGR>' || :new.MGR || '</MGR>' ||
 '<HIREDATE>' || :new.HIREDATE || '</HIREDATE>' ||
 '<SAL>' || :new.SAL || '</SAL>' ||
 '<COMM>' || :new.COMM || '</COMM>' ||
 '<DEPTNO>' || :new.DEPTNO || '</DEPTNO>' ||
 '</row>' ;
 temp.set_text(xml_complete);
      dbms_aq.enqueue(queue_name => 'MY_TOPIC',
         enqueue_options => v_enqueue_options,
         message_properties => v_message_properties,
         payload => temp,
         msgid => v_msgid );
  End ;
/
quit;

33.4.2 Oracle WebLogic Serverでのデータ・ソースの作成

データ・ソースが存在する場合、この手順はスキップできます。 既存のデータ・ソースをこのセクションで再利用することもできます。

  1. 次のように入力して、Oracle WebLogic Server管理コンソールを開きます。

    http://host_name:7001/console

    host_nameは、Oracle BAMサーバーがインストールされているシステム名です。

  2. コンソールにログインした後、「JDBC」セクションにある「データ・ソース」リンクをクリックし、「新規」をクリックします。

  3. データ・ソースの名前を入力します(例: BAMAQDataSource)。

  4. データ・ソースからJNDI名を入力します(例: jdbc/oracle/bamaq)。 この名前は、外部JMSサーバーの構成に使用されます。

  5. 「データベースのタイプ」「Oracle」を選択します。

  6. 「データベース・ドライバ」フィールドに、Oracle's Driver (Thin)を選択し、「次へ」をクリックします。

  7. グローバル・トランザクションのサポートの選択を解除し、「次へ」をクリックします。

  8. 「データベース名」フィールドにデータベースSIDを入力します(例: ORCL)。

  9. 「ホスト名」に、データベースがインストールされているシステムのホスト名を入力します(例: localhost)。

  10. データベースのポート番号を入力します(例: 1521)。

  11. ユーザー名を入力します(例: MyChannelDemoUser)。

  12. パスワードを入力し、「次へ」を入力します。

  13. 「構成のテスト」をクリックして構成をテストします。

  14. 成功した場合は、「終了」をクリックします。

33.4.3 外部JMSサーバーの作成

外部JMSサーバーを作成する手順は、次のとおりです。

  1. Oracle WebLogic Server JMSモジュールとして追加します。

    1. Oracle WebLogic Server管理コンソールで、ホームページから「JMSモジュール」ページに移動します。

    2. 「新規」をクリックして、Oracle WebLogic Server JMSモジュールを作成します。

    3. JMSモジュールの名前を入力します(例: BAMAQsystemModule)。

    4. 「次へ」をクリックして適切なターゲットを割り当てます。

    5. 「次へ」をクリックし、次に「終了」をクリックします。

  2. AQ-JMS外部サーバーをJMSモジュールに追加します。

    1. 作成したJMSモジュールを選択します。

    2. 「新規」をクリックし、追加するJMSリソースのリストに移動します。

    3. 「外部サーバー」オプションを選択し、「次へ」をクリックします。

    4. 外部サーバーの名前を入力し(例: BAMAQForeignServer)、「終了」をクリックします。

  3. AQ-JMS外部サーバーを構成します。

    1. 作成したAQ-JMS外部サーバーを選択します。

    2. 「JNDI初期コンテキスト・ファクトリ」フィールドに、次の値を入力します。

      oracle.jms.AQjmsInitialContextFactory
      
    3. 「JNDIプロパティ」領域に、次の値を入力します。

      datasource=datasource_jndi_location
      

      datasource_jndi_locationは、データ・ソースのJNDIロケーションです(例: jdbc/oracle/bamaq)。

  4. AQ-JMS外部サーバーにコネクション・ファクトリを追加します。

    1. 作成したAQ-JMS外部サーバーを選択します。

    2. 「接続ファクトリ」タブを選択します。

    3. コネクション・ファクトリの名前を入力します。 これは、Oracle WebLogic Serverによって参照される論理名です。

    4. 「ローカルJNDI名」フィールドに、Oracle BAM EMSがこのコネクション・ファクトリを参照するために使用するローカルJNDI名を入力します(例: jms/BAMAQTopicCF)。

    5. 「リモートJNDI名」フィールドに、次の値を入力します。

      - TopicConnectionFactory (select for this use case)
      - QueueConnectionFactory
      - ConnectionFactory
      
    6. 「OK」をクリックします。

  5. AQ-JMS外部サーバーに宛先を追加します。

    1. 作成したAQ-JMS外部サーバーを選択します。

    2. 「宛先」タブを選択します。

    3. この宛先の名前を入力します。 これは、Oracle WebLogic Serverによって参照される論理名で、宛先名とは関係ありません。

    4. 「ローカルJNDI名」フィールドに、Oracle BAM EMSがこの宛先を参照するために使用するローカルJNDI名を入力します(例: jms/BAMAQTopic)。

    5. 「リモートJNDI名」フィールドに、宛先がキューの場合は、次の値を入力します。

      Queues/queue_name
      

      宛先がトピックの場合は、次の値を入力します。

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

  6. Oracle WebLogic Serverを再起動します。

33.4.4 Oracle BAMアーキテクトでのEMSの定義

  1. Oracle BAMアーキテクトを開き、ドロップダウン・リストで「エンタープライズ・メッセージ・ソース」を選択します。

  2. 作成したメッセージ・ソースの情報を入力します。

  3. 「初期コンテキスト・ファクトリ」の値を入力します。

    weblogic.jndi.WLInitialContextFactory
    
  4. JNDIプロバイダのURLを入力します。

    t3://host_name:7001
    
  5. 「接続ファクトリ名」を入力します(例: jms/BAMAQTopicCF)。

  6. 「宛先名」を入力します(例: jms/BAMAQTopic)。

  7. AQ-JMSサーバーから受信した値を送信するOracle BAMデータ・オブジェクトを選択します。

  8. 選択したデータ・オブジェクトの適切なフィールドに受信XMLのデータをマップできるように、ソースからデータ・オブジェクトへのフィールド・マッピングの指定を完了します。

33.4.5 SQL表のレコードの挿入と更新

これまでの作業で、EMPデータベース表内のいくつかレコードを挿入または更新して、機能をエンドツーエンドでテストできる状態になりました。

SQLPlusを使用してSQL問合せを実行できます。

ここでは、データ・オブジェクトに挿入されるレコードの値を確認する必要があります。

次に例を示します。

insert into emp values (25,'Ford','ANALYST',7566,sysdate,60000,3000,20);

update emp set ENAME='McOwen' where ENAME='Ford';