MySQLとJBossの連携覚え書き

3月 30, 2010

J2EEサーバであるJBossからMySQLへアクセスするための仕組みについて、覚え書き。

J2EE(Java2 Platform, Enterprise Edition)は、ものすごく乱暴な言い方をすると
「非常に大規模な仕様のJavaプラットフォーム」・・・と言っていいのかな・・・
「高級なJava API(関数群)の塊」という表現もあり、のようだ。
本題に入れなくなるので、この辺りはあっさりと。
それからJBossって何、という話も今回は割愛(本題に入れなくなる、、、)。

JBoss – MySQL接続時の仕様
前提として、JBossはJNDIによるネーミングサービスやコネクションプーリング機能を持っている。
J2EEサーバ(ここではJBoss)上のJavaアプリケーションからRDBMSに接続する際は、
アプリケーションプログラムから直接接続するのではなく、JNDIに登録されている
データソース(DataSource)機能を利用する。

メモ
データソースという概念はJDBC 2.0から加わった。データソースの利用によりプロダクト
ごとに異なるJDBCドライバやURLなどの情報を設定ファイルに持ち、アプリケーション上
では共通のデータソースオブジェクトから接続を取得できるようになっている。
またデータソースの設定ファイルを書き換えることでJDBCドライバやデータベースを
切り替えることが可能となり、共通のコードを複数の環境で使用することができる。

JBossはデータソース経由でコネクションプールからConnectionを取得し、MySQLとの
通信を実施する。・・・ものと思われる。
この辺り、ひょっとしたら自分の解釈が微妙に違ってるかもしれないが。

このConnectionは、接続処理が事前に完了している。
具体的には、JBossの起動中にMySQLとの接続は確立される。
接続をプールに保管しておくことにより、アプリケーションプログラムにとっては
時間のかかる接続処理を回避できる、というメリットがある。

ちなみにJBossはデータソースに対応するRDBMS上にテーブルを作成し、その中に
JMS(Java Message Service)等を格納する。ちなみにJMSはJ2EEにおいて標準で
提供されている仕様で、N/W上でメッセージのやり取りをするためのAPI となる。

・・・あぁ〜、本題から外れてしまう・・・

接続時の仕様の話だった。
Connectionを使い終わったらアプリケーション側でConnectionクラスのclose()を
実行し、プールにConnectionを戻す。プールに返却されたConnectionはまた再利用できる。

ちなみに先ほど登場したJNDIとはJava Naming and Directory Interfaceの略で、
Javaでネーミングおよびディレクトリサービスを利用可能にするAPIとなる。
ネーミングサービスとは、で表現される名前と特定のオブジェクトとを関連づけたり、
名前を基に関連づけられたオブジェクトを検索するサービスのこと・・・
といわれても、何だかわからないな(汗)

もう少し具体的な例を挙げると、アプリケーション内で共通して使用する情報
(RDBMSへの接続情報等)を.jsp、 .javaファイルに分散して記述するのではなく
JNDIを利用すれば、情報を一元的に管理できるってことらしい。

これならどうだ。
「Javaアプリケーションがデータベース、メールサーバなどのリソースを見つけるためのAPI」
http://www.javaroad.jp/opensource/js_tomcat8.htm
個人的にはこれが一番分かりやすいような気が。。

やはり本題から外れてしまった。

主な出典
「現場で使えるMySQL」松信嘉範著

Categories: JBoss

No Responses so far | Have Your Say!

Comments are closed.