写真1●ダウンロードしたファイルを展開
写真1●ダウンロードしたファイルを展開
[画像のクリックで拡大表示]
写真2●Geronimoのインストール
写真2●Geronimoのインストール
[画像のクリックで拡大表示]
写真3●インストール成功
写真3●インストール成功
[画像のクリックで拡大表示]
写真4●Web管理コンソール
写真4●Web管理コンソール
[画像のクリックで拡大表示]
リスト1●データベース・コネクション・プールを利用するため設定方法(部分,<a href="list1.txt" target="_blank">全文表示</a>)
リスト1●データベース・コネクション・プールを利用するため設定方法(部分,<a href="list1.txt" target="_blank">全文表示</a>)
[画像のクリックで拡大表示]
写真5●DBコネクション・ウィザード
写真5●DBコネクション・ウィザード
[画像のクリックで拡大表示]
写真6●Webコンソールからのデプロイ
写真6●Webコンソールからのデプロイ
[画像のクリックで拡大表示]

 2003年に開始された本連載の第1回目 Apache Software Foundation(以降ASF)がJ2EEアプリケーション・サーバー Geronimo の開発を開始したと紹介した。

 その Geronimo の バージョン1が2006年1月5日,約2年の開発期間を経てついに正式リリースされた。IBMがWebSphere Application Server Community Edition のベースに Geronimoの採用を発表するなど,多くの注目が集まっている。今回はこのGeronimoを紹介したい。

ApacheがJ2EE APサーバーを開発する2つの意味

 あらためて書くまでもないが,GeronimoはオープンソースのJ2EEアプリケーション・サーバーだ。だた,これは決して新しいことではない。既に世の中にはJBossを筆頭として多くのオープンソースのJ2EEアプリケーション・サーバーが存在している。しかし,あえてASFでアプリケーション・サーバーを開発するのには2つの大きな意義がある。

 1つは,アパッチライセンスのもとで配布可能となることだ。

 アパッチライセンスはご存知のとおり,非常に自由度の高いライセンスだ。アパッチのプロダクトを組み込んだり,一部を変更したコマーシャルプロダクトを販売しても,すべてをオープンソース化する必要はない。すなわち,Geronimoをベースに新しいアプリケーション・サーバーを開発し,それを販売する事も可能となるのだ。

 そしてもう1つは,いままでのアプリケーション・サーバーにない新しいアーキテクチャを採用していることだ。

 Geronimoは自身の機能を多くのオープンソース・プロダクトによって構成している。そしてそれらが組み込みやすいようモジュール化アーキテクチャを採用しており,必要に応じてモジュールの追加,削除,入れ替えが可能となっている。よって,新しいJavaEEの仕様やAPIにも柔軟に対応できるだけでなく,新しい機能の追加なども容易に行えるのだ。

 また,必要最小限のモジュールのみで構成した非常にシンプルなサーバーを構成することも可能となる。この2つが合わさることで,付加価値を追加したり,特定のモジュールを入れ替えて機能強化をはかったGeronimoを販売することも容易に行えるようになるのだ。

GeronimoがサポートしているAPI

 気になるGeronimoのスペックだが,まずは仕様面から見ていこう。GeronimoがサポートしているAPIとそのバージョンを下記に示す。

  • Servlet2.4 / JSP2.0
  • Enterprise JavaBeans(EJB) 2.1
  • J2EE Connectors 1.5
  • Java DataBase Connectivity(JDBC) 3.0)
  • Java Message Service(JMS) 1.1
  • JavaMail 1.3
  • Java Authorization Contract for Containers(JACC) 1.0
  • Java Transaction API(JTA) 1.0
  • Java Management Extensions(JMX) 1.2

     Geronimoは開発開始が2003年ということもあり,最新のJavaEE5の仕様をすべてサポートしているという訳ではない。基本的には現時点でのJ2EE1.4のスペックをすべて満たしているのみだ。実際,GeronimoはJ2EE1.4 TCK(Technology Compatibility Kit) をパスしており,J2EE1.4対応のアプリケーション・サーバーとしては仕様面においては安心して利用することができるだろう。

     JavaEE5のプレビュー仕様がリリースされており,一部のJ2EEアプリケーション・サーバーではその実装も開始され始めているこの時期においては,新しい仕様を試してみるという利用方法に使えないのは残念である。この点においては GlassFish に軍配があがる。ただし,前述したようにモジュールの入れ替えによって簡単に新しい機能を追加可能となるため,JavaEE5への対応もそう遠くない時期に行われるだろう。

     上記のほかにも Webサービス関連のAPIである JAXP, JAX-RPC, JAXR, SAAJ などがサポートされており,Webサービス・アプリケーションにも対応している。

    Geronimoを構成する40以上のモジュール

     そして,これらの機能は前述したように多くのモジュールによって構成されおり,Geronimoバージョン1は実に40以上のモジュールから構成されている。それらモジュールの多くは既存のオープンソース・プロダクトから構成されている場合がほとんどだ。すなわち,GeronimoはJ2EE関連のオープンソース・プロダクトの集大成と言えるだろう。ベースとなっている代表的なオープンソース・プロダクトを表1に示す。

    表1●Geronimoを構成する代表的なオープンソース・プロダクト

    プロダクト 機能
    OpenEJB(http://www.openejb.org/) EJB コンテナ
    Jetty(http://www.mortbay.org/jetty/index.html) Web コンテナ
    Tomcat(http://jakarta.apache.org/tomcat/) Web コンテナ
    ActiveMQ(http://activemq.codehaus.org/) JMS プロバイダ
    TranQL(http://tranql.codehaus.org/) データベース接続プールアダプタープロバイダ
    HOWL(http://howl.objectweb.org/) トランザクションおよびロギングプロバイダ
    Axis(http://ws.apache.org/axis/) Webサービスプロバイダ
    CGlib(http://cglib.sourceforge.net/) バイトコード操作ライブラリ
    Derby(http://incubator.apache.org/derby/) 組み込みデータベース
    Jakarta Commons(http://jakarta.apache.org/commons/) 共通ライブラリ
    MX4J(http://mx4j.sourceforge.net/) Java Management Extensions(JMX)エンジン
    Velocity(http://jakarta.apache.org/velocity/) テンプレートエンジン
    XMLBeans(http://xmlbeans.apache.org/) XMLバインディングライブラリ

     多くのプロダクトが利用されていることがお分かり頂けるだろう。また,Webコンテナが2つ用意されていることに気づかれただろうか。GeronimoはJettyとTomcatの2種類のWebコンテナをサポートしており,利用時には好みや目的に合わせてどちらかを選択するようになっている。配布形式にも JettyバージョンとTomcatバージョンが用意されており,設定変更などをせずに利用できるようになっている。

     では早速,Geronimoを起動してみよう。