oracle esb レッスン07: oems: db pl/sql用...
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;