The Apache Tomcat Servlet/JSP Container

Apache Tomcat 6.0

Apache Logo

Apache Tomcat 設定リファレンス

Engine コンテナ

はじめに

Engine 要素は 1 Catalina Service に対し,そのすべてのリクエストを処理するからくり (machinery) を表す。 1個以上の Connector からのリクエストをすべて 受け取って処理し,完成したレスポンスをその Connector に返し, 最終的にはクライアントへ返信する。

正確に1個の Engine 要素が, Service 要素の内側で, Service に対応する Connector 要素すべての後に入れ子にされていなければならない。

属性
共通属性

Engine のすべての実装は次の属性をサポートする:

AttributeDescription
backgroundProcessorDelay

この値は,この engine およびその子コンテナ (すべての host と context を含む) での backgroundProcess メソッドの呼出しと呼出しの間の遅延 (秒) を表す。 子コンテナの遅延値が非負ならば (子コンテナが自分自身の処理スレッドを使うことを意味するから), [engine の処理スレッドがわざわざ] 子コンテナ [のメソッド] を呼び出すことはしない。 この値を正にすると [その engine 用の処理] スレッドが1本,生成される。 指定された秒数だけ待ってから,このスレッドは engine およびその子コンテナすべての backgroundProcess メソッドを [どれか1個] 呼び出す。 指定しなければ,属性のデフォルト値は 10 である。 これは [メソッドの呼出しから次の呼出しまで] 10 秒の遅延 [があること] を意味する。

[host と context の同属性のデフォルト値は -1 です。 つまり,デフォルトでは engine とその子コンテナのバックグラウンド処理がすべて, その engine 用の1本の処理スレッドで 10 秒ごとに (ぼちぼちと) こなされます。 場合によっては順番が回ってくるまで数十秒以上待たされるかもしれません。 特定の context のバックグラウンド処理を特急で処理するには,その context の属性値を設定して, それ専用の処理スレッドを設けます]

className

使用する実装の Java クラス名。 このクラスは org.apache.catalina.Engine インタフェースを実装しなければならない。 指定しなければ,標準実装 (下記で定義) が使われる。

defaultHost

デフォルトの host 名。 この設定ファイルで設定されていないこの server 上の host 名へ向けられたリクエストを処理する Host を指定する。 この名前は,直接入れ子にしている Host 要素のうちのどれか一つの name 属性 と一致しなければならない

jvmRoute

ロード・バランシング・シナリオで session affinity を可能にするために使われる必要がある識別子。 この識別子は,クラスタの中の Tomcat 5 [ママ] サーバすべてにわたって一意的でなければならない。 この識別子は,生成されるセッション識別子に接尾される。 これによりフロント・エンド proxy が同じセッションを同じ Tomcat 5 [ママ] インスタンスへ振り分けることができる。

name

この Engine の論理名。ログとエラーのメッセージで使われる。 1個の Server で複数の Service 要素を使うときは, 各 Engine に一意的な名前を割り当てなければならない

標準実装

Engine の標準実装はorg.apache.catalina.core.StandardEngine である。 (上記の共通属性に加えて) 次の付加的な属性をサポートする:

AttributeDescription
入れ子コンポーネント

君はこの Engine 要素の内側で1個以上の Host 要素を 入れ子にできる。それぞれがこの server の別々の仮想ホストを表す。 少なくとも1個の Host が必要であり, かつ入れ子の Hosts のうち1個の名前は,上述の defaultHost 属性が指定する名前と一致しなければならない

君はこの Engine 要素の内側で1個の DefaultContext を 入れ子にしてもよい (し省略してもよい)。 これは自動的にデプロイされる web アプリケーションのデフォルトの特性を定義する。

君は次のユーティリティ・コンポーネントをたかだか1個だけ Engine 要素の内側に入れ子にできる:

  • Realm - 1個の realm のユーザ (とそのロール) のデータベースが, この Engine の内側のすべての HostContext で共有されるように設定する。 ただし,下位レベルの Realm 設定が,これよりも優先される。
特記事項
Logging

engine の log category は org.apache.catalina.core.ContainerBase.[enginename] である。 ブラケットは,実際に名前の一部であり,省略してはならない。

アクセス・ログ

君が web サーバを走らせる時,通常生成される出力ファイルの一つがアクセス・ログ である。 これはサーバが処理したリクエストごとに,ある標準的な書式で,1行の情報を生成する。 Catalina にはオプションとして Valve 実装がある。 これは [多くの] web サーバが作成する標準的な書式で,あるいは任意のカスタム書式で, アクセス・ログを作成することができる。

君は,下記のように Valve 要素を入れ子にすることによって, EngineHost または Context が処理する全リクエストに対し,アクセス・ログを作成するように Catalina に要求できる。

<Engine name="Standalone" ...>
  ...
  <Valve className="org.apache.catalina.valves.AccessLogValve"
         prefix="catalina_access_log." suffix=".txt"
         pattern="common"/>
  ...
</Engine>

サポートされている設定属性について詳しくは Access Log Valve を見よ。

ライフサイクル・リスナ

もしも君が,この Engine が何時 start または stop したのかを知る必要がある Java オブジェクトを実装したときは,この要素の内側に Listener を入れ子にすることで, それを宣言できる。 君が指定するクラス名は org.apache.catalina.LifecycleListener インタフェースを実装していなければならない。 そのクラスは対応するライフサイクル・イベントが生じたことを [メソッドの呼出しによって」知らされる。 このようなリスナの設定はこうなる:

<Engine name="Standalone" ...>
  ...
  <Listener className="com.mycompany.mypackage.MyListener" ... >
  ...
</Engine>

Listener はどれだけでも多く付加的なプロパティを持つことができる。 それらのプロパティを,この [XML の] 要素から設定してよい。 [要素の] 属性名は,標準的なプロパティ・メソッド命名パターンを使って,対応する JavaBean のプロパティ名と照合される。 [foo という名前の属性の値は setFoo メソッドでセットされる,などです]

リクエスト・フィルタ

君は,取り囲む Engine, Host または Context 要素あてに 到来した各リクエストについて,IP アドレスまたはホスト名をチェックするように Catalina に要求できる。 リモート・アドレスまたは名前が "accept" および/または "deny" フィルタの設定リストに対してチェックされる。 各フィルタは Jakarta Regexp 正規表現ライブラリ がサポートする正規表現構文を使って定義される。 accept されない場所から来たリクエストは HTTP "Forbidden" エラー [コード 403] で拒絶される。 フィルタ宣言の例:

<Engine name="Standalone" ...>
  ...
  <Valve className="org.apache.catalina.valves.RemoteHostValve"
         allow="*.mycompany.com,www.yourcompany.com"/>
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         deny="192.168.1.*"/>
  ...
</Engine>

サポートされている設定オプションについて詳しくは Remote Address FilterRemote Host Filter を見よ。


Copyright © 1999-2006, Apache Software Foundation