![]() ![]() ![]() ![]() |
RDBMS イベントを作成し、新規イベントのチャネル ルールを定義する前に、データベースをポイントするデータ ソースとチャネル ルール (イベント) を定義するテーブルを作成します。RDBMS イベント ジェネレータのチャネル ルールの定義については、WebLogic Integration ソリューションの管理ガイドの RDBMS イベント ジェネレータのチャネル ルールの定義に関する説明を参照してください。
RDBMS イベントのチャネル ルールを定義するには、データ ソースを作成後、RDBMS イベントからパブリッシュするメッセージ ブローカ チャネルも作成しておく必要があります。
以下の節では、データ ソースとメッセージ ブローカ チャネルの作成方法について説明します。
データ ソースを作成する前に、接続先データ ソースのデータベース接続パラメータを確認しておく必要があります。データベース接続パラメータが不明な場合は、システム管理者にお問い合わせください。
データ ソース作成の次の手順として、データ ソースへの接続を作成します。
startWebLogic.cmd
コマンドまたは BEA Workshop for WebLogic Platform から WebLogic Server を起動します。
図 3-1 のように、WebLogic Server のホーム ページが表示されます。
図 3-2 に示すように、[新しい JDBC データ ソースの作成] ページが表示されます。
注意 : | トリガ タイプのイベントをコンフィグレーションする場合、[データベース ユーザ名] フィールドに入力するデータベース アカウント ユーザ名とトリガ タイプのイベントをコンフィグレーションするテーブルのスキーマ名を同じにすることをお勧めします。また、使用するアカウント ユーザ名には、テーブルおよびトリガの CREATE/DROP パーミッションが必要です。Oracle データベースをコンフィグレーションする場合、使用するアカウント名にはテーブル、トリガ、およびシーケンスの CREATE/DROP パーミッションが必要です。 |
サポートされるデータベースの一覧については、「サポートされるデータベース」を参照してください。
注意 : | 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 の使用』の「メッセージ ブローカ」を参照してください。
WebLogic Integration Administration Console のメッセージ ブローカ モジュールでは、アプリケーションのすべてのメッセージ ブローカ チャネルをモニタおよび管理できます。
データ ソースとメッセージ ブローカ チャネルの作成が完了すると、WebLogic Integration Administration Console で RDBMS イベント ジェネレータを作成し、これらのジェネレータのチャネル ルールを定義できるようになります。
RDBMS イベント ジェネレータの作成およびチャネル ルール定義の詳細については、『WebLogic Integration Administration Console の使用』の「イベント ジェネレータ」を参照してください。
![]() ![]() ![]() |