About

ドキュメント

プロジェクト文書

Built by Maven

概要

JCA

JCA (J2EE Connector Architecture) は, RDBMSやMOM (Message-Oriented Middleware) をはじめ, CICSなどのメインフレーム,TUXEDOなどのTPモニタ,SAPなどのERP等への接続を包括的に扱う仕様で, JavaEE仕様の一部となっています.

JCAは,JavaEEアプリケーションと任意のEIS (Enterprise Information System) を自在に接続することを目的とした仕様です. EIS とは,RDBMSやMOM,メインフレーム,TPモニタ,ERPなどの総称です. JCA以前は,RDBMSに対してはJDBC,MOMに対してはJMSというように,EISの種類毎に個別のAPIが定められてきました. また,標準化されていないEISに対してはベンダ固有のAPIが提供されてきました. その場合,アプリケーションサーバはトランザクション制御やコネクションプーリングなどを個々のAPI毎に提供しなくてはならなくなります. そこで,様々なEISへの接続を包括的に扱うために定められた仕様がJCAです.

JCAの主要な構成要素を次の図に示します.

JCA仕様では,EISへの接続を提供するコンポーネントは「リソースアダプタ」と呼ばれます. リソースアダプタはJDBCドライバと同じような位置づけになりますが,Resource Adapter Archive (Rar) ファイルにアーカイブされ, アプリケーションサーバに簡単にデプロイすることができるコンポーネントです.

アプリケーションサーバとリソースアダプタの間にはJCA Service Provider Interface (SPI) というAPIが定められています. SPIを通じて,アプリケーションサーバはリソースアダプタが提供する接続をプーリングしたり,トランザクション制御を行ったりすることができます.

アプリケーションとリソースアダプタの間にはJCA Common Client Interface (CCI) というAPIが定められていますが, JDBCやJMS,ベンダ固有のAPIなど,任意のAPIを利用することもできます. アプリケーションとリソースアダプタ間のAPIと,アプリケーションサーバとリソースアダプタ間のAPIが独立しているのがJCAの特徴です.

S2JCA

S2JCAは,JCA仕様の中でアプリケーションサーバに相当する実装を提供するプロダクトで, コネクションプーリングやJTAトランザクションとの連携を提供します.

S2JCAを使用することにより,フルスペックのアプリケーションサーバを使わなくても,Tomcatやスタンドアロンのアプリケーションから リソースアダプタを用いて様々なEISに接続することが可能となります.

アウトバウンド通信とインバウンド通信

JCA仕様では,EISとの間の通信をアウトバウンドとインバウンドという2つのモデルに分類しています. S2JCAは,アウトバウンド通信とインバウンド通信の両方をサポートします.

アウトバウンド通信

アウトバウンド通信 (outbound communication) とは,アプリケーション側が主体となって通信を行う形態のモデルです. EISへの接続は,アプリケーションの要求によって確立されます. RDBMSへの接続ならjavax.sql.DataSource#getConnection(), MOMへの接続ならjavax.jms.ConnectionFactory#getConnection(), JCAのCCI (Common Client Interface) を利用した接続ならjavax.resource.cci.ConnectionFactory#getConnection()等のAPIを アプリケーションが呼び出すことで,リソースアダプタがEISへの接続を確立します. その際,アプリケーションサーバやS2JCAはコネクションをプーリングしたり,JTAトランザクションと関連づけたりします.

確立したコネクション上での操作もアプリケーション側から行います. RDBMSへの接続であればSQLの実行,MOMへの接続であればメッセージの送信や受信などは,全てアプリケーションからの 要求により実行されます.

このように,コネクションの確立やコネクションに対する操作がアプリケーションを主体として行われるのがアウトバウンド通信です.

インバウンド通信

インバウンド通信 (inbound communication) とは,リソースアダプタ (EIS) 側が主体となって通信を行う形態のモデルです. EISとの接続はリソースアダプタによって確立されます.

MOMとの接続であれば,インバウンド通信によってリソースアダプタがメッセージを受信すると, javax.jms.MessageListener#onMessage(Message)を実装したアプリケーションに通知されます.

このように,コネクションの確立やコネクションに対する操作がリソースアダプタを主体として行われるのがインバウンド通信です.