JavaCompute ノードに組み込まれている Java™ コードからデータベースにアクセスします。
MbSQLStatement を使用してアクセスするデータベースは、グローバル整合済みトランザクションに参加することができます。 他の場合はすべて、データベース・アクセスをグローバル整合することはできません。
MbSQLStatement クラスは、ESQL および ODBC を使用した完全なトランザクション・データベース・アクセスを提供します。 ブローカー・リソース・マネージャーは、MbSQLStatement の使用時にデータベース・アクセスを調整します。 グローバル整合は、分散プラットフォームでは WebSphere® MQ から提供され、z/OS® では RRS から提供されます。 必要な ODBC リソースのセットアップ方法の詳細は、データベースへの ODBC 接続の使用可能化を参照してください。
MbMessage newMsg = new MbMessage(assembly.getMessage()); MbMessageAssembly newAssembly = new MbMessageAssembly(assembly, newMsg); String table = "dbTable"; MbSQLStatement state = createSQLStatement( "dbName", "SET OutputRoot.XMLNS.integer[] = PASSTHRU('SELECT * FROM " + table + "');" ); state.setThrowExceptionOnDatabaseError(false); state.setTreatWarningsAsErrors(true); state.select( assembly, newAssembly ); int sqlCode = state.getSQLCode(); if(sqlCode != 0) { // Do error handling here } getOutputTerminal("out").propagate(assembly);
JDBC 呼び出しも含め、JavaCompute ノード用に作成したコード内で、標準の Java API にアクセスすることができます。 したがって、JDBC API を使用して、データベースへの接続、データベースを対象とした書き込みまたは読み取り、およびデータベースからの切断を行うことができます。 ブローカーでは、この環境で Type 2 と Type 4 の両方の JDBC ドライバーを JDBC 接続コードから呼び出すことができますが、ブローカーはこれらのドライバーを提供しません。 このドライバーは、データベース・ベンダーから入手する必要があります。
この方法でデータベースにアクセスすることを選択した場合、トランザクションの管理のためのサポートはブローカーから一切提供されません。データベースの変更のローカル・コミットおよびロールバックは、コードで管理する必要があります。 また、接続のライフ・サイクル、接続スレッドの親和性、および接続プールもコードで管理する必要があります。 さらに、そのような接続が原因で、ブローカーによって確立された接続が妨害を受けないようにするためにこの技法を使用する場合には、データベースへのアクセスもモニターする必要があります。 特に、ESQL からデータベースにアクセスするために、メッセージ・フロー内で使用中の ODBC 接続に、Type 2 ドライバーがブリッジすることに注意してください。