エンジンコンテナ

目次

はじめに

Engine要素は、特定のCatalina Serviceに関連付けられたリクエスト処理機構全体を表します。これは、1つ以上のConnectorsからのすべてのリクエストを受信して処理し、完了した応答をConnectorに返して、最終的にクライアントに送り返します。

正確に1つのEngine要素が、Service要素内にネストされている必要があります。これは、このServiceに関連付けられているすべての対応するConnector要素の後に続きます。

属性

共通属性

Engineのすべての実装は、次の属性をサポートしています

属性説明
backgroundProcessorDelay

この値は、このエンジンとその子コンテナ(すべてのホストとコンテキストを含む)でbackgroundProcessメソッドの呼び出しの間隔を秒単位で表します。子コンテナの遅延値が負でない場合(つまり、独自のスレッドを使用している場合)、子コンテナは呼び出されません。これを正の値に設定すると、スレッドが生成されます。指定された時間が経過すると、スレッドはこのエンジンとそのすべての子コンテナでbackgroundProcessメソッドを呼び出します。指定しない場合、この属性のデフォルト値は10です。これは10秒の遅延を表します。

className

使用する実装のJavaクラス名。このクラスはorg.apache.catalina.Engineインターフェースを実装する必要があります。指定しない場合、標準値(以下に定義)が使用されます。

defaultHost

デフォルトのホスト名。これは、このサーバー上のホスト名宛てのリクエストを処理するHostを識別しますが、この構成ファイルでは構成されていません。この名前は、直ちにネストされたHost要素のいずれかのname属性と一致する必要があります。

jvmRoute

セッションアフィニティを有効にするために、ロードバランシングシナリオで使用する必要がある識別子。クラスタに参加するすべてのTomcatサーバーで一意である必要のある識別子は、生成されたセッション識別子に追加されます。これにより、フロントエンドプロキシは常に特定のセッションを同じTomcatインスタンスに転送できます。

name

ログおよびエラーメッセージで使用される、このエンジンの論理名。同じServerで複数のService要素を使用する場合、各Engineには一意の名前が割り当てられている必要があります。

startStopThreads

このEngineが子Host要素を並行して開始するために使用するスレッドの数。特別な値0を指定すると、Runtime.getRuntime().availableProcessors()の値が使用されます。負の値を指定すると、Runtime.getRuntime().availableProcessors() + valueが使用されます。ただし、これが1未満の場合は、1つのスレッドが使用されます。指定しない場合、デフォルト値1が使用されます。1つのスレッドが使用されている場合、ExecutorServiceを使用する代わりに、現在のスレッドが使用されます。

標準的な実装

Engineの標準的な実装は、org.apache.catalina.core.StandardEngineです。これは、次の追加属性をサポートしています(上記の共通属性に加えて)

属性説明

ネストされたコンポーネント

このEngine要素内に1つ以上のHost要素をネストできます。それぞれが、このサーバーに関連付けられた異なる仮想ホストを表します。少なくとも1つのHostが必要です。また、ネストされたHostの1つは、上記にリストされたdefaultHost属性に指定された名前と一致する名前を持っている必要があります。

Engine要素内に対応する要素をネストすることにより、次のユーティリティコンポーネントのインスタンスを最大1つネストできます。

  • Realm - このEngine内にネストされたすべてのHostsおよびContextsで、ユーザーのデータベースとその関連する役割を共有できるようにするRealmを構成します。これは、下位レベルのRealm構成によってオーバーライドされない限りです。

特別な機能

ロギング

エンジンは、org.apache.catalina.core.ContainerBase.[enginename]ログカテゴリに関連付けられています。括弧は実際には名前の一部であることに注意してください。省略しないでください。

アクセスログ

Webサーバーを実行すると、通常生成される出力ファイルの1つにアクセスログがあります。これは、サーバーによって処理されたリクエストごとに、標準形式で1行の情報を生成します。Catalinaには、Webサーバーによって作成されたものと同じ標準形式、または任意の数のカスタム形式でアクセスログを作成できるオプションのValve実装が含まれています。

EngineHost、またはContextによって処理されたすべてのリクエストに対してアクセスログを作成するようにCatalinaに要求するには、次のようにValve要素をネストします。

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

サポートされている構成属性の詳細については、アクセスログバルブを参照してください。

ライフサイクルリスナー

このEngineの開始または停止時に通知する必要があるJavaオブジェクトを実装した場合は、この要素内にListener要素をネストして宣言できます。指定するクラス名は、org.apache.catalina.LifecycleListenerインターフェースを実装する必要があり、対応するライフサイクルイベントの発生について通知されます。このようなリスナーの構成は次のようになります。

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

Listenerには、この要素から構成できる追加のプロパティをいくつでも含めることができることに注意してください。属性名は、標準のプロパティメソッドの命名パターンを使用して、対応するJavaBeanプロパティ名と一致します。

リクエストフィルタ

周囲のEngineHost、またはContext要素宛てのすべての着信リクエストで、IPアドレスまたはホスト名を確認するようにCatalinaに要求できます。リモートアドレスまたは名前は、構成された「accept」および/または「deny」フィルターに対してチェックされます。これらのフィルターは、java.util.regex正規表現構文を使用して定義されます。受け入れられない場所からのリクエストは、HTTP「Forbidden」エラーで拒否されます。フィルター宣言の例

<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\.\d+"/>
  ...
</Engine>

サポートされている構成オプションの詳細については、リモートアドレスフィルターおよびリモートホストフィルターを参照してください。