Tomcat5.5のserver.xmlについての解説です。
項目の中にはまだ実際に機能していないものも多数あります。
また、今後新たな項目が追加される可能性もあります。
server.xmlのルートになる唯一の要素(Element)です。
使用するサーブレットコンテナクラスを指定します。
このクラスは org.apache.catalina.Server
インターフェイスを実装している必要があります。
省略すると、org.apache.catalina.core.StandardServer
がデフォルトで使用されます。
このサーバがシャットダウンコマンドを受け取るために待機するポート番号を指定します。
このサーバをシャットダウンさせる為に使用するコマンド文字列を指定します。
上で指定したポートは、この文字列を受け取るとサーバをシャットダウンさせます。
子要素 : Service / GlobalNamingResources
親要素 : Server
サービスを表現する要素です。一つもしくはそれ以上のコネクタと唯一のエンジンを子に持ちます。
使用するサービスクラスを指定します。
このクラスは org.apache.catalina.Service
インターフェイスを実装している必要があります。
省略すると、org.apache.catalina.core.StandardService
がデフォルトで使用されます。
このサービスの名前を記述します。
サーバ内に複数のサービスがある場合は、それらの名前はユニークである必要があります。
ここでTomcatと外部ポート(通常はHTTP)との接続方法を指定します。
true
にすると、「TRACE HTTPメソッド」を有効にします。
デフォルトでは false
です。
詳細は不明です。
true
にすると、セッション(クッキー)のパスを全て「/」 にセットします。
効能は不明です。
デフォルトでは false
です。
DNSルックアップを利用するかどうかを指定します。
これを利用するとサーブレットコンテナのパフォーマンスが落ちるので
なるべくならfalseにしましょう。
Tomcat5では、デフォルト値がtrueに変更されています!
フォームからPOSTできる最大サイズをbyte単位で指定します。
デフォルトは2M(2097152)です。
HTTPのプロトコルを指定します。デフォルトではHTTP/1.1です。
このコネクタがプロキシを利用する場合、そのプロキシのサーバ名を記述します。
このコネクタがプロキシを利用する場合、そのプロキシのポート番号を記述します。
リダイレクトに使用するポート番号を指定します。
詳細は不明です。
request.getScheme()
呼び出しで返されるスキーマ文字列を定義します。
デフォルトでは http
です。
request.isSecure()
呼び出しで返されるセキュア情報(boolean値)を定義します。
デフォルトでは false
です。
SSLを使用する場合にはtrueを指定して下さい。
「http://contents?a=%12%34」形式で記述されたURLをデコードする際の
文字エンコーディングを指定します。デフォルトは「ISO-8859-1」です。
Tomcat4.1.x系との互換性の為に使用されます。
デフォルトは false
ですが、互換を保つには true
を指定して下さい。true
にすると、ContentType又はRequest.setCharacterEncodingメソッドで指定された
エンコーディングをデコードに使用します。URIEncodingは使われません。
詳細は不明です。
デフォルトのHTTP Connectorを使用する際には、以下の属性が使用できます。
このサーバへの接続要求キューのサイズを指定します。
この値を超えて要求された全てのリクエストは拒否されます。
デフォルトは 10 です。
このServer(ポート)を受け付けるIPアドレスを指定します。
省略すると、全てのIPアドレスはこのServerに関連付けられます。
このコネクタが入力ストリームとして生成するバッファサイズをbyte単位で指定します。
デフォルトは2048bytesです。
後述の compression で圧縮するMIMEタイプをカンマ区切りで記述します。
デフォルトは、text/html,text/xml,text/plain
です。
HTTP1/1のGZIP圧縮を利用するかどうかを指定します。
on、off(デフォルト)、forceあるいは正整数を記述できます。
詳細は不明です。
この接続のタイムアウト値をミリ秒単位で指定します。
デフォルトは60000(60秒)です。
詳細は不明です。
keep-alive
の数を指定します。
詳しくはApacheのドキュメント等を参考にして下さい。
デフォルトは100です。
スレッドプールに存在できるスペア・スレッドの最大数を指定します。
詳しくはApacheのドキュメント等を参考にして下さい。
デフォルトは50です。
リクエスト処理スレッドの最大数を指定します。
詳しくはApacheのドキュメント等を参考にして下さい。
デフォルトは200です。
スレッドプールに存在するスペア・スレッドの最低数を指定します。
詳しくはApacheのドキュメント等を参考にして下さい。
デフォルトは4です。
GZIP圧縮を利用しないユーザーエージェント名を記述します。
正規表現が利用でき、複数指定時にはカンマで区切ります。
このコネクタが使用するポート番号を指定します。
keep-alive
を使用しないユーザエージェント一覧を正規表現(カンマ区切り)で指定します。
携帯端末などを指定しておくと良いでしょう。
HTTPレスポンスの「Server」ヘッダを指定します。
ソケットの出力バッファサイズ(byte単位)を指定します。-1にするとバッファを使用しません。
デフォルトは9000です。
スレッドプーリング方法を指定します。
詳細は不明です。
true(デフォルト)にすると、このコネクタが利用するソケットにオプションを適用します。
詳しくはJava APIドキュメントの java.net.SocketOptions.TCP_NODELAY
を参考にして下さい。
リクエスト処理を行うプロセスのスレッド優先順位を指定します。
デフォルトでは java.lang.Thread#NORM_PRIORITY
です。
このコネクタをSSL接続にしたい場合は、secureをtrueに指定します。
それに加え、以下の属性をConnector要素に追記することが出来ます。
証明書の符号化アルゴリズムを指定します。
デフォルトはSunX509です。
詳細は不明です。
SSL認証に使用するkeystoreファイルのパスを指定します。
デフォルトでは、Tomcatを起動したユーザのホームディレクトリ内にある
".keystore"ファイルが利用されます。
SSL認証に使用するkeystoreのパスワードを記述します。
SSL認証に使用するkeystoreファイルの種類を記述します。
デフォルトは"JKS"です。
使用するSSLプロトコルのバージョンを指定します。
デフォルトは"TLS"です。
詳細は不明です。
親要素 : Server
このサーバに共通で使用されるリソースを指定します。
3種類の子要素を持つことができます。
環境変数を定義します。利用する際にはJNDIを使います。
この環境変数に関する情報を記述します。
これはサーバに全く関与しない、あくまでこの設定ファイルを読む他の人間に対する記述です。
この環境変数を登録するJNDI名を記述します。
実際に登録されるJNDI名は、java:comp/env
+ name となります。
例えば、maxLen
という名前の環境変数を利用する場合には
プログラム内にはlookup("java:comp/env/manLen")
と記述します。
trueにすると、この環境変数と同名の変数が
各アプリケーションのweb.xml内で記述されていた場合にそれを上書きします。
デフォルトはtrueです。
この環境変数のクラス名を完全限定名で指定します。
指定できるクラスは、Javaプリミティブ型のラップクラスとStringのみです。
この環境変数に割り当てる値を記述します。
一般的なリソースを定義します。
Application または Container を記述します。
このリソースに関する情報を記述します。
これはサーバに全く関与しない、あくまでこの設定ファイルを読む他の人間に対する記述です。
このリソースを登録するJNDI名を記述します。
実際に登録されるJNDI名は、java:comp/env
+ name となります。
例えば、UserDataBase
という名前の環境変数を利用する場合には
プログラム内にはlookup("java:comp/env/UserDataBase")
と記述します。
リソースマネージャから得たこのリソースの接続を共有するかどうかを指定します。
Shareable(デフォルト) または Unshareable を記述します。
このリソースのクラス名を完全限定名で指定します。
Tomcat5.5では、リソースの記述方法が変わっています。
そのため、以前の設定ファイルをそのまま利用することが出来ません。
具体的には、以前まであった ResourceParams
要素が無くなっています。
以前までここに記述していた内容は、Resource
要素の属性として記述する必要があります。
親要素 : Service
サーブレットエンジンコンテナの情報を記述します。
エンジンコンテナは、一つもしくはそれ以上のコネクタからのリクエストを受け取り
レスポンスを返します。
詳細は不明です。
使用するエンジンクラスを指定します。
このクラスは org.apache.catalina.Engine
インターフェイスを実装している必要があります。
省略すると、org.apache.catalina.core.StandardEngine
がデフォルトで使用されます。
デフォルトのホスト名を記述します。
これは、このエンジンの子に存在するHost要素のname属性に対応させる必要があります。
ロード・バランシング(負荷分散)機能を利用するときに使います。
この機能はJK/JK2インターフェイスを使ってApacheと連携を取っている状況下で働きます。
詳細は不明ですが、おそらく異なるEngineに異なるjvmRoute属性を記述すれば良いはずです。
jvmRoute属性文字列は識別子となり、セッションIDのサフィックス等にも使われます。
このエンジンに付ける名前を記述します。
子要素 : Host / Realm / DefaultContext
一つ以上のHost要素が必須となります。
Tomcat5.5より前のTomcatでは、ログ出力は debug
属性により制御していました。
Tomcat5.5では、ログ出力は log4j
により制御されます。
このエンジンに対する全てのログ出力は、org.apache.catalina.core.ContainerBase.[エンジン名]
カテゴリ以下に出力されます。
親要素 : Engine
バーチャルホストを定義します。
このバーチャルホストの基準ディレクトリを指定します。
true(デフォルト)にすると、Tomcat起動中に appBase ディレクトリに
Webアプリケーションを配置すると、自動的にデプロイされます。
詳しくは オートデプロイ を参照して下さい。
詳細は不明です。
使用するホストのクラスを指定します。
このクラスは org.apache.catalina.Host
インターフェイスを実装している必要があります。
省略すると、org.apache.catalina.core.StandardHost
がデフォルトで使用されます。
Tomcat起動時に オートデプロイ を行うかどうかを指定します。
デフォルトはtrueです。
このバーチャルホストが利用されるネットワーク名を指定します。
ネットワーク名とはDNSサーバに登録されているものを指定するか localhost
と記述する必要があります。
以下、org.apache.catalina.core.StandardHost
を使用した場合に使用できる属性を説明します。
オートデプロイ時にXMLファイルの読み込みを行うかどうかを指定します。
デフォルトはtrueです。falseにすると$CATALINA_HOME/conf/[engine_name]/[host_name]
ディレクトリ以外にある
warファイルの手動インストールも不可能になります。
つまり、$CATALINA_HOME/conf/[engine_name]/[host_name]
ディレクトリと
そのサブディレクトリ以外にあるファイルが
一切使えないようになるので、セキュリティの面で安全性が高まります。
このホストでエラーが発生した場合、それを画面に出力する為のクラスを指定します。
このクラスは org.apache.catalina.Valve
インターフェイスを実装している必要があります。
デフォルトでは org.apache.catalina.valves.ErrorReportValve
が使用されます。
appBase ディレクトリ上に配置したWARファイルを
このディレクトリ上に展開(解凍)するかどうかを指定します。
false にすると、配置されたWARファイルはそのままの形で実行されます。
このホストが一時的に利用するディレクトリを指定します。
コンテキスト毎に指定する場合は、Context要素のworkDir属性を記述すれば
この値は上書きされます。
省略すると、$CATALINA_HOME/work
がデフォルトで使用されます。
Catalinaを起動した際、autoDeploy属性がtrueならばオートデプロイ機能が働きます。
以下の3項目がその処理内容です。
これらはホスト毎のappBase属性を基準として行なわれます。
deployOnStartup属性がtrue(デフォルト)の場合に以下の処理が働きます。$CATALINA_HOME/conf/[engine_name]/[host_name]
上にある
全てのXMLファイルが読み込まれます。
このファイルにはContext要素(とその子要素)を記述できます。
こうやって conf/server.xml
から分離して別ファイルに記述することで
各コンテキストを一時的に利用可能/不可能にする事が簡単に行えるようになります。
$CATALINA_HOME/conf/[engine_name]/[host_name]
上にある全てのWARファイルを
そのファイル名から拡張子.warを取り除いた名前のコンテキストとして認識します。
さらに、unpackWARs属性がtrueの場合は同名のディレクトリを作成してWARファイルを展開します。
ただし、既に同名のディレクトリが存在する場合には展開はされません。
appBase上にある全てのサブディレクトリ(WARファイルを解凍したものを除く)は、
それに関するContext要素が自動的に作成されます。
ただし、これらのサブディレクトリ内に WEB-INF/web.xml ファイルが存在しているものに限ります。
これらのコンテキストには DefaultContext の属性が適用されます。
コンテキストパスは /dir_name
という形式になりますが、
唯一例外として ROOT
という名前のディレクトリはこのホストのルートコンテキストとして設定されます。
親要素 : Host
Webアプリケーション単位のコンテキスト設定を記述します。
オートデプロイを利用することにより、この要素は別ファイルに分けることが出来ます。
コンテキスト(アプリケーション)毎に設定ファイルを用意することができるので便利です。
不明です。
使用するコンテキストクラスを指定します。
このクラスは org.apache.catalina.Context
インターフェイスを実装している必要があります。
省略すると、org.apache.catalina.core.StandardContext
がデフォルトで使用されます。
アプリケーションがセッションを識別するのに
クッキーを使用するかどうかを指定します。デフォルトでは true です。
false にすると、URLにセッションIDを埋め込む形でしかセッションを利用できなくなります。
これは携帯サイトなどクッキーを利用できないブラウザでは必要な手段となります。
このコンテキストを他のコンテキストから参照できるかどうかを指定します。
true にすると、他のコンテキストから ServletContext.getContext(String)
メソッドを
呼び出すことによって ServletContext
オブジェクトを取得することが出来ます。
このコンテキストのルートディレクトリを指定します。
WARファイルを指定することも出来ます。
true にすると、各属性は DefaultContext要素の属性を(もしあれば)上書きします。
false(デフォルト)では、DefaultContext要素の属性が(もしあれば)そのまま使われます。
このWebアプリケーションに特権を与えるかどうかを指定します。
true にすると、コンテナ・サーブレットを使うことが可能になります。
コンテナ・サーブレットとは、org.apache.catalina.ContainerServlet
インターフェイスを
実装したサーブレットの事を指します。
このコンテキストに対応するURIを記述します。
true にすると、Catalina は /WEB-INF/classes/
と /WEB-INF/lib/
に存在するファイルの内容を
随時チェックし、変更があった場合にはそれをリロードします。
この機能はサーブレットのデバッグ時には大変便利ですが、その為にかなりのオーバーヘッドを要します。
実運用段階では、この項目は必ず false にすることを推奨します。
使用するラッパークラスを指定します。
このクラスは org.apache.catalina.Wrapper
インターフェイスを実装している必要があります。
省略すると、org.apache.catalina.core.StandardWrapper
がデフォルトで使用されます。
以下、org.apache.catalina.core.StandardContext
を使用した場合に使用できる属性を説明します。
true
にすると、シンボリックリンクが使用可能になります。
デフォルトは false
です。
Windows等、ファイル名の大小文字を区別しないシステムでは必ずfalseにして下さい!
true
にすると、TomcatのクラスローダはJARファイルをロックしなくなります。
これにより、アプリケーションの起動時間は遅くなりますが
ファイルがロックされてしまう環境では有用であるかもしれません。
デフォルトは false
です。
true
にすると、Tomcatは全てのファイルをロックしなくなります。
これにより、アプリケーションの起動時間は著しく遅くなりますが
いかなる環境においてもアプリケーションの完全なホットデプロイが可能になります。
デフォルトは false
です。
画像などの静的リソースをキャッシュするバッファのサイズをキロバイト単位で指定します。
デフォルトは10240(10MB)です。
キャッシュされたファイルが変更されたかどうかをチェックする間隔をミリ秒単位で指定します。
デフォルトは5000(5秒)です。
静的リソースをキャッシュするかどうかを指定します。
デフォルトでは true
です。
true
にすると、文字列の大小文字チェックを無効にします。
デフォルトは true
です。
Windows等、ファイル名の大小文字を区別しないシステムでは必ずtrueにして下さい!
詳細は不明です。
true
にすると、標準出力およびエラー出力(System.out,err)への出力が全て
アプリケーションのロガーに渡されます。デフォルトは false
です。
true
にすると、TLDファイルのXML検証時に名前空間の概念が適用されます。
そのため、アプリケーションの起動時間は遅くなります。
デフォルトは false
です。
true
にすると、TLDファイルのXML検証が行われます。
そのため、アプリケーションの起動時間は遅くなります。
デフォルトは false
です。
true
にすると、このアプリケーションがWARファイルで提供されたときに
TomcatがWARファイルを展開します。
デフォルトは true
です。
true
にすると、CatalinaはJNDIのInitialContextを利用可能にします。
デフォルトは true
です。
このコンテキストが一時的に利用するディレクトリを指定します。
省略すると、$CATALINA_HOME/work
がデフォルトで使用されます。
子要素 : Loader / Manager / Realm / Resources / Parameter / Environment / Resource / ResourceParams / ResourceLink
このコンテキストで利用できるパラメータを宣言します。
これは web.xml 内の context-param要素で宣言するのと同一の効果があります。
アプリケーション内でパラメータを取得するには、ServletContext.getInitParameter()
を使用します。
このパラメータに関する情報を記述します。
これはサーバに全く関与しない、あくまでこのファイルを読む他の人間に対する記述です。
このパラメータの名前を記述します。
このパラメータの値を記述します。
グローバルリソースをアクセスする為の記述をします。
グローバルリソース名
リソースをアクセスする際のJNDI名。これは java:comp/env/
からの相対名になります。
リソースのタイプ(クラス)名
親要素 : Context
HTTPセッションを生成、確保する為のセッションマネージャの設定をします。
使用するコンテキストクラスを指定します。
このクラスは org.apache.catalina.Manager
インターフェイスを実装している必要があります。
省略すると、org.apache.catalina.session.StandardManager
がデフォルトで使用されます。
アプリケーションが使用するセッションオブジェクトが
全て直列化可能なことを示すときにtrueにします。
デフォルトは false
です。true
のとき、直列化不可能(Serializable
)なオブジェクトを
セッションに格納しようとすると IllegalArgumentException
が発生します。
Tomcatのクラスタリング機能を有効にするとき、この値は true
にする必要があります。
もしくは、アプリケーション毎に distributable
属性を指定します。
以下、org.apache.catalina.session.StandardManager
を使用した場合に使用できる属性を説明します。
セッション識別子を計算するアルゴリズムを指定します。
この値は java.security.MessageDigest
クラスでサポートされている必要があります。
デフォルトは MD5
です。
セッション識別子生成時に用いられる乱数生成メソッドに渡す文字列を指定します。
デフォルトでもある程度有用なセッション識別子は生成されますが、
セキュリティが重要な環境下で使用する場合には
ここで明示的に何らかの文字列を指定する方がより強固な(他人に利用されにくい)識別子が生成されます。
マネージャによって生成されるアクティブ・セッションの最大数を制限します。
-1(デフォルト)にすると、セッションは無制限に生成されます。
詳細は不明です。
アプリケーション再起動時に保存されるセッション状態を記述したファイルがあります。
デフォルトでは workDir/SESSIONS.ser
ですが、
ここではそのファイル名およびパスを指定する事が出来ます。
詳細は不明です。
使用する乱数生成クラスを指定します。
このクラスは java.util.Random
インターフェイスを実装している必要があります。
省略すると、java.security.SecureRancom
がデフォルトで使用されます。
生成されるセッションIDの長さを指定します。
デフォルトは 16
です。
以下、org.apache.catalina.session.PersistentManager
を使用した場合に使用できる属性を説明します。
このマネージャを利用すると、セッションのスワップ管理を制御することができます。
※ このマネージャはまだテスト段階です
概要を説明します。
基本的に作成されたセッションはメモリ内に保持されますが、
数が多くなってくるとメモリ使用量も圧迫されます。
そこで、一定期間使われていないセッションをストア(ファイルやDBレコード)に保管して
メモリから破棄する処理を行います。これをスワップアウトといいます。
また、オブジェクトの破棄は行わずストアへの保管だけを行うことをバックアップといいます。
ストアに保管する際にはJavaのオブジェクトを直列化するので
セッションに利用するオブジェクトはSerializable
インターフェイスを実装する必要があります。
具体的には、
session.setAttribute(name, value);
としたときに、valueオブジェクトがSerializable
インターフェイスを実装していないと
例外が発生します。
このマネージャを利用すると、以下の処理が checkInterval 秒ごとに行われます。
このときのタイムアウト値はweb.xmlのsession-timeout要素で指定されます。
maxIdleSwap秒以上使われていないセッションをスワップアウトします。
maxActiveSessions個を超えたセッションのうち、
minIdleSwap秒以上使われていないものをスワップアウトします。
maxIdleBackup秒以上使われていないセッションをバックアップします。
以下、PersistentManager要素に指定できる属性を列挙します。
セッション識別子を計算するアルゴリズムを指定します。
この値は java.security.MessageDigest
クラスでサポートされている必要があります。
デフォルトは MD5
です。
使用するPersistentManagerクラスを指定します。
このクラスは org.apache.catalina.Manager
インターフェイスを実装している必要があります。org.apache.catalina.session.PersistentManager
を指定して下さい。
セッション識別子生成時に用いられる乱数生成メソッドに渡す文字列を指定します。
デフォルトでもある程度有用なセッション識別子は生成されますが、
セキュリティが重要な環境下で使用する場合には
ここで明示的に何らかの文字列を指定する方がより強固な(他人に利用されにくい)識別子が生成されます。
使用する乱数生成クラスを指定します。
このクラスは java.util.Random
インターフェイスを実装している必要があります。
省略すると、java.security.SecureRancom
がデフォルトで使用されます。
これをtrue(デフォルト)にすると、全ての有効なセッションは
Catalinaサーバ終了時にスワップアウトされ保管されます。
保管された全てのセッションは、次回のサーバスタート時にメモリにロードされます。
つまり、サーバを再起動してもセッションは無効になりません。
これはアプリケーションの停止/開始や再起動時にも同じように働きます。
メモリ内に保持できるセッションの最大数を制限します。
-1(デフォルト)にすると、セッションは無制限に生成されます。
この値を超えるセッションを生成しようとするとIllegalStateExceptionが発生します。
このときに独自の画面を表示させたいなら、web.xmlのerror-page要素を記述して下さい。
セッションは最大数maxActiveSessionsを超えると
超えた分のセッションがスワップアウトされますが、
少なくともこの秒数を超える期間使われない限りはスワップアウトの対象になりません。
スワップアウトされたセッションに再度接続要求が来ると、
Catalinaはセッションをスワップインして利用することになります。
セッションが最後に使われてからスワップアウトされるまでの時間を秒単位で指定します。
minIdleSwapがこの値より大きい場合、この値はminIdleSwapで上書きされます。
-1にすると全てのセッションはスワップアウトされません。
セッションが最後に使われてからバックアップされるまでの時間を秒単位で指定します。
バックアップはスワップアウトと似ていますが、こちらはメモリからセッションを削除しません。
-1にすると、セッションはバックアップされません。
処理内容は似ていますが、使用目的はスワップアウトとは異なるはずです。
スワップアウトはメモリ使用量を抑える目的で使われるのに対し、
バックアップはセッションを記憶領域に保管してログのような目的で使われるのだと思います。
詳細は不明です。
生成されるセッションIDの長さを指定します。
デフォルトは 16
です。
スワップアウトされたセッションはストアと呼ばれる場所に保管されます。
ストアの指定は、Manager要素の子要素Storeに必ず指定しなければなりません。
ファイルベースのストアを使う場合は、以下の属性をStore要素に付加します。
org.apache.catalina.session.FileStore
を記述します。
ストアに保管されたセッションが切断されたかどうかのチェックを行う間隔を
秒単位で指定します(デフォルトは60秒)。
セッションを保管するディレクトリを指定します。
相対パスで記述した場合、その基準ディレクトリはworkディレクトリになります。
JDBC経由でデータベースをストアとして使う場合は、以下の属性をStore要素に付加します。
org.apache.catalina.session.JDBCStore
を記述します。
ストアに保管されたセッションが切断されたかどうかのチェックを行う間隔を
秒単位で指定します(デフォルトは60秒)。
使用するJDBCドライバのクラス名を記述します。
データベースにJDBC接続するためのURLを記述します。
ストアに利用するデータベースのテーブル名を記述します。
「セッションID」を書き出すデータベースのカラム名を記述します。
DBのカラムは可変文字列型にします。例: VARCHAR(100) NOT NULL PRIMARY KEY
「セッションアプリケーション名」を書き出すデータベースのカラム名を記述します。
これは「エンジン名/ホスト名/アプリケーション名」の形式になります。
DBのカラムは可変文字列型にします。例: VARCHAR(255)
「セッションデータ」を書き出すデータベースのカラム名を記述します。
DBのカラムはBLOB型にします。例:MEDIUMBLOB
「最終アクセス日付」を書き出すデータベースのカラム名を記述します。
DBのカラムは数値型(64bit)にします。例: BIGINT NOT NULL
「セッションタイムアウト値(秒)」を書き出すデータベースのカラム名を記述します。
「現在日付 > 最終アクセス日付 + タイムアウト値」になった時点で
このセッションは切断(DBからも削除)されます。
DBのカラムは数値型(32bit)にします。例: INT NOT NULL
「セッション有効フラグ」を書き出すデータベースのカラム名を記述します。
DBのカラムは固定文字列型(1文字)にします。例: CHAR(1) NOT NULL
ストアに利用するDBテーブルは、予め作成しておく必要があります。
例を以下に挙げます。MySQLでの動作を確認しました。
create table tomcat_sessions ( session_id varchar(100) not null primary key, valid_session char(1) not null, max_inactive int not null, last_access bigint not null, app_name varchar(255), session_data mediumblob, KEY kapp_name(app_name) );
ストアからセッションを削除したい場合、全ての値を-1、saveOnRestartをfalseに設定して
サーバ(又はアプリケーション)を再起動して下さい。
親要素 : Engine / Host / Context
データベースに関する情報を記述する要素です。
使用するクラスを指定します。
このクラスは org.apache.catalina.Realm
インターフェイスを実装している必要があります。
提供されているクラス群
様々なリソース情報を定義する要素です。
様々なコンポーネントを定義する要素です。
アクセスログのコンポーネントに関する記述です。
使用するクラスを指定します。org.apache.catalina.valves.AccessLogValve
を使用して下さい。
ログを出力するディレクトリを指定します。
デフォルトでは CATALINA_HOME/logs
になっています。
ログ出力フォーマットを定義します。common
/ combined
と記述すると、標準で用意されているフォーマットが用いられます。
独自のフォーマットを利用したい場合は、以下に記述するフォーマット文字列を組み合わせて記述します。
リモートIPアドレス
ローカルIPアドレス
サーブレットが出力したバイト数(HTTPヘッダを除く)
ただし0の場合は -
と表記します。
サーブレットが出力したバイト数(HTTPヘッダを除く)
リモートホスト名。
ただし、resolveHosts
が false の場合にはIPアドレスを返す(%aと同じ)
リクエストを要求したプロトコル(HTTP/1.1等)
常に -
を返す(利用法は不明)
リクエストメソッド(GET,POST等)
このリクエストを受け取ったローカルのポート番号
クエリー文字列
リクエストメソッド + リクエストURI
レスポンスが返したステータスコード
ユーザのセッションID
現在時刻
リモートユーザ名
リクエストURI
ローカルサーバ名
リクエストを処理するのに要した時間(ミリ秒単位)
リクエストを処理するのに要した時間(秒単位)
出力するファイル名のプレフィックス(先頭に付く文字列)を指定します。
デフォルトは"access_log.
"です。
ホスト名を解決するかどうかを指定します。
trueにすると、DNSを利用してIPアドレスからホスト名を取得します。
デフォルトはfalseです。
出力するファイル名のサフィックス(後方に付く文字列)を指定します。
デフォルトは""(空文字)です。
ログのローテート処理を行うかどうかを指定します。
true(デフォルト)にすると、出力するログファイルは時間毎に変更されます。
条件付きでログを出力する場合に指定します。
例えば、conditionの値を"junk"と指定すると、ServletRequest.getAttribute("junk") == null
が成立する場合のみ
ログが出力されます。
rotatable がtrueのとき、出力するファイル名のフォーマットを指定します。
デフォルトでは"yyyy-MM-dd
"です。このとき、ファイル名はaccess_log.2004-01-26
のようになります。
この場合、ログファイルのローテート間隔は1日になります。
フォーマットを"yyyy-MM-dd.HH
"のようにすれば、ローテート間隔は1時間になります。
フォーマット形式はJava標準クラスのSimpleDateFormat
に準拠します。
IPアドレスによるフィルタリングを掛けるコンポーネントです。
使用するクラスを指定します。org.apache.catalina.valves.RemoteAddrValve
を記述して下さい。
許可するIPアドレスを記述します。複数指定する場合はカンマで区切って下さい。
「192.168.1.*」などのワイルドカード形式が利用できます。
この属性を記述した場合、指定したIPアドレスからのアクセスのみが許可されますが
記述しない場合はdenyで指定した以外の全てのIPアドレスからのアクセスが許可されます。
拒否するIPアドレスを記述します。複数指定する場合はカンマで区切って下さい。
ワイルドカード形式が利用できます。
allow と deny の両方に当てはまるIPアドレスは「拒否」されます。
やや複雑なので解説します。
allowで指定してあり、かつdenyで指定していないアドレスのみが許可されます。
allowで指定したアドレスのみが許可されます。
denyで指定した以外の全てのアドレスが許可されます。
全てのアドレスが許可されます。
…フィルタリングを掛けないのと一緒です(笑)。
ホスト名によるフィルタリングを掛けるコンポーネントです。
使用するクラスを指定します。org.apache.catalina.valves.RemoteHostValve
を記述して下さい。
許可するホスト名を記述します。複数指定する場合はカンマで区切って下さい。
「*.limy.org」などのワイルドカード形式が利用できます。
この属性を指定しない場合、denyで指定した以外の全てのホストからのアクセスが許可されます。
拒否するホスト名を記述します。複数指定する場合はカンマで区切って下さい。
ワイルドカード形式が利用できます。
allow と deny の両方に当てはまるホスト名は「拒否」されます。