JCA 入門記 Introduction

すっかり技術ネタがなくなってしまったこの日記.このままじゃいかんということで,とりあえず JCA にでも入門してみるテスト.でも Hibernate みたいじゃなくて,EJB 3.0 (Early Draft) の時みたいに軽めで.
参考書は「J2EE Connector Architecture Specification Version 1.5」です.もうバージョン 1.5 なんですね.はえー.
この「J2EE Connector Architecture」って,「JCA」と略することが多いと思うのですが,この仕様書には「JCA」という表記は一切使われていません.どこかで見た「J2C」も.略しちゃいけないの? でも面倒なので「JCA」でいっちゃお.
ということで,始まり始まりぃ〜♪


1. Introduction
新しいシステムは J2EE 上で開発すればいいわけですが,昔からのシステムというのも存在するわけで,それらが連携できなくてはなりません.
そのために,J2EE な世界と既存の世界 (Enterprise Information System 略して EIS) とを双方向につなげるための標準が JCA とのことです.


1.1 Overview
JCA は,次のものを提供するようです.

  • EIS とアプリケーションサーバを統合するメカニズム.たぶんサービスプロバイダインタフェース (SPI) と呼ばれる.
  • J2EE 上のアプリケーションが EIS と対話するための共通クライアントインタフェース (CCI).

EIS のベンダは,「リソースアダプタ」を提供します.「リソースアダプタ」は,EIS と接続するためのドライバで,アプリケーションサーバに「プラグイン」出来ちゃうしろものらしいです.
この仕様のおかげで,アプリケーションサーバのベンダは様々な EIS 製品を,EIS ベンダは様々なアプリケーションサーバ製品をサポートすることが出来るようになるとのことです.


1.2 Scope
JCA 1.0 は次の範囲を規定していたとのこと.

  • アプリケーションサーバと EIS 間のシステムレベルの規約.コネクション管理やセキュリティ,トランザクションなど.
  • 共通クライアントインタフェース (CCI).
  • リソースアダプタのパッケージングおよびデプロイの規約.

そして JCA 1.5 では,次のように肥大化したようです.

  • ライフサイクルの規約.アプリケーションサーバがリソースアダプタのライフサイクルを管理できるようになったみたいです.
  • 作業管理 (work management) の規約.リソースアダプタが独自のスレッドを持って自分の作業を行えるようになったみたいです.
  • トランザクションの受け入れ規約.EIS 側が制御するトランザクションアプリケーションサーバに伝播することが出来るようになったみたいです.
  • メッセージの受け入れ規約.JMS など特定のメッセージング技術によらず,様々な非同期メッセージングをリソースアダプタからアプリケーションサーバへ通知することが出来るようになったみたいです.
  • パッケージングでリソースアダプタの種類を記述できるようになったみたいです.

っていうか,バージョン 1.0 の次は 1.5 だってこと? 途中飛んでるじゃん! すげーバージョンアップ速いと思っちゃったよ!!


1.3 Target Audience
このドキュメントの対象.


1.4 JDBC and Connector Architecture
実は RDBMS も EIS の一つ.じゃあ JDBCJCA の関係は?
どうやら,JCA が対象とするのは RDBMS 以外の EIS ということらしいです.
特に CCI では,RDBMS 以外の EIS を透過的に扱えるような API を提供することが目標みたいな.
一方で,JDBCJCA の SPI との関わりが JDBC 3.0 の仕様書に記述されているようです.JDBC ドライバをリソースアダプタとして提供するとかってことみたい?
強引にまとめると,RDBMS を含めた EIS とアプリケーションサーバの接続は JCA SPI で規定され,RDBMS とアプリとの APIJDBC で,RDBMS 以外の EIS とアプリとの APIJCA CCI で規定されているということではないかと.


以下,「1.5 Organizatin」から「1.10 Acknowledgements for Version 1.0」まで省略.っていうか今日はここまで.
ともあれ (JW),リソースアダプタと CCI,SPI があるってことを覚えておけばよさげ♪