mod_jkによるApache-GlassFish連携環境の構築


GlassFishとApacheの連携

 mod_jkによるApache-GlassFish連携環境を構築する機会があったのでここに紹介したい。mod_jkによってApacheとTomcatを連携させるのは良く知られているが、ApacheとGlassFishでも同じことが可能である。ただし、やることは非常に多く難易度は高い。ネタ元は↓。

<Amy Roh's Blog>
http://weblogs.java.net/blog/amyroh/archive/2006/08/glassfish_suppo.html

Apache-GlassFish連携に必要なもの

 Apache-GlassFish連携環境の構築はFedora Core 5にて行った。必要なものは以下である。
  1. Apache(httpd) Fedora Core 5に付属の2.2.0
  2. GlassFish V2
  3. Tomcat 5.5(tomcat-ajp.jar等一部のファイルを流用。実行時に必要なわけではない。)
  4. mod_jkのバイナリ
 GlassFishのインストールについては「GlassFish環境構築」を参照いただきたい。Tomcatは5.5.25がリリースされているようだがこちらで確認したのは5.5.23である。mod_jkは1.2.26がリリースされているようだがこちらで確認したのは1.2.21である。

<Tomcat 5.5>
http://tomcat.apache.org/download-55.cgi

<Tomcat Connectors(mod_jk) Downloads>
http://tomcat.apache.org/download-connectors.cgi

<mod_jk 1.2.21>
http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/linux/jk-1.2.21/mod_jk-1.2.21-apache-2.2.x-linux-i686.so

mod_jkのインストール

1.mod_jkモジュールの配置
 ダウンロードしたmod_jk(mod_jk-1.2.21-apache-2.2.x-linux-i686.so)をmod_jk.soにリネームして/etc/httpd/modulesに配置する。

2.httpd.confファイルの変更
 mod_jkモジュールの読み込み及びBASIC認証設定のために、/etc/httpd/conf/httpd.confに以下を追加する。

# mod_jk
LoadModule jk_module modules/mod_jk.so
<IfModule mod_jk.c>
   Include conf/mod_jk.conf
</IfModule>

# Basic auth
<Location "/">
   AuthType Basic
   AuthName "Enter username and password"
   AuthUserFile /etc/httpd/.htpasswd
   AuthGroupFile /dev/null
   Require valid-user
</Location>
3..htpasswdファイルの作成
 以下のコマンドを実行する。追加したユーザ名は.htpasswdファイルを参照すれば確認できる。

# htpasswd -c /etc/httpd/.htpasswd ユーザ名
 ここでユーザ名はBASIC認証を行うユーザ名である。

4.mod_jk.confファイルの作成
 すべてのJSPへのアクセスは後段のGlassFishに連携する設定を行う。/etc/httpd/confディレクトリにmod_jk.confファイルを以下の内容で作成する。

JkWorkersFile /etc/httpd/conf/workers.properties
JkLogFile /var/httpd/logs/mod_jk.log
JkLogLevel debug
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
JkRequestLogFormat "%w %V %T"
JkMount /*.jsp ajp13
5.workers.propertiesファイルの作成
 /etc/httpd/confディレクトリにworkers.propertiesファイルを以下の内容で作成する。

worker.list=ajp13
worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.type=ajp13
worker.ajp13.cachesize=10

GlassFishへのAJPコネクタモジュールのインストール

1.tomcat-ajp.jarの配置
 別途インストール済みのTomcatからGlassFishで利用するために、以下のjarファイルを(Tomcatインストールディレクトリ)/server/libから(GlassFishインストールディレクトリ)/libにコピーする。
  1. tomcat-ajp.jar
  2. commons-logging-1.1.jar(別途Jakartaのサイトからダウンロード)
  3. commons-modeler-2.0.jar

<Apache Jakarta Project>
http://jakarta.apache.org/

2.AJPコネクタモジュールの設定
 GlassFishのasadminコマンドで以下のJVMオプションを追加する。ただし、GlassFishをあらかじめ起動しておく必要がある。尚、ここで追加したJVMオプションはGlassFishの起動時のログで確認できる。

$ asadmin create-jvm-options -Dcom.sun.enterprise.web.connector.enableJK=8009
3.glassfish-jk.propertiesファイルの作成
 (GlassFishインストールディレクトリ)/domains/(ドメイン名)/configディレクトリに以下の内容でglassfish-jk.propertiesファイルを作成する。これをやらないとREMOTE_USER情報がGlassFishに渡されない。

tomcatAuthentication=false
4.glassfish-jk.propertiesファイルの設定
 GlassFishのasadminコマンドで以下のJVMオプションを追加する。

$ asadmin create-jvm-options -Dcom.sun.enterprise.web.connector.enableJK.propertyFile
=(GlassFishインストールディレクトリ)/domains/(ドメイン名)/config/glassfish-jk.properties
5.GlassFishの再起動

 これでApache-GlassFish連携が可能となり、GlassFishにREMOTE_USER情報が渡される。

(2008/01/09)

新着情報
【オープンソースソフトウェア環境構築】Apple silicon Macで開発環境を構築
【Rust Tips】Actix webでJSONをPOSTする
【Rust Tips】コマンドライン引数を取得する

Copyright© 2004-2022 モバイル開発系(K) All rights reserved.
[Home]