オープンソースの Javaアプリケーションサーバといえば TomcatJetty が有名ですが、これらは膨大な機能をもつ Java Enterprise Edition(Java EE)のうち Javaサーブレット及び周辺のAPIのみを提供するサブセットの実行環境に過ぎません。

GlassFish Server Open Source Editionはフルセットの Java EE環境を提供するオープンソースのアプリケーションサーバです。Walbrixは この GlassFishを Java EEアプリケーションの実行環境としてすぐに利用できるよう構築された仮想アプライアンスを提供します。

商用の Java EE製品としては JBoss(Red Hat)、WebLogic(Oracle)、WebSphere(IBM)などが知られています。GlassFishにもかつて商用版が存在しましたが商用ライセンスは WebLogicに一本化されました

通常 GlassFishは Tomcatと同様 8080番のポートでアプリケーションへのアクセスを提供しますが、Walbrix版 GlassFishは Apache Webサーバと AJPプロトコルで連携することにより通常の HTTPポートである80番で各アプリケーションにアクセスできるようセットアップされています(管理コンソールのポートは通常通り4848番となります)。

GlassFishに Jenkinsをインストールする

GlassFish自体はアプリケーションサーバといってアプリケーションを動作させる土台に過ぎないので、その上に何らかのアプリケーションをインストール(デプロイ)して利用することになります。実用的な例として、ここでは有名な CI(継続的インテグレーション)ツールである Jenkinsを GlassFishにデプロイして利用を開始するまでの流れを解説します。

Jenkinsのダウンロード

Javaで作られた Webアプリケーションは Java Web Archive(俗にwarファイル)と呼ばれる形式のファイルになっています。細かいことを抜きにして言えば、Jenkinsの warファイルをダウンロードして GlassFishにアップロードすれば GlassFish上で Jenkinsが利用できるようになります。

実をいうと Jenkins自体は Javaの実行環境さえあればアプリケーションサーバを用いずに単独でも起動出来るように作られていますが、アプリケーションサーバを用いるのと用いないのとではそれぞれメリット・デメリットがあります。

Jenkinsの warファイルは http://jenkins-ci.org でダウンロードできます。warファイルのダウンロード用リンクがダイレクトに配置されているので迷うことはないはずです。

GlassFish仮想マシンの作成

Walbrix上で GlassFishの仮想マシンを作成します。Jenkinsを動作させるには、メモリの割り当てを最低でも 384MBにしておく必要がありました。

Jenkinsのwarファイルをアップロード

GlassFishの仮想マシンが起動したら、LAN内の端末から Webブラウザでアクセスします。仮想マシン名が glassfish だとしたら URLは Windowsからなら http://glassfish、Macや Linuxなら http://glassfish.local になります。

Linuxで .localのつくホスト名を動的に解決するには、avahi-daemonが起動していて かつ nsswitch.confで mdnsのnssモジュールが有効になっている必要があります。

ページには管理画面へのリンクがありますので、クリックして管理画面に移動します。この管理画面は Safariでは利用できないので注意してください。

管理画面のツリー階層から「アプリケーション」を選択し、「デプロイ」ボタンをクリックするとアプリケーションをデプロイするためのフォームが表示されます。

先ほどダウンロードした jenkins.war を「サーバーにアップロードされるパッケージ・ファイル」として選択し、仮想サーバー "server" を選択状態にして OKを押して下さい。

アプリケーションのデプロイが完了すると一覧に jenkins が現れるはずです。

Jenkinsの利用開始

デプロイされた Jenkinsにアクセスしてみましょう。アプリケーションのデプロイフォームにあった「コンテキスト・ルート」欄に入力されていた内容が URLの一部になります。GlassFishの仮想マシン名が glassfishだとすると、いまデプロイした Jenkinsの URLは http://glassfish/jenkins/ (http://glassfish.local/jenkins/) になります。

最初のアクセスなので初期化処理が走り、しばらくすると Jenkinsのメイン画面が表示されます。

warファイルで提供されている Java EEアプリケーションを GlassFishへ簡単にデプロイ出来ることがおわかりになったと思います。

もっとも、(Jenkinsでは組み込みのデータベースを使用するため不要なのですが)他の Java EEアプリケーションでは MySQLなどの外部データベースを要求するほかアプリケーションサーバ側でデータソース(外部データベースへの接続情報)の設定を先にしなければならないのが一般的です。その作業を簡単にするため、Walbrix版 GlassFishでは MySQL、PostgreSQL、H2 Databaseの JDBCドライバをあらかじめアプリケーションサーバのクラスパスに配置してあります。

外部データベースやデータソース設定を必要としない Java EEアプリケーションとしては他にも GitBucket などがあります。