3.7.2 DB Connector for Reliable MessagingとReliable Messagingによる接続の特徴
ここでは,DB Connector for Reliable MessagingとReliable Messagingによる接続の特徴について説明します。
- 〈この項の構成〉
(1) DB Connector for Reliable MessagingおよびReliable Messagingによる処理の概要
DB Connector for Reliable Messagingを使用してReliable Messagingと連携することによって,データベース上のキューに対するJMSインタフェースによるメッセージの送受信や,メッセージによって起動されるMessage-driven Beanの呼び出しなどができます。
DB Connector for Reliable MessagingとReliable Messagingによってデータベースに接続する場合,JMSインタフェースとJDBCインタフェースによるアクセスで使用する物理コネクションを共有することによって次のことが実現できるため,処理性能が向上します。
-
ローカルトランザクションの適用
-
グローバルトランザクションの1フェーズコミット
サーブレット,JSP,または,Enterprise Beanから,JMSインタフェースとJDBCインタフェースを使用して,データベースにアクセスするときのDB Connector for Reliable MessagingおよびReliable Messagingの処理の概要を次の図に示します。
JMSインタフェースによるアクセスはReliable Messagingを経由して,JDBCインタフェースによるアクセスはDB Connector for Reliable Messagingを経由して,データベースにアクセスします。なお,Reliable Messagingでは,キューをデータベース上に構築するため,内部的にJDBCインタフェースによるデータベースへのアクセスを使用します。そのため,JDBCドライバを経由してデータベースにアクセスします。
また,DB Connector for Reliable Messagingでは,Reliable Messagingを経由して,Reliable Messagingと物理コネクションを共有してデータベースにアクセスします。これらのリソースアダプタでは,Reliable Messaging用のコネクションプールを利用してコネクションを取得します。これによって,物理コネクションの共有を実現しています。
(2) DB Connector for Reliable MessagingとReliable Messagingによるデータベース接続の構成
DB Connector for Reliable MessagingとReliable Messagingを使用して接続する場合のリソースの構成パターンについて説明します。ここでは,次に示す場合のリソースの構成について説明します。
-
JMSインタフェースだけを使用する場合
-
JMSインタフェースとJDBCインタフェースで同一データベースにアクセスする場合
-
JMSインタフェースとJDBCインタフェースで異なるデータベースにアクセスする場合
-
Message-driven Beanを使用する場合
なお,JMSインタフェースとJDBCインタフェースで同一データベースにアクセスする場合と,Message-driven Beanを使用する場合は,コネクションの共有ができます。ただし,コネクションを共有するためには,次に示す前提条件を満たしている必要があります。
- コネクション共有の前提条件
-
-
ユーザプログラムで,同一トランザクション内でJMSインタフェースによるデータベース上のキューへのアクセスと,JDBCインタフェースによるテーブルへのアクセスを実施する。
-
Reliable Messagingによってキューを構築するデータベースと,テーブルにアクセスするデータベースが同じである。
-
JMSインタフェースよるデータベース上のキューへのアクセスと,JDBCインタフェースによるデータベース上のテーブルへのアクセスで使用するセキュリティ情報(ユーザ名,パスワード)と,サインオンの方式が同じである。
-
DB Connector for Reliable MessagingとReliable Messagingへのリファレンスを設定しているJ2EEアプリケーションで,DDの<res-sharing-scope>タグの値に「Shareable」が設定されている。
- 注意事項
-
-
JDBCインタフェースだけを使用してデータベースにアクセスする場合,リソースアダプタとしてDB Connectorを使用してください。
-
コネクション共有の前提条件を満たさない場合,DB Connector for Reliable MessagingとReliable MessagingによってJMSインタフェースとJDBCインタフェースの両方を使用したデータベースへのアクセスはしないでください。この場合,「(c) JMSインタフェースとJDBCインタフェースで異なるデータベースにアクセスする場合」に示す構成にして,テーブルへのアクセスにはDB Connectorを使用してください。
-
-
(a) JMSインタフェースだけを使用する場合
ユーザプログラムでデータベース上のキューに対してだけアクセスする場合,次の図に示す構成で使用します。
(b) JMSインタフェースとJDBCインタフェースで同一データベースにアクセスする場合
ユーザプログラムでJMSインタフェースとJDBCインタフェースを使用してデータベースにアクセスする場合,コネクション共有の前提条件を満たしているときは,2種類のインタフェースで同一のデータベースにアクセスできます。このとき,次の図に示す構成で使用します。
この構成にすることによって,コネクションの共有によるトランザクション処理性能の向上とリソースの有効利用を実現できます。
(c) JMSインタフェースとJDBCインタフェースで異なるデータベースにアクセスする場合
ユーザプログラムでJMSインタフェースとJDBCインタフェースを使用してデータベースにアクセスする場合,コネクション共有の前提条件を満たしていないときは,インタフェースごとに,異なるデータベースにアクセスする構成にする必要があります。このとき,次の図に示す構成で使用します。
データベース上のキューへのアクセスには,DB Connector for Reliable MessagingとReliable Messagingを使用します。また,データベース上のテーブルへのアクセスには,DB Connectorを別途用意して使用する必要があります。
(d) Message-driven Beanを使用する場合
Message-driven Beanを使用する場合,次の図に示す構成で使用します。コネクションの共有条件を満たす場合には,DB Connector for Reliable MessagingのJDBCインタフェースを使用して,Message-driven BeanとJDBCインタフェースでコネクションを共有することができます。
なお,Message-driven Beanを使用する場合,関連づけるリソースアダプタがReliable Messaging 01-01以降のときは,グローバルトランザクションおよびローカルトランザクションを使用できます。Reliable Messaging 01-00のリソースアダプタを使用する場合は,グローバルトランザクションを使用する必要があります。このとき,ローカルトランザクションを使用することはできませんが,コネクション共有の前提条件を満たしていれば,グローバルトランザクションは1フェーズで決着されます。