JSR 322: Java EE Connector Architecture 1.6

Java EE Connector Architecture(JCA)は、Java EEプラットフォームと他のエンタープライズシステムとの相互接続を実現するための標準的な方法を提供するAPIである。Java EE 5で採用されている現行バージョンはJCA 1.5であり、その仕様はJSR 112として標準化されている。

今年後半にリリース予定のJava EE 6に合わせて、このJCAが5年ぶりにバージョンアップされることになった。そのためのJSRが、「JSR 322: Java EE Connector Architecture 1.6」としてJCPに登録されている。

まずJCAについて簡単におさらいしておこう。JCAではJava EEアプリケーションと外部のエンタープライズシステム、たとえばERPアプリケーションやレガシーシステム、データベースなどとの間をリソースアダプタと呼ばれるコネクタによって接続する。このリソースアダプタは通常、各エンタープライズシステムのベンダによって提供され、Java EEアプリケーションに組み込んで利用する。もちろん、独自のリソースアダプタを作成することもできる。

リソースアダプタではセキュリティやトランザクション処理、ライフサイクル管理などがサポートされる。またJCA 1.5からはメッセージインフロー契約という機能が追加され、メッセージ駆動beanを介して非同期なアプリケーション呼び出しを行うことができるようになっている。

実際のプログラミングは、たとえばリスト1のようにJNDI経由でリソースアダプタにアクセスしてコネクションを取得し、通信を行う。この手順はJDBCやJTA(Java Transaction API)などによる接続方法に近いため、初めてでも違和感なく利用できるだろう。

リスト1

InitialContext context = new InitialContext();
ConnectionFactory connectionFactory = 
                 (ConnectionFactory)context.lookup("java:comp/env/......");
Connection connection = connectionFactory .getConnection();

それではJCA 1.6ではどのような拡張が行われる予定なのかを見てみよう。

JCA 1.6における拡張のポイント

JCA 1.6における代表的な変更点として、より一般的なインフローコンテキストの導入が挙げられている。JCA 1.5で導入された新機能の中にワークマネージャー契約 (WorkManager contract) とトランザクションインフローコンテキスト (Transaction Infrow Context) がある。前者の機能によって、アプリケーションサーバの持つスケジューリングやタイマーなどの作業管理機能を、リソースアダプタから利用できるようになった。そしてトランザクションインフローを利用することで、それらの作業をトランザクション的に処理することができるようなっている。

JCA 1.6では、このインフローコンテキストをより一般化された形に拡張するとのことだ。これによってワークマネージャのメカニズムをよりフレキシブルになり、トランザクションインフロー契約からの独立性も高まるとしている。

また、EoD(Ease of Development)にも力を入れるとされている。たとえば、Connector APIにヘルパークラスやアノテーションを用意することで、より簡単にリソースアダプタを開発できるようにする。ヘルパークラスやアノテーションの利用は昨今のJava EEのプログラミングモデルとしてスタンダードなものとなっており、JCAもそれに従う形だ。

その他、JCA 1.6では1.5の次のエリアに対して修正や拡張が加えられる予定となっている。

  • サービスの品質
  • 接続の失敗に対するエラーハンドリング
  • メッセージのバッチ処理
  • インバウンドCCI (Common Client Interface)のInteractionSpecインタフェース
  • 設定プロパティの処理
  • インバウンドおよびアウトバウンドの一貫性
  • リソースアダプタにおけるTransactionSynchronizationRegistryの使用
  • スタンドアロンリソースアダプタのためのクラスローディング
  • JBI(Java Business Integration)やSCA(Service Component Architecture)といった技術との関連を明確化

JCA 1.6は2007年12月にJSRが提出/承認され、エキスパートグループが編成された。スペックリードはSun MicrosystemsのBinod PG氏とSivakumar Thyagarajan氏が務める。今後、詳細な仕様の策定が進められ、Early Draftの公開が5月、最終リリースはJava EE 6に合わせた第4四半期の予定。参照実装はGlassfishプロジェクトよりJava EE 6の一部として提供される。