この章では、Sun GlassFishTM Enterprise Server v3 環境で Web アプリケーションを管理する方法について説明します。
ここでは、次のテーマを取り上げます。
これらのタスクの一部を 管理コンソール を使用して実行する場合の手順は、管理コンソール のオンラインヘルプで説明します。
Enterprise Server に配備されたサーブレットは、ブラウザに URL を指定して呼び出すことができます。また、HTML ファイルや JSP ファイル内にリンクとして埋め込まれたサーブレットも呼び出すことができます。サーブレットの呼び出し URL の形式は次のとおりです。
http://server:port/context-root/servlet-mapping?name=value表 6–1 アプリケーション内のサーブレットを呼び出す URL のフィールド
この例では、localhost はホスト名、MortPages はコンテキストルート、および calcMortgage はサーブレットマッピングを表します。
http://localhost:8080/MortPages/calcMortgage?rate=8.0&per=360&bal=180000
JSP ファイル内でサーブレットを呼び出す場合は、相対パスを使用できます。次に例を示します。
<jsp:forward page="TestServlet"/><jsp:include page="TestServlet"/>
ServletContext.log のメッセージは、サーバーログに送信されます。デフォルトでは、サーブレットの System.out および System.err 出力はサーバーログに送信されます。起動中に、サーバーログのメッセージは System.err 出力にエコーされます。またデフォルトでは、System.err 出力用の Windows 専用コンソールはありません。
これらのデフォルト設定は、管理コンソール の「システムログに書き込み」ボックスを使用して変更できます。このボックスにチェックマークを付けると、System.out 出力がサーバーログに送信されます。チェックマークを外すと、System.out 出力はシステムのデフォルトの場所だけに送信されます。
default-web.xml ファイルを使用して、フィルタやセキュリティー制約などの、すべての Web アプリケーションに適用される機能を定義できます。
たとえば、ディレクトリの一覧表示は、セキュリティーの強化のためにデフォルトで無効化されます。ドメインの default-web.xml ファイルでディレクトリの一覧表示を有効にするには、servlet-name が default であるサーブレットの定義を検索し、listings という名前の init-param を true に設定します。続いて、サーバーを再起動します。
<init-param> <param-name>listings</param-name> <param-value>true</param-value> </init-param>
listings を true に設定した場合、ディレクトリの一覧表示をソートする方法も決定できます。sortedBy という名前の init-param の値を、NAME、SIZE、または LAST_MODIFIED に設定します。続いて、サーバーを再起動します。
<init-param> <param-name>sortedBy</param-name> <param-value>LAST_MODIFIED</param-value> </init-param>
default-web.xml ファイルの mime-mapping 要素はグローバルで、すべての Web アプリケーションで継承されます。Web アプリケーションの web.xml ファイルで mime-mapping 要素を使用して、これらのマッピングを上書きするか、独自に定義することができます。mime-mapping 要素の詳細は、Servlet 仕様を参照してください。
default-web.xml ファイルは、管理コンソール を使用して編集するか、次の手順で直接編集することができます。
フィルタ、セキュリティー制約、またはその他の機能の JAR ファイルを、domain-dir/lib ディレクトリに配置します。
配置した JAR ファイルを参照するように、domain-dir/config/default-web.xml ファイルを編集します。
変更内容を適用するために、Enterprise Server を再起動します。
「ドメインの再起動」を参照してください。
古い URL に対する要求を、新しい URL に対する要求として処理するように指定できます。この処理は、URL の「リダイレクト」と呼ばれます。
仮想サーバーのリダイレクトされる URL を指定するには、redirect_ n プロパティーを使用します。n は正の整数で、複数の指定が可能です。各 redirect_n プロパティーは、仮想サーバーに配備されたすべての Web アプリケーションによって継承されます。
redirect_n プロパティーの値には 2 つの構成要素があり、任意の順番で指定できます。
最初の構成要素の from は、照合する要求された URI のプレフィックスを指定します。
2 番目の構成要素の url-prefix はクライアントに返す新しい URL プレフィックスを指定します。 from プレフィックスは、この URL プレフィックスで置き換えられます。
この例では、from に指定した dummy を etude にリダイレクトします。
<property name="redirect_1" value="from=/dummy url-prefix=http://etude"/>
mod_jk コネクタを使用すると、Web コンテナを Apache HTTP Server などの Web サーバーに接続できます。mod_jk は Enterprise Server に付属するコネクタで、これを使用することにより、Enterprise Server の前に Apach HTTP Server をたてることができます。この処理の一般的な目的は、静的なリソースに対する要求を Apache HTTP Server に処理させ、サーブレットや JavaServerTM Pages (JSP) などの動的なリソースに対する要求を、Enterprise Server のバックエンドインスタンスに転送して処理することです。
負荷分散の目的で、mod_jk を JSP またはサーブレットエンジンで直接使用することもできます。
ここでは、次のテーマを取り上げます。
ここで説明するように mod_jk コネクタを有効化することで、Enterprise Server と Apache HTTP Server を連携させることができます。ネットワークリスナーの jk-enabled 属性を使用する場合、追加の JAR ファイルを /lib ディレクトリにコピーする必要はありません。ネットワークリスナー属性の jk-enabled を使用することで、JK コネクタを別の仮想サーバーに作成することもできます。
Apache HTTP Server と mod_jk をインストールします。
Apache HTTP Server のインストール方法については、http://httpd.apache.org/docs/2.0/install.html を参照してください。
mod_jk のインストール方法については、http://tomcat.apache.org/connectors-doc/webserver_howto/apache.html を参照してください。
次のファイルを設定します。
apache2/conf/httpd.conf (Apache の主要な構成ファイル)
apache2/config/workers.properties または domain-dir /config/glassfish-jk.properties (http://tomcat.apache.org/tomcat-5.5-doc/config/ajp.html で説明されている属性のデフォルト以外の値を使用する場合)
worker.properties ファイルと glassfish-jk.properties ファイルの両方を使用する場合は、httpd.conf で参照されている (または、httpd.conf で最初に参照される) ファイルが優先されます。
Apache HTTP Server (httpd) を起動します。
Web アプリケーションが少なくとも 1 つ配備されている Enterprise Server を起動します。
配備済み Web アプリケーションを少なくとも 1 つ使用する Web コンテナが起動されていなければ、mod_jk コネクタは起動できません。
次のコマンドを実行して、HTTP リスナーを作成します。
asadmin> create-http-listener --listenerport 8009 --listeneraddress 0.0.0.0 --defaultvs server listener-name |
asadmin> set server-config.network-config.network-listeners. network-listener.listener-name.jk-enabled=true |
listener-name は、mod_jk を有効にするネットワークリスナーの ID です。
glassfish-jk.properties ファイルを使用していて、httpd.conf でこのファイルを参照していない場合は、次のコマンドを実行してファイルの場所を指定します。
asadmin> create-jvm-options -Dcom.sun.enterprise.web.connector.enableJK.propertyFile= domain-dir/config/glassfish-jk.properties |
変更内容を適用するために、Enterprise Server を再起動します。
「ドメインの再起動」を参照してください。
この例では、httpd.conf ファイルを示します。
LoadModule jk_module /usr/lib/httpd/modules/mod_jk.so JkWorkersFile /etc/httpd/conf/worker.properties # Where to put jk logs JkLogFile /var/log/httpd/mod_jk.log # Set the jk log level [debug/error/info] JkLogLevel debug # Select the log format JkLogStampFormat "[%a %b %d %H:%M:%S %Y] " # JkOptions indicate to send SSL KEY SIZE, JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories # JkRequestLogFormat set the request format JkRequestLogFormat "%w %V %T" # Send all jsp requests to GlassFish JkMount /*.jsp worker1 # Send all glassfish-test requests to GlassFish JkMount /glassfish-test/* worker1
この例では、worker.properties または glassfish-jk.properties ファイルを示します。
# Define 1 real worker using ajp13 worker.list=worker1 # Set properties for worker1 (ajp13) worker.worker1.type=ajp13 worker.worker1.host=localhost worker.worker1.port=8009
Apache の詳細は、http://httpd.apache.org/ を参照してください。
負荷分散は、1 台のコンピュータで実行しなければならない作業を複数のコンピュータに分配し、同じ時間でより多くの作業を行う処理です。
「mod_jk を有効にする」の手順を実行します。
少なくとも 1 つの Web アプリケーションが配備されている、別の Enterprise Server を起動します。
配備済み Web アプリケーションを少なくとも 1 つ使用する Web コンテナが起動されていなければ、mod_jk コネクタは起動できません。
次のようなコマンドを実行して、HTTP リスナーを作成します。
asadmin> create-http-listener --listenerport 8010 --listeneraddress 0.0.0.0 --defaultvs server my-connector |
複数のインスタンスが同じマシンで動作している場合は、別の JK ポートを選択する必要があります。ポートは worker.properties ファイルの worker.worker*.port に一致する必要があります。以下のプロパティーファイルの例を参照してください。
次のコマンドを実行して、mod_jk を有効にします。
asadmin> set server-config.network-config.network-listeners. network-listener.listener-name.jk-enabled=true |
listener-name は、mod_jk を有効にするネットワークリスナーの ID です。
変更を適用するには、Apache と Enterprise Server を再起動します。
「ドメインの再起動」を参照してください。
この例では、httpd.conf ファイルを示します。
LoadModule jk_module /usr/lib/httpd/modules/mod_jk.so JkWorkersFile /etc/httpd/conf/worker.properties # Where to put jk logs JkLogFile /var/log/httpd/mod_jk.log # Set the jk log level [debug/error/info] JkLogLevel debug # Select the log format JkLogStampFormat "[%a %b %d %H:%M:%S %Y] " # JkOptions indicate to send SSL KEY SIZE, JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories # JkRequestLogFormat set the request format JkRequestLogFormat "%w %V %T" # Send all jsp requests to GlassFish JkMount /*.jsp worker1 # Send all glassfish-test requests to GlassFish JkMount /glassfish-test/* loadbalancer |
この例では、worker.properties または glassfish-jk.properties ファイルを示します。worker.worker*.port は、作成した JK ポートに一致している必要があります。
worker.list=loadbalancer worker.worker1.type=ajp13 worker.worker1.host=localhost worker.worker1.port=8009 worker.worker1.lbfactor=1 worker.worker1.socket_keepalive=1 worker.worker1.socket_timeout=300 worker.worker2.type=ajp13 worker.worker2.host=localhost worker.worker2.port=8010 worker.worker2.lbfactor=1 worker.worker2.socket_keepalive=1 worker.worker2.socket_timeout=300 worker.loadbalancer.type=lb worker.loadbalancer.balance_workers=worker1,worker2 |