第3回 GeronimoカーネルとGBeanアーキテクチャApacheの戦士Geronimoが持つ実力

Tomcat、Jetty、ActiveMQ、OpenEJBなど、至難と思われたさまざまなオープンソースミドルウェアの柔軟な統合を実現したGeronimo。今回は、その統合を強力に支えるGeronimo特有の柔軟なアーキテクチャを紹介。統合用部品GBeanの疎結合連携を実現するDIカーネル機構などを通して、Geronimoが秘めた本当のポテンシャルを体験しよう。

» 2007年03月26日 08時38分 公開
[中山清喬、杉田直哉,ITmedia]
PR

この連載のバックナンバーは以下の通りです。併せてお楽しみください。

連載第1回:勇気を出してジェロニモとお近づきになってみる

連載第2回:WTPを使用したWebアプリケーション開発


Geronimoアーキテクチャ

 各方面で紹介されはじめたGeronimoですが、特徴としてその内部アーキテクチャが挙げられることも多いようです。ここからはGeronimoのポテンシャルを最大限に引き出すべく、その内部を探っていきます。

 Geronimoは、図1にあるような「カーネル」と「周辺コンポーネント」によるマイクロカーネルアーキテクチャ*を採用しています。カーネルはコンポーネント管理に専念する一方、EJBを動作させたりMQ*電文を交換したりという具体的機能は各周辺コンポーネントが担当します。わたしたちがよく知るJ2EEサーバとしてのディストリビューションは、カーネルの周囲にTomcatなどを組み合わせた一統合例に過ぎず、ほかの製品や独自プログラムを統合した「My Geronimo」も実現可能なのです。

 このようなアーキテクチャ構成のキーとなるのは、GBeanとデプロイメントプランです。

図1 図1 Geronimoのマイクロカーネル構造

部品化用ブロックGBean

 Geronimoの世界の外にあるミドルウェアやコンポーネントのGeronimoへの統合は、その橋渡し役となるGBeanクラスを開発/デプロイすることで実現します。Tomcatなどのミドルウェアはもちろん、その上にデプロイされたアプリケーションなども内部的には1つのGBeanとして存在します。

 開発者は、ほかのGBeanに対する依存関係や通常外部定義するような各種設定値をハードコードする必要はありません。それらは後述のプランによってデプロイ時に指定します。

デプロイメントプラン

 GBeanを実際にデプロイする際には、デプロイメントプラン(以後、プラン)と呼ばれる情報が必要となり、通常プランファイルと呼ばれるXMLの形を取ります(リスト1)。プランには以下の2つの重要な役割があります。


<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 汎用型プランファイルの例
  • コンフィギュレーションの定義

 1つ以上のGBeanの論理的なグループがコンフィギュレーション*です。起動停止やデプロイなどはすべてこの単位で行われます。プランでは、このコンフィギュレーションを定義し、どのGBeanをグループに属させるかを記述します。

  • 各GBeanへの設定情報の流し込み

 GBeanの外出し設定情報を、プランファイル内部で記述できます。単なる設定情報だけでなく、ほかのGBeanへの依存情報なども指定できます。

 なお、プランファイルのスキーマ*は1つではありません。ミドルウェア統合には汎用型プラン形式を、J2EEアプリケーションの場合はgeronimo-web.xmlなどの特化した形式を利用します。

Geronimoへの統合手順

 いかなるコンポーネントも、Geronimoに統合するには次の3ステップが必要となります。

  1. GBeanクラスの開発
  2. プランファイルの準備
  3. 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となるモジュールクラスをビルドするようである。


本記事は、オープンソースマガジン2006年5月号「注目のJ2EEサーバー Apacheの戦士Geronimoが持つ実力」を再構成したものです。


著者紹介

日本アイ・ビー・エム システムズエンジニアリング株式会社

万仲龍樹・中山清喬・杉田直哉・津田嘉孝

日本アイ・ビー・エム システムズ・エンジニアリング株式会社(ISE)は、日本アイ・ビー・エムグループにおけるSE技術者の専門家集団として1992年7月に設立された。

発足以来、IBM製品を中心とした難易度の高い複雑なシステム構築や先進技術の適用場面において、卓越したITスキルによりお客様と開発現場を支援してきた。

近年は、仮想化技術・グリッドコンピューティング・Web 2.0・オープンソースソフトウェア等々の先進技術分野での支援も展開している。


Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ