RDBMS イベント ジェネレータ
![]() |
![]() |
![]() |
![]() |
RDBMS イベントを作成し、新規イベントのチャネル ルールを定義する前に、データベースをポイントするデータ ソースとチャネル ルール (イベント) を定義するテーブルを作成します。RDBMS イベント ジェネレータのチャネル ルールの定義については、『WebLogic Integration ソリューションの管理』の「RDBMS イベント ジェネレータのチャネル ルールの定義」を参照してください。
RDBMS イベントのチャネル ルールを定義するには、データ ソースを作成後、RDBMS イベントからパブリッシュするメッセージ ブローカ チャネルも作成しておく必要があります。
以下の節では、データ ソースとメッセージ ブローカ チャネルの作成方法について説明します。
データ ソースを作成する前に、接続先データ ソースのデータベース接続パラメータを確認しておく必要があります。データベース接続パラメータが不明な場合は、システム管理者に問い合わせてください。
データ ソースを作成するには、まず、必要なドライバを WebLogic クラスパスに追加します。
@REM SET THE CLASSPATH
set CLASSPATH=%PRE_CLASSPATH%;%WEBLOGIC_CLASSPATH...
set CLASSPATH=%WL_HOME%\server\lib\driver.jar;%CLASSPATH%
注意 : MS SQL XA ドライバでイベントを作成する前に、「MS SQL Server ドライバ」の「JTA 用ストアド プロシージャのインストール」の手順を実行する必要があります。
データ ソース作成の次の手順として、データ ソースへの接続を作成します。
サポートされるデータベースの一覧については、「サポートされるデータベース」を参照してください。
注意 : WebLogic Server JDBC 認定ドライバには * の印が付いています。
注意 : トリガ タイプのイベントをコンフィグレーションする場合、[データベース ユーザ名] フィールドに入力するデータベース アカウント ユーザ名とトリガ タイプのイベントをコンフィグレーションするテーブルのスキーマ名を同じにすることをお勧めします。また、使用するアカウント ユーザ名には、テーブルおよびトリガの CREATE/DROP パーミッションが必要です。Oracle データベースをコンフィグレーションする場合、使用するアカウント名にはテーブル、トリガ、およびシーケンスの CREATE/DROP パーミッションが必要です。
次に、データ ソースの接続プールのコンフィグレーションを定義します。
データ ソース接続の作成の最後の手順として、新しいデータ ソースを作成します。
WebLogic Integration Administration Console で RDBMS イベント ジェネレータを作成し、これらの新しいイベント ジェネレータのチャネル ルールを定義する前に、新しいイベント ジェネレータのパブリッシュ先となるメッセージ ブローカ チャネルを作成しておく必要があります。
DetabaseMetadata.getUserName()
を使用する。StringIndexOutOfBoundsException
が返される。たとえば、同じ名前の 2 つのテーブルがログイン名 MASAA01 の同じカタログの異なるスキーマ (たとえば MASAA01.prod
と dbo.prod
) に存在する場合、dbo.prod
にイベントを作成すると、例外が発生します。この場合に例外が発生するのは、テーブルのカラムとデータ型の取得に MS SQL のストアド プロシージャ sp_columns が使われるためです。このストアド プロシージャではテーブル名のみが取得され、完全修飾名は取得されません。そのため、dbo.prod
のカラムを取得したい場合でも、カラムは常に dbo.prod
ではなく MASAA01.prod
から返されます。
dbo
スキーマにコンフィグレーションする必要がある。
この節では、RDBMS イベント ジェネレータからパブリッシュするメッセージ ブローカ チャネルの作成方法について説明します。3 種類のメッセージ ブローカ チャネルを作成する必要があります。
<?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>
System.out.printIn(System.currentTimeMillis()+"-"+x0);
XML チャネルの場合、型保証付きで XML コンテンツを取得する方法があります。
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");
rowSet.moveToCurrentRow();
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 Workshop のヘルプの「チャネルに対してパブリッシュおよびサブスクライブする」の「メッセージ ブローカ チャネルを作成するには」を参照してください。
WebLogic Integration Administration Console のメッセージ ブローカ モジュールでは、アプリケーションのすべてのメッセージ ブローカ チャネルをモニタおよび管理できます。詳細については、『WebLogic Integration ソリューションの管理』の「メッセージ ブローカ」を参照してください。
データ ソースとメッセージ ブローカ チャネルの作成が完了すると、WebLogic Integration Administration Console で RDBMS イベント ジェネレータを作成し、これらのジェネレータのチャネル ルールを定義できるようになります。
RDBMS イベント ジェネレータの作成およびチャネル ルール定義の詳細については、『WebLogic Integration ソリューションの管理』の「イベント ジェネレータ」を参照してください。
![]() ![]() |
![]() |
![]() |