![]() ![]() ![]() ![]() |
RDBMS イベントを作成し、新規イベントのチャネル ルールを定義する前に、データベースをポイントするデータ ソースとチャネル ルール (イベント) を定義するテーブルを作成します。RDBMS イベント ジェネレータのチャネル ルールの定義については、『Oracle WebLogic Integration ソリューションの管理』の RDBMS イベント ジェネレータのチャネル ルールの定義に関する説明を参照してください。
RDBMS イベントのチャネル ルールを定義するには、データ ソースを作成後、RDBMS イベントからパブリッシュするメッセージ ブローカ チャネルも作成しておく必要があります。
以下の節では、データ ソースとメッセージ ブローカ チャネルの作成方法について説明します。
データ ソースを作成する前に、接続先データ ソースのデータベース接続パラメータを確認しておく必要があります。データベース接続パラメータが不明な場合は、システム管理者にお問い合わせください。
データ ソース作成の次の手順として、データ ソースへの接続を作成します。
startWebLogic.cmd
コマンドまたは Oracle Workshop for WebLogic から Oracle WebLogic Server を起動します。
Oracle WebLogic Server のホーム ページが、図 3-1 のように表示されます。
図 3-2 に示すように、[新しい JDBC データ ソースの作成] ページが表示されます。
注意 : | トリガ タイプのイベントをコンフィグレーションする場合、[データベース ユーザ名] フィールドに入力するデータベース アカウント ユーザ名とトリガ タイプのイベントをコンフィグレーションするテーブルのスキーマ名を同じにすることをお勧めします。また、使用するアカウント ユーザ名には、テーブルおよびトリガの CREATE/DROP パーミッションが必要です。Oracle データベースをコンフィグレーションする場合、使用するアカウント名にはテーブル、トリガ、およびシーケンスの CREATE/DROP パーミッションが必要です。 |
サポートされるデータベースの一覧については、「サポートされるデータベース」を参照してください。
注意 : | Oracle WebLogic Server JDBC 認定ドライバには * (アスタリスク) が付いています。 |
図 3-3 に示すように、[トランザクション オプション] ページが表示されます。
図 3-4 に示すように、[接続プロパティ] ページが表示されます。
図 3-5 に示すように、[データベース接続のテスト] ページが表示されます。
このページに表示されるフィールドは、前のページで選択したデータベースおよびドライバに応じて異なります。
次の手順に進む前に、ドライバのコンフィグレーションをテストすることをお勧めします。ドライバのコンフィグレーションをテストしておかないと、それまでの手順にエラーがあった場合、RDBMS イベント ジェネレータをコンフィグレーションする際に、必要なデータベースに接続できません。
接続の設定に問題があると、ページの上部にエラー メッセージが表示されます。
コンフィグレーションのテストが成功すると、図 3-6 に示すように [サーバ] ページが表示されます。
注意 : | 同様に、複数のクラスタがある場合は、データ ソース接続をデプロイするクラスタの横にあるチェック ボックスをオンにして、[完了] をクリックします。 |
接続が作成およびデプロイされて、画面が JDBC 接続プールのページに戻ります。
データ ソースの作成時には、以下の事柄を考慮する必要があります。
DetabaseMetadata.getUserName()
を使用する。StringIndexOutOfBoundsException
が返される。たとえば、同じ名前の 2 つのテーブルがログイン名 MASAA01 の同じカタログの異なるスキーマ (たとえば MASAA01.prod
と dbo.prod
) に存在する場合、dbo.prod
にイベントを作成すると、例外が発生します。
この場合に例外が発生するのは、テーブルのカラムとデータ型の取得に MS SQL のストアド プロシージャ sp_columns が使われるためです。このストアド プロシージャではテーブル名のみが取得され、完全修飾名は取得されません。そのため、dbo.prod
のカラムを取得したい場合でも、カラムは常に dbo.prod
ではなく MASAA01.prod
から返されます。
dbo
スキーマにコンフィグレーションする必要がある。
この節では、RDBMS イベント ジェネレータからパブリッシュするメッセージ ブローカ チャネルの作成方法について説明します。3 種類のメッセージ ブローカ チャネルを作成する必要があります。
これにより、Utility Project/schemas フォルダにスキーマが追加されます。
<?xml version="1.0"?>
<!--
サンプル チャネル ファイル
channelPrefix および <channel/> 要素を変更してカスタマイズします。
このサンプル ファイルでは、次のネームスペースを使用します。これらの
ネームスペースはスキーマ ディレクトリに存在する必要があるスキーマを
参照します。
- xmlns:eg=http://www.bea.com/wli/eventGenerator" は
イベント ジェネレータのメタデータ参照に使われます。
- xmlns:dp="http://www.bea.com/wli/control/dynamicProperties" は
ファイル イベント ジェネレータでペイロードをファイル名で渡すために使われます。
- xmlns:oagpo="http://www.openapplications.org/003_process_po_007" はサンプル ペイロードの説明に使われます。
-->
<channels xmlns="http://www.bea.com/wli/broker/channelfile"
channelPrefix="/SamplePrefix"
xmlns:eg="http://www.bea.com/wli/eventGenerator"
xmlns:dp="http://www.bea.com/wli/control/dynamicProperties"
xmlns:oagpo="http://www.openapplications.org/003_process_po_007">
<channel name ="Samples" messageType="none">
<!-- XML を渡す単純なチャネル -->
<channel name ="SampleXmlChannel" messageType="xml"/>
<!-- rawData を渡す単純なチャネル -->
<channel name ="SampleRawDataChannel" messageType="rawData"/>
<!-- 文字列を渡す単純なチャネル -->
<channel name ="SampleStringChannel" messageType="string"/>
</channel>
</channels>
図 3-8 のポップアップが表示されます。
図 3-9 のように、ノードの詳細を示すダイアログが表示されます。
System.out
メッセージを入力します。System.out.printIn(System.currentTimeMillis()+”-”+x0);
XML チャネルの場合、型保証付きで XML コンテンツを取得する方法があります。
.XSD
ファイルを Server ドメイン ディレクトリから選択します。.XSD
はチャネル ルール定義と同じ名前でフォルダに作成されます。.XSD
ファイルが自動的に Java クラスにコンパイルされます。CHAR
型と DATE
型の 2 つのカラムをパブリッシュする testFirst
イベントの場合、生成されるスキーマ ファイルは TableRowSet.xsd
です。次の subscription(..)
メソッド ファイルは、生成されたクラスで XmlObject を使用する方法を示しています。import com.bea.wli.rdbmsEG.testFirst.TableRowSetDocument;
import com.bea.wli.rdbmsEG.testFirst.TableRowSetDocument.TableRowSet;
import com.bea.wli.rdbmsEG.testFirst.TableRowSetDocument.TableRowSet.TableRow;
....
public void subscription(com.bea.xml.XmlObject x0)
{
//#START: CODE GENERATED - PROTECTED SECTION - このメソッドのこのコメントより前であれば、安全にコードを追加できる。#//
// トランスフォームを入力する
// パラメータの割り当て
//#END : CODE GENERATED - PROTECTED SECTION - このメソッドのこのコメントより後であれば、安全にコードを追加できる。#//
final TableRowSetDocument doc = TableRowSetDocument.Factory.newInstance();
doc.set(x0);
System.out.println("The document: " + doc);
final TableRowSet rowSet = doc.getTableRowSet();
final TableRow[] rows = rowSet.getTableRowArray();
for(int i = 0; i < rows.length; i++)
{
System.out.println("---" + (i + 1) + "---");
System.out.println("CHAR1: " + rows[i].getCHAR1());
System.out.println("DATE1: " + rows[i].getDATE1());
}
}
RawData チャネルに関する次のコード例は、RDBMS イベント ジェネレータでパブリッシュされたデータの取得方法を示しています。
import com.bea.data.RawData;
import java.io.ByteArrayInputStream;
import java.io.ObjectInputStream;
import weblogic.jdbc.rowset.WLCachedRowSet;
….
public void subscription(com.bea.data.RawData x0)
{
//#START: CODE GENERATED - PROTECTED SECTION - このメソッドのこのコメントより前であれば、安全にコードを追加できる。#//
// トランスフォームを入力する
// パラメータの割り当て
//#END : CODE GENERATED - PROTECTED SECTION - このメソッドのこのコメントより後であれば、安全にコードを追加できる。#//
try
{
ByteArrayInputStream arrayInputStream = new ByteArrayInputStream(rawData.byteValue());
ObjectInputStream objectInputStream = new ObjectInputStream(arrayInputStream);
WLCachedRowSet rowSet = (WLCachedRowSet) objectInputStream.readObject();
System.out.println("-- Event --\r\n");
while (rowSet.next())
{
Map map = rowSet.getCurrentRow();
for (Iterator iterator = map.keySet().iterator(); iterator.hasNext();)
{
Object key = iterator.next();
System.out.println(" Column: " + key + ", Value: " + map.get(key));
}
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
メッセージ ブローカ チャネルの詳細については、『WebLogic Integration Administration Console の使用』の「メッセージ ブローカ」を参照してください。
Oracle WebLogic Integration Administration Console のメッセージ ブローカ モジュールでは、アプリケーションのすべてのメッセージ ブローカ チャネルをモニタおよび管理できます。
データ ソースとメッセージ ブローカ チャネルの作成が完了すると、Oracle WebLogic Integration Administration Console で RDBMS イベント ジェネレータを作成し、これらのジェネレータのチャネル ルールを定義できるようになります。
RDBMS イベント ジェネレータの作成およびチャネル ルール定義の詳細については、『WebLogic Integration Administration Console の使用』の「イベント ジェネレータ」を参照してください。
![]() ![]() ![]() |