Recent Posts

RSS Feeds

glassfishとtomcatの違い_part_2_配備編


さて、今日は昨日に引き続き比較を行って行きたいと思います。

今日は、作成したアプリケーションの配備(デプロイ)・配備解除
(アンデプロイ)方法の違いについて説明します。

まず、Tomcatでは下記の方法があるようです。

Tomcat 起動時の配備

Tomcatの起動時にアプリケーションを配備するためには、
server.xmlのバーチャルホストの定義(<Host>タグ)中の
deployOnStartupプロパティがtrueの場合に配備されるようです。

<Host name="localhost" appBase="webapps"
deployOnStartup="true" ....... >


Tomcatサーバ実行中の配備

Tomcatの起動後、実行中に動的に配備を行いたい場合は、
server.xmlのバーチャルホストの定義(<Host>タグ)中の
autoDeployプロパティをtrueにすると有効になるようです。

<Host name="localhost" appBase="webapps"
autoDeploy="true" ........>


クライアントデプロイヤパッケージを使った配備

Tomcatの管理画面より、下記の何れかの方法で配備できます。

  ー サーバ上のWARファイル又はディレクトリの配備
    Tomcatのサーバが稼働しているマシンの
    ファイルシステム中に存在しているファイル
    (もしくはディレクトリ)を配備する方法

  ー WARファイルの配備
    管理画面をブラウザで参照しているローカルのシステム
    内に存在するwarファイルをデプロイする方法


※ ただし、この管理画面に接続するために別途設定が必要です。


Eclipse , NetBeans等の統合開発環境付属の配備ツールの使用

 これは、TomcatもGlassFishも共に対応しているわけですが、
 サーバ管理者が使用するよりも、むしろ開発者が開発時に容易に
 配備できるので、開発者にとっては最も簡単な方法かと思います。



一方、GlassFishの配備方法は用途に応じて様々な配備方法が提供されています。

★1. ファイルのコピーによる自動配備

さて、はじめにファイルをコピーして自動配備を行う方法について
紹介します。GlassFishをインストールしたディレクトリ配下に
domainディレクトリが存在しますが、domainディレクトリ配下は
下記のようなディレクトリ構成となっています。

> pwd
glassfish/domains/domain1
> ls -F
addons/config/java-web-start/master-password
applications/docroot/jbi/portlet-container/
autodeploy/generated/lib/session-store/
bin/imq/logs/wsrp/
>

この中でautodeployディレクトリが存在していますので確認してみて下さい。
サーバ上でアプリケーションを自動的に配備するために、このディレクトリ配下にWARファイルをコピーしてください。
すると自動的にアプリケーションの配備が完了します。

> asadmin list-application-refs
コマンド list-application-refs は正常に実行されました。
> cp ~/test/dist/test.war glassfish/domains/domain1/autodeploy
> asadmin list-application-refs
test
コマンド list-application-refs は正常に実行されました。

上記では、実行前にはtestと呼ばれるアプリケーションが配備されていなかった環境で、
test.warファイルをコピーした後、自動的にtestアプリケーションが配備されている事を確認しています。


※ list-application-refsコマンド以外にlist-componentsコマンドでも確認できます。

> asadmin list-components
test <web-module>
コマンド list-components は正常に実行されました。

配備を取り消すためには、該当のディレクトリよりWARファイルを削除する事で
自動的に配備を取り消す事ができます。

> asadmin list-application-refs
test
コマンド list-application-refs は正常に実行されました。
> pwd
glassfish/domains/domain1/autodeploy
> ls
test.war
test.war_deployed
> rm test.war
> asadmin list-application-refs
コマンド list-application-refs は正常に実行されました。

如何でしょう?Tomcatに比べ設定ファイルの変更の必要がなく、
ファイルのコピー/削除で配備・配備の取り消しが簡単に実現できます。

上記の自動配備は内部的に2秒間隔のポーリングを行い変更を確認しています。
この自動配備の機能の設定を変更したい場合、
管理コンソールより設定変更が可能です。




★2 . asadminコマンドの利用

GlassFishでは専用の管理用コマンド(asadmin)を使用し管理する事も可能です。
下記では、asadminコマンドを使用してアプリケーションの配備(deploy)・配備取り消し(undeploy)
を行う方法について紹介します。

まず、asadminコマンドで配備時に指定できるオプションを示します。
個々の詳細は、asadmin deploy --helpを実行しヘルプを御参照ください。

NAME
     deploy - deploys the specified component

SYNOPSIS
     deploy
     [--terse={true|false}][ --echo={true|false} ]
     [ --interactive={true|false} ] [ --host  host]
     [--port port] [--secure| -s ] [ --user  admin_user]
     [--passwordfile filename] [--help]
     [ --virtualservers  virtual_servers]
     [--contextroot context_root] [--force=true]
     [ --precompilejsp =false] [ --verify =false]
     [ --name  component_name] [--upload=true]
     [ --retrieve  local_dirpath] [--dbvendorname dbvendorname]
     [--createtables=true|false | --dropandcreatetables=true|false]
     [--uniquetablenames=true|false] [--deploymentplan deployment_plan]
     [--enabled=true] [ --generatermistubs =false]
     [ --availabilityenabled =false]
     [ --libraries  jar_file[(path_separator)jar_file*]]
     [--target target] filepath

さて、それでは実際にデプロイしてみましょう。最も簡単に
デプロイする方法は下記のようにファイル名を指定します。

> asadmin deploy test.war
コマンド deploy は正常に実行されました。

配備の取り消し方法は、undeployコマンドを実行します。
undeployで指定可能な引数は下記となりますが、詳細は、
asadmin undeploy --helpを御参照ください。

NAME
     undeploy - removes a deployed component

SYNOPSIS
     undeploy
     [--terse={true|false}][ --echo={true|false} ]
     [ --interactive={true|false} ] [ --host  host]
     [--port port] [--secure| -s ] [ --user  admin_user]
     [--passwordfile filename] [--help]
     [ --droptables =true|false]
     [--cascade=false] [ --target  target]
     component_name

実際に配備を取り消してみましょう。

> asadmin undeploy test
コマンド undeploy は正常に実行されました。

以上で、asadminコマンドによる配備・配備取り消しを御紹介しました。

このasadminコマンドは、JMXを使用しアプリケーションサーバと
通信を行いますので、[ --host host]と[--port port]の引数を
指定する事によりリモートの環境からも実行できます。

その他、ディレクトリを指定して配備を行う、deploydirコマンドも
用意されています。


★3. 動的再読み込み( Dynamic Reloading )

一旦配備したアプリケーションの一部(class,xml等)だけを変更したい場合があります。
その際、GlassFishでは下記のようにして変更を動的に反映させる事ができます。

例えば、特定のclassファイルだけを修正したい場合を考えます。
通常、アプリケーションは下記のディレクトリ下に配備されていますが、
この中に含まれる、Page1.classのみ変更を加えたい場合、Tomcatの場合、
ファイルをコピーするだけで動的に反映されるようですが、GlassFishでは、
.reloadファイルという空のファイルを作成(更新)する必要があります。

glassfish/domains/domain1/applications/j2ee-modules/test

> cd /Applications/NetBeans/glassfish/domains/domain1/applications/j2ee-modules/test
> ls -a
.META-INFPage2.jspWEB-INF
..Page1.jspPage3.jspresources
> touch .reload
> ls -a
..reloadPage1.jspPage3.jspresources
..META-INFPage2.jspWEB-INF
>

ファイルをコピーし、.reloadファイルを作成(更新)した後、
内容が変更されているかを確認してみて下さい。マニュアルの御参照

JSPファイルの変更の場合は(即座に反映されるため)必要ありませんが、
classファイル等の更新を行う場合は、その毎に、.reloadファイルの更新日付をtouchコマンドで更新して下さい。

また、動的再読み込みの設定も管理コンソールより行う事ができます。




★4. 管理コンソールを使用した配備

管理画面にログイン(デフォルト:admin , adminadmin)した後、
「アプリケーション」より「Web アプリケーション」を選択します。



すると右画面に「配備 ...」、「配備取り消し」、「有効」、「無効」ボタンが
表示されますので、「配備 ...」ボタンを押下します。
すると下記のような画面が表示されます。



ここで、サーバにアップロードされるパッケージファイルについては、
Tomcatと同様にファイルを選択するダイアログウィンドウが表示されますので
ファイルを選択します。
一方、サーバが稼働しているマシンのファイルシステム中に存在している
ファイルから配備する方法は非常に使い勝手がよくなっています。
「Application Server からアクセス可能なローカルのパッケージファイルまたはディレクトリ」
のラジオボタンにチェックを付け「ファイルを参照 ...」もしくは「ディレクトリィを参照 ...」
ボタンを押下して下さい。


するとGlassFishが稼働するマシンのファイルシステムを参照できる、ウィンドウが表示されます。
ここで、ディレクトリ階層を手繰りながらファイルを検索して指定してください。



ファイルを選択した後、自動的に「アプリケーション名:」「コンテキストルート」
が設定されますので、設定内容を全て確認した後、「了解」ボタンを押下します。
「了解」ボタンを押下すると、下記のようにボタンが「処理してます ...」に
変わるという小技も用意してます。



★ 5. JSR-88 APIを使用した配備

『J2EE Application Deployment API (JSR-88)』 で定められたAPIを使用し
 配備する方法もあります。
 こちらは、配備用のプログラムを自分独自で作成したい時には、
 Java のAPIを使用して配備ができるようになる物ですが、
 一般的には、あまり独自の配備プログラムを書く事は少ないと思いますので、
 ここでは、説明を省きたいと思います。

如何でしょうか?Tomcatと比べてGlassFishでは様々な配備方法を
提供しているだけでなく、管理コンソールを使用した配備方法もとても簡単です。
直接XMLを編集する代わりに、何通りかの便利なツールを用意しています。

今までの管理コストと今後の管理コストを考えた場合、全くの新人さんに
アプリケーションサーバの管理を教えるのに、楽なのはXMLの手書きや
構文を覚えさせる事でしょうか?それとも管理コマンドになれて頂く事でしょうか?

なれれば、必ず使い易くなるGlassFish是非御賞味ください。

Permalink     No Comments
Track Back :




Post a Comment:
Comments are closed for this entry.