oracle esb レッスン07: oems: db pl/sql用...

41
ESB Lesson07 Page 1 Oracle Corporation 発行「 Oracle ESB Lesson03: ESB CustomerData SOAP - Oracle Integration Product Management - 」の翻訳版です。 Oracle ESB レッスン07: OEMS: DB PL/SQL用のJMSAQOracle Integration Product Management

Upload: others

Post on 19-Feb-2020

14 views

Category:

Documents


0 download

TRANSCRIPT

ESB Lesson07 Page 1Oracle Corporation発行「Oracle ESB Lesson03: ESB CustomerData SOAP - Oracle Integration Product Management -」の翻訳版です。

Oracle ESBレッスン07: OEMS: DB PL/SQL用のJMS(AQ)

Oracle Integration Product Management

ESB Lesson07 Page 2Oracle Corporation発行「Oracle ESB Lesson03: ESB CustomerData SOAP - Oracle Integration Product Management -」の翻訳版です。

OEMS(Oracle Enterprise Messaging Services)

JMS 1.1に準拠したメッセージング・プロバイダ3つの永続性オプション

ESB Lesson07 Page 3Oracle Corporation発行「Oracle ESB Lesson03: ESB CustomerData SOAP - Oracle Integration Product Management -」の翻訳版です。

要件

このレッスンでは、Oracle Database 10g (EE、XE、…)が必要です

(Oracle Oliteでは不十分)

ESB Lesson07 Page 4Oracle Corporation発行「Oracle ESB Lesson03: ESB CustomerData SOAP - Oracle Integration Product Management -」の翻訳版です。

目標

1. AQに対してJMSアダプタ

(インバウンド)を構成する方法のデモ

2. PL/SQLのストアド・プロ

シ ー ジ ャ を 呼 び 出 すDatabaseアダプタの構成

方法のデモ

3. プロジェクトの開発から

本稼働までのプロモーションの検討(および関連するリソース・プロバイダの考慮事項)

ESB Lesson07 Page 5Oracle Corporation発行「Oracle ESB Lesson03: ESB CustomerData SOAP - Oracle Integration Product Management -」の翻訳版です。

シナリオの概要

ESBサービスがJMSトピック(OEMSデータ

ベースの永続性)において、新しい従業員の通知をリスニングしている。

このようなメッセージを受信した場合、会社のデータベースへ新しい従業員を挿入するストアド・プロシージャを呼び出す。

ESB Lesson07 Page 6Oracle Corporation発行「Oracle ESB Lesson03: ESB CustomerData SOAP - Oracle Integration Product Management -」の翻訳版です。

構成の手順

ステップ

− DBアカウントの準備

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

− AQで宛先の作成

− 新しいESBプロジェクトの作成

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

− アウトバウンドDBアダプタの作成

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

− サーバー・リソース・プロバイダの構成

− サービスの登録

− 実行

ESB Lesson07 Page 7Oracle Corporation発行「Oracle ESB Lesson03: ESB CustomerData SOAP - Oracle Integration Product Management -」の翻訳版です。

手順1 − チュートリアル・ファイルの解凍

解凍していない場合は、ESBSamples.zipをC:¥ESBSamples、またはその他の場所に解凍する

ESBSamples¥AQJMStoDBがあることを確認する

次のようなツリー構造であることを確認する

ESB Lesson07 Page 8Oracle Corporation発行「Oracle ESB Lesson03: ESB CustomerData SOAP - Oracle Integration Product Management -」の翻訳版です。

手順2 − データベース・アカウントの準備

DOSプロンプトをオープンし、このチュートリアルのディレクトリへ移動するcd ¥ESBSamples¥AQJMStoDB¥sql

ORACLE_HOMEに実際のデータベース・インストレーションを設定する

例: set ORACLE_HOME=D:¥D:¥ORACLE¥oraclexe¥app¥oracle¥product¥

10.2.0¥server

アカウントの作成スクリプトを実行する

sqlplus sys as sysdba @accounts_create.sql(プロンプトが表示された場合は、sysパスワードを入力する)

ESB Lesson07 Page 9Oracle Corporation発行「Oracle ESB Lesson03: ESB CustomerData SOAP - Oracle Integration Product Management -」の翻訳版です。

手順3 − ストアド・プロシージャの作成

sqlのディレクトリへ移動する

cd ¥ESBSamples¥AQJMStoDB¥sql

提供されたストアド・プロシージャの作成スクリプトを実行する

sqlplus dbapp/dbapp @procedure_create.sql

ESB Lesson07 Page 10Oracle Corporation発行「Oracle ESB Lesson03: ESB CustomerData SOAP - Oracle Integration Product Management -」の翻訳版です。

手順4 − AQで宛先の作成

(注: A JMS Topicは、AQ内でisTopicがtrueに設定されているマルチコンシューマ・キューの表)

• Cd ¥ESBSamples¥AQJMStoDB¥sql

• 提供されたSQLスクリプトを使用して、JMSDEMO_TOPICという名前のJMSトピックに

必要なインフラストラクチャをデータベースに作成するsqlplus jmsuser/jmsuser @topic_create.sql

ESB Lesson07 Page 11Oracle Corporation発行「Oracle ESB Lesson03: ESB CustomerData SOAP - Oracle Integration Product Management -」の翻訳版です。

手順5 − 新しいESBプロジェクトの作成

JDevをオープンする

デモ・アプリケーション(左側のペイン)を右クリックして「New Project」を選択する

プロジェクト・ギャラリーから、プロジェクトのタイプとして「ESB Project」を選択する

プロジェクトに「AQJMStoDB」という名前を付ける

ESB Lesson07 Page 12Oracle Corporation発行「Oracle ESB Lesson03: ESB CustomerData SOAP - Oracle Integration Product Management -」の翻訳版です。

手順5a − インバウンドJMSアダプタ・サービスの作成

コンポーネント・パレット(画面の右側)をクリックする

「JMS Adapter」をプロジェクトにドラッグ・アンド・ドロップする

ESB Lesson07 Page 13Oracle Corporation発行「Oracle ESB Lesson03: ESB CustomerData SOAP - Oracle Integration Product Management -」の翻訳版です。

手順5b −インバウンドJMSアダプタ・サービスの作成

1. サービスの名前として「ListenForNewEmployees」と入力する

2. 新しい「System/Group」として「DefaultSystem.AQJMStoDB」を作成する

1. 懐中電灯のアイコンをクリックする

2. プラス記号(+)をクリックする

3. 「ServiceGroup」を選択し、名前を「AQJMStoDB」と入力する

ESB Lesson07 Page 14Oracle Corporation発行「Oracle ESB Lesson03: ESB CustomerData SOAP - Oracle Integration Product Management -」の翻訳版です。

手順5c − インバウンドJMSアダプタ・サービスの作成

1. JMSアダプタ・サービスの作成のメイン画面に戻り、「Adapter Service WSDL」の「Configure Adapter」アイコンをクリックする

2. サービスの「Name」を「ListenForNewEmployees」のままにして次へ進む

3. JMSプロバイダとして「Oracle Enterprise Messaging Service(OEMS)」を選択する

4. 永続性のドロップダウン・メニューから「Database」を選択して「Next>」を選択する

ESB Lesson07 Page 15Oracle Corporation発行「Oracle ESB Lesson03: ESB CustomerData SOAP - Oracle Integration Product Management -」の翻訳版です。

手順5d −インバウンドJMSアダプタ・サービスの作成

1. 「Connection」の右側の「New」をクリックして、新しい接続を作成する

2. 「Connection Name」として「OEMS」と入力し、「Connection Type」として「Oracle(JDBC)」を選択する

3. 認証の接続情報を次のように入力するUsername: jmsuser、Password: jmsuser 「deploy password」を選択する 「Next>」をクリックする

ESB Lesson07 Page 16Oracle Corporation発行「Oracle ESB Lesson03: ESB CustomerData SOAP - Oracle Integration Product Management -」の翻訳版です。

手順5e − インバウンドJMSアダプタ・サービスの作成

1. 「Connection Details」画面で「Driver」が「thin」に、「Host Name」が「localhost」に、「JDBC Port」が「1521」に、「SID」が「XE」に設定されていることを確認する「Next>」をクリックする

2. 「Test Connection」をクリックし、「Finish」をクリックする

ESB Lesson07 Page 17Oracle Corporation発行「Oracle ESB Lesson03: ESB CustomerData SOAP - Oracle Integration Product Management -」の翻訳版です。

手順5f − インバウンドJMSアダプタ・サービスの作成

JMSアダプタのウィザードに戻る

1. 「Operation Type」として「Consume Message」を選択して「Next>」をクリックする

2. 「Resource Provider」に「OEMS」と入力する

3. 「Destination Name」の右の「Browse... 」をクリックする

4. 「Destinations」フィールドの「All Types」および「JMSUSER」の下位にある「JMSDEMO_TOPIC(topic)」を選択して、「OK」をクリックする

5. 「Durable Subscriber ID」に「NewProvisioningESB」と入力する

ESB Lesson07 Page 18Oracle Corporation発行「Oracle ESB Lesson03: ESB CustomerData SOAP - Oracle Integration Product Management -」の翻訳版です。

手順5g −インバウンドJMSアダプタ・サービスの作成

1. 「Next>」をクリックする

2. 「Message Schema」で「Schema Location」の右側の「Browse... 」をクリックする

3. 「Import Schema File」のアイコン(右上)をクリックする

4. 懐中電灯のアイコンをクリックし、このチュートリアルを配置したディレクトリへナビゲートする。ADDEMPLOYEES.xsdスキーマを選択して「OK」をクリックし、「Add to Project」チェックボックスが選択されていることを確認して「OK」をクリックする

5. 「Imported Schemas」の「ADDEMPLOYEES.xsd」を展開して「InputParameters」を選択し、「OK」をクリックする

6. 次へ進む

7. 終了する

8. ESBは、JMSアダプタのルーティング・サービス・ダウンストリームも作成している

ESB Lesson07 Page 19Oracle Corporation発行「Oracle ESB Lesson03: ESB CustomerData SOAP - Oracle Integration Product Management -」の翻訳版です。

手順5h − アウトバウンドRDBMSアダプタの作成

1. コンポーネント・パレット(画面の右側)をクリックする

2. 「Database Adapter」を「NewEmployee.esb」プロジェクトにドラッグ・アンド・ドロップする

3. 「Next>」 、「Database Adapter」 、「Next>」の順にクリックし、サービスの「Name」に「CreateEmployee」と入力する。「System/Group」が「DefaultSystem.AQJMStoDB」に設定されていることを確認する

4. 「Adapter Service WSDL」で「Configure Adapter Service WSDL」アイコンをクリックすると、アダプタの構成ウィザードが開始される

ESB Lesson07 Page 20Oracle Corporation発行「Oracle ESB Lesson03: ESB CustomerData SOAP - Oracle Integration Product Management -」の翻訳版です。

手順5i − アウトバウンドRDBMSアダプタの作成

1. サービスの「Name」を「CreateEmployee」のままにして、「Next>」をクリックする

2. 「Connection」の右側の「New」をクリックし、次のパラメータで新しい接続を作成する

3.接続テストが成功したことを確認し、「Finish」をクリックする

1. Connection Name: "EmployeeDB" 2. Connection Type: "Oracle (JDBC)" 3. Username: "dbapp"4. Password: "dbapp" 5. 「deploy password」を選択

6. Driver: "thin" 7. Host Name: "localhost" 8. JDBC Port: "1521" 9. SID: "XE"

(詳細な手順は、JMSアダプタの構成で構成する接続を参照)

ESB Lesson07 Page 21Oracle Corporation発行「Oracle ESB Lesson03: ESB CustomerData SOAP - Oracle Integration Product Management -」の翻訳版です。

手順5j − アウトバウンドRDBMSアダプタの作成

1. アダプタの構成ウィザードに戻って「Next」をクリックする

2. 「Operation Type」で「Call a Stored Procedure or Function」を選択する

3. スキーマ画面で「DBAPP」を選択して「Browse... 」をクリックし、「Stored Procedures」で「ADDEMPLOYEES」を選択して「OK」をクリックする

4. 「Next>」および「Finish」をクリックする

5. 「Create Database Adapter Service」画面に戻って、Adapter Service WSDLの情報が挿入されたことを確認して、「OK」をクリックする

ESB Lesson07 Page 22Oracle Corporation発行「Oracle ESB Lesson03: ESB CustomerData SOAP - Oracle Integration Product Management -」の翻訳版です。

手順5k − ListenForNewEmployeesルーティング・サービスの構成

1. 「ListenForNewEmployees」ルーティング・サービスをダブルクリックする

2. 「Routing Rules」タブを選択する

3. プラス記号(+)のアイコンをクリックしてルールを追加する

4. 「ESB」で「Services in project」、「DefaultSystem」、「AQJMStoDB」、「CreateEmployee」、「CreateEmployee」サービスを選択して「OK」をクリックする

5. 変換のアイコンをダブルクリックする

6. 「Create New Mapper File」を選択し、デフォルトの名前を承認する

7. マッパーの左側で「EMPS」を選択し、それを右側の「EMPS」へドラッグする「Auto Map Preferences」のデフォルトを承認する

8. 保存して、マッパーのタブをクローズする

9. 保存して、ルーティング・サービスのタブをクローズする

ESB Lesson07 Page 23Oracle Corporation発行「Oracle ESB Lesson03: ESB CustomerData SOAP - Oracle Integration Product Management -」の翻訳版です。

手順6 − 設計の完了

設計フェーズを完了後、プロジェクトをテストする

ESB Lesson07 Page 24Oracle Corporation発行「Oracle ESB Lesson03: ESB CustomerData SOAP - Oracle Integration Product Management -」の翻訳版です。

開発から本稼働へ、プロジェクトのプロモート

プロジェクトをサーバーへ登録する前に、JDevで参照したリソースがサーバーでも使用できることを確認する。例: データソース

その他: サーバーでは実際に、設計中に使用したリソースとは別のリソースを使用する場

合もある。

管理者は、同じ論理名(ただし実際の本番用リソースを指しているもの)を使用して、ESBサーバー上でマッチするデータソースを作成すること。

ESB Lesson07 Page 25Oracle Corporation発行「Oracle ESB Lesson03: ESB CustomerData SOAP - Oracle Integration Product Management -」の翻訳版です。

非管理接続と管理接続

非管理モード

• WSDLで指定される接続情報

• デフォルトですぐに使用できる(これがランタイム接続とみなされ、ウィザードは設計時の接続情報を取得する)

管理モード(Toplink)• JNDIエントリを介したoc4j-ra.xmlで指定される接続情報

• WSDLで参照される上記のJNDIエントリ

管理モード(OC4J)[推奨] • data-sources.xmlで指定される接続情報

• oc4j-ra.xmlのJNDIエントリで参照される上記のデータソース

• WSDLで参照される上記のJNDIエントリ

ESB Lesson07 Page 26Oracle Corporation発行「Oracle ESB Lesson03: ESB CustomerData SOAP - Oracle Integration Product Management -」の翻訳版です。

非管理モードの注意事項

事前に構成されたリソース・プロバイダ(OC4J-JMS用など)を使用していない場合、appサーバーの構成ファイルで更新が

必要である

例: データベース・プロバイダに対するJMSアダプタ

管理モードでは、次を編集する1. oc4j-ra.xml2. (data-sources.xml)3. application.xml

非管理モードでは、次を編集する1. application.xml

ESB Lesson07 Page 27Oracle Corporation発行「Oracle ESB Lesson03: ESB CustomerData SOAP - Oracle Integration Product Management -」の翻訳版です。

サーバーの構成

1. SOA Suiteをシャットダウンする

2. application.xmlおよびoc4j-ra.xmlをJMSアダプ

タに対して構成する

3. application.xmlおよびoc4j-ra.xmlをDatabase Adapterに対して構成する

4. SOA Suiteを再起動する

5. ESBプロジェクトを登録する

6. テスト

ESB Lesson07 Page 28Oracle Corporation発行「Oracle ESB Lesson03: ESB CustomerData SOAP - Oracle Integration Product Management -」の翻訳版です。

手順7a −管理モードにおけるJMSアダプタの構成プロジェクトで必要な値

リソース・プロバイダ名(A)

application.xmlとoc4j-ra.xmlで使用

JNDI名(B)oc4j-ra.xmlで使用

ESB Lesson07 Page 29Oracle Corporation発行「Oracle ESB Lesson03: ESB CustomerData SOAP - Oracle Integration Product Management -」の翻訳版です。

手順7b − JMSアダプタ: データベース・リソース・プロバイダの構成(application.xml)

ESBサーバーをインストールする%ESB_HOME%¥j2ee¥home¥configへナビゲートする

例: cd D:¥ORACLE¥OracleESB_beta¥j2ee¥home¥configapplication.xmlをオープンして次のエントリを追加する

実際のプロジェクト(A)のRP名に一致

ESB Lesson07 Page 30Oracle Corporation発行「Oracle ESB Lesson03: ESB CustomerData SOAP - Oracle Integration Product Management -」の翻訳版です。

手順7c − JMSアダプタ: JMSコネクション・ファクトリの構成(oc4j-ra.xml)

ESBサーバーのインストールで、JMSアダプタをデプロイする例:D:¥ORACLE¥OracleESB_beta¥j2ee¥home¥applicationdeployments¥default¥JmsAdapter

oc4j-ra.xmlをオープンして次のエントリを追加する

プロジェクトで指定したJNDI名(B)

任意の名前

プロジェクトおよびapplication.xmlで指定したリソース・プロバイダ名(A)

ESB Lesson07 Page 31Oracle Corporation発行「Oracle ESB Lesson03: ESB CustomerData SOAP - Oracle Integration Product Management -」の翻訳版です。

手順7d − 管理モードにおけるDatabase Adapterの構成プロジェクトで必要な値

JNDI名(A)oc4j-ra.xmlで使用

ESB Lesson07 Page 32Oracle Corporation発行「Oracle ESB Lesson03: ESB CustomerData SOAP - Oracle Integration Product Management -」の翻訳版です。

手順7e − Database Adapter(oc4j-ra.xml)

ESBサーバーのインストールで、Database Adapterをデ

プロイする例: D:¥ORACLE¥OracleESB_beta¥j2ee¥home¥

applicationdeployments¥default¥DBAdapter

oc4j-ra.xmlをオープンして次のエントリを追加する

プロジェクトで指定したJNDI名(A)

ESB Lesson07 Page 33Oracle Corporation発行「Oracle ESB Lesson03: ESB CustomerData SOAP - Oracle Integration Product Management -」の翻訳版です。

手順7f − Database Adapter(data-sources.xml)

ESBサーバーをインストールする%ESB_HOME%¥j2ee¥home¥configへナビゲートする

例: cd D:¥ORACLE¥OracleESB_beta¥j2ee¥home¥config

data-sources.xmlをオープンして次のエントリを追加する

Oc4j-ra.xmlで指定したデータソース名

ESB Lesson07 Page 34Oracle Corporation発行「Oracle ESB Lesson03: ESB CustomerData SOAP - Oracle Integration Product Management -」の翻訳版です。

手順7g −サーバーの再起動

opmnctl stopallopmnctl startall

デバッグ

次のログ・ファイルを見る

%ESB_HOME%¥j2ee¥home¥log¥home_default_group_1¥oc4j¥log.xml%ESB_HOME%¥opmn¥logs¥ default_group~home~default_group~1.log

必要に応じ、ASControlのロガー・レベルを「FINE」に設定する

ESB Lesson07 Page 35Oracle Corporation発行「Oracle ESB Lesson03: ESB CustomerData SOAP - Oracle Integration Product Management -」の翻訳版です。

手順8 − 登録

これは設計時(新しい従業員のプロビジョニング・サービスをテストするとき)に実行する

すべて保存する

AQJMStoDBプロジェクトを右クリックし、「Register with ESB」、「LocalIntegrationServer」を選択する

確認のダイアログが表示される

ESB Lesson07 Page 36Oracle Corporation発行「Oracle ESB Lesson03: ESB CustomerData SOAP - Oracle Integration Product Management -」の翻訳版です。

手順9 − ESBコントロールのチェック

ESBコンソールをオープンする(http://localhost:8888/esb/esb/EsbConsole.html)次のようなサービスが表示される

ESB Lesson07 Page 37Oracle Corporation発行「Oracle ESB Lesson03: ESB CustomerData SOAP - Oracle Integration Product Management -」の翻訳版です。

手順10 − JMSメッセージを送信して新しいサービスをトリガする

DOSプロンプトをオープンして、toolsの下のチュートリアル・ディレクトリへ移動する例: cd C:¥ESBSamples¥AQJMStoDB¥toolssetenv.batを編集して、実際の環境を反映させる(クラスパス)

oems.propertiesを編集して、サーバーの設定を反映させる(場所、ポート、sidなど)

次のようにメッセージを送信する

ESB Lesson07 Page 38Oracle Corporation発行「Oracle ESB Lesson03: ESB CustomerData SOAP - Oracle Integration Product Management -」の翻訳版です。

手順11 − ESBコントロールの実行のチェック

ESBコンソールをオープンする(http://localhost:8888/esb/esb/EsbConsole.html)右上の「Instances」をクリックする

「Search」の右の緑の矢印をクリックする

1つのインスタンスが次のように表示される

ESB Lesson07 Page 39Oracle Corporation発行「Oracle ESB Lesson03: ESB CustomerData SOAP - Oracle Integration Product Management -」の翻訳版です。

手順12 − sqlplusの実行のチェック

1. DOSプロンプトをオープンする

2. 次のコマンドを発行する

employee_tableに新しい従業員が追加されたことを確認する

ESB Lesson07 Page 40Oracle Corporation発行「Oracle ESB Lesson03: ESB CustomerData SOAP - Oracle Integration Product Management -」の翻訳版です。

付録A − create_procedure.sql

ESB Lesson07 Page 41Oracle Corporation発行「Oracle ESB Lesson03: ESB CustomerData SOAP - Oracle Integration Product Management -」の翻訳版です。

付録B − topic_create.sql

exec dbms_aqadm.create_queue_table(queue_table=>'JMSDEMO_QUEUE_TABLE',queue_payload_type=>'sys.aq$_jms_text_message',multiple_consumers=>true);

exec dbms_aqadm.create_queue(queue_name=>'JMSDEMO_TOPIC',queue_table=>'JMSDEMO_QUEUE_TABLE');

exec dbms_aqadm.start_queue(queue_name=>'JMSDEMO_TOPIC');

commit;