レベル: 初級 万仲龍樹・中山清喬・杉田直哉・津田嘉孝, 日本アイ・ビー・エム システムズエンジニアリング株式会社
2007年 05月 25日 Tomcat、Jetty、ActiveMQ、OpenEJBなど、至難と思われたさまざまなオープンソースミドルウェアの柔軟な統合を実現したGeronimo。今回は、その統合を強力に支えるGeronimo特有の柔軟なアーキテクチャーを紹介します。統合用部品GBeanの疎結合連携を実現するDIカーネル機構などを通して、Geronimoが秘めた本当のポテンシャルを体験してみましょう。
Geronimoアーキテクチャー
各方面で紹介されはじめたGeronimoですが、特徴としてその内部アーキテクチャーが挙げられることも多いようです。ここからはGeronimoのポテンシャルを最大限に引き出すべく、その内部を探っていきます。
Geronimoは、図1にあるような「カーネル」と「周辺コンポーネント」によるマイクロカーネルアーキテクチャー*を採用しています。カーネルはコンポーネント管理に専念し、一方で、EJBを動作させたり、MQ*電文を交換したりという具体的機能は各周辺コンポーネントが担当します。わたしたちがよく知るJ2EEサーバとしてのディストリビューションは、カーネルの周囲にTomcatなどを組み合わせた一統合例に過ぎず、ほかの製品や独自プログラムを統合した「MyGeronimo」も実現可能なのです。
このようなアーキテクチャー構成のキーとなるのは、GBeanとデプロイメントプランです。
図1. Geronimoのマイクロカーネル構造
部品化用ブロックGBean
Geronimoの世界の外にあるミドルウェアやコンポーネントのGeronimoへの統合は、その橋渡し役となるGBeanクラスを開発/デプロイすることで実現します。Tomcatなどのミドルウェアはもちろん、その上にデプロイされたアプリケーションなども内部的には1つのGBeanとして存在します。
開発者は、ほかのGBeanに対する依存関係や通常外部定義するような各種設定値をハードコードする必要はありません。それらは後述のプランによってデプロイ時に指定します。
デプロイメントプラン
GBeanを実際にデプロイする際には、デプロイメントプラン(以後、プラン)と呼ばれる情報が必要となり、通常プランファイルと呼ばれるXMLの形を取ります(リスト1)。プランには以下の2つの重要な役割があります。
リスト1 汎用型プランファイルの例
<configuration configId="deployment/echoserver"
xmlns="http://geronimo.apache.org/xml/ns/deployment">
<gbean name="MyGBean" class="com.ibm.jp.ise.MyGBean">
<attribute name="depth">32</attribute>
<attribute name="targetName">DefaultTarget</attribute>
</gbean>
<gbean>
:
: |
- コンフィギュレーションの定義 1つ以上のGBeanの論理的なグループがコンフィギュレーション*です。起動停止やデプロイなどはすべてこの単位で行われます。プランでは、このコンフィギュレーションを定義し、どのGBeanをグループに属させるかを記述します。
- 各GBeanへの設定情報の流し込み GBeanの外出し設定情報を、プランファイル内部で記述できます。単なる設定情報だけでなく、ほかのGBeanへの依存情報なども指定できます。
なお、プランファイルのスキーマ*は1つではありません。ミドルウェア統合には汎用型プラン形式を、J2EEアプリケーションの場合はgeronimo-web.xmlなどの特化した形式を利用します。
Geronimoへの統合手順
いかなるコンポーネントも、Geronimoに統合するには次の3ステップが必要となります。
- GBeanクラスの開発
- プランファイルの準備
- Deployerツールによるデプロイ
ミドルウェア統合などの場合
前記3手順すべてを実施する必要があります。GBeanクラスを開発し、プランファイルは汎用型スキーマに従って記述します(手順は後述)。最後にミドルウェアのコードやGBeanを含むJARと、プランファイルを指定してデプロイを実施します。
java -jar deployer.jar deploy mw.jar mw.plan |
J2EEアプリケーションの場合
WARやEARも、GBeanとしてデプロイされますが、GBean開発の手順は省略できます*。J2EE用スキーマに従い記述したプランファイルをデプロイ時に指定することも可能ですが、省略するとEARやWAR内部に含まれるものが自動的に利用されます。
コンフィギュレーションを起動したい場合、次のようなコマンドを与えます(複数指定可能)。
java -jar server.jar myconfig-id1 myconfig-id2 …… |
各コンフィギュレーションは、グループ配下のすべてのGBeanを起動します(停止時も同様)。
次回は
GBeanに活用されているDI(Dependency Injection)の仕組みを解説します。
このページで出てきた専門用語
-
マイクロカーネルアーキテクチャー
- 小さくシンプルで安定したカーネルが、機能豊富で交換可能な部品をつなぎ合わせることで高い柔軟性を保つアーキテクチャー。
-
MQ
- Message Queueing。連携するアプリケーション間でデータ交換をする際、キューを使って非同期にデータ交換を行う方式。
-
コンフィギュレーション
- コンフィギュレーションはクラスローダーの単位にもなります。また、プランファイル内のparentId属性を用いて親子関係を構築できます。
-
プランファイルのスキーマ
- Geronimo公式サイトにXML Schemasとして掲載されています。よく用いるのは汎用型プランとJ2EE関連プランでしょう。
-
GBean開発の手順は省略できます
- ソースを見たところ、ディストリビューションに含まれるTomcatModuleBuilderやJettyModuleBuilderが、デプロイ時にGBeanとなるモジュールクラスをビルドするようです。
参考文献
著者について  | |  | 万仲龍樹・中山清喬・杉田直哉・津田嘉孝
日本アイ・ビー・エム システムズエンジニアリング株式会社
日本アイ・ビー・エム システムズ・エンジニアリング株式会社(ISE)は、日本アイ・ビー・エムグループにおけるSE技術者の専門家集団として1992年7月に設立されました。発足以来、IBM製品を中心とした難易度の高い複雑なシステム構築や先進技術の適用場面において、卓越したITスキルによりお客様と開発現場を支援してきました。近年は、仮想化技術・グリッドコンピューティング・Web 2.0・オープンソースソフトウェア等々の先進技術分野での支援も展開しています。 |
記事の評価
|