エンジンコンテナ

目次

はじめに

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

Engine要素は、対応するすべてのConnector要素に続いて、Service要素の中に1つだけネストする必要があります。

属性

共通属性

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()の値が使用されることを意味します。負の値は、これが1未満でない限りRuntime.getRuntime().availableProcessors() + valueが使用されることを意味し、その場合は1スレッドが使用されます。指定しない場合、デフォルト値の1が使用されます。1スレッドが使用される場合、ExecutorServiceを使用するのではなく、現在のスレッドが使用されます。

標準実装

Engineの標準実装はorg.apache.catalina.core.StandardEngineです。上記で示した共通属性に加えて、以下の追加属性をサポートしています。

属性説明

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

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

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

  • Realm - ユーザーとその関連するロールのデータベースを、下位レベルのRealm設定によって上書きされない限り、このEngine内にネストされたすべてのHostsContextsで共有できるようにする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に要求できます。リモートアドレスまたは名前は、java.util.regex正規表現構文を使用して定義された設定済みの「accept」および/または「deny」フィルタに対してチェックされます。受け入れられない場所から来たリクエストは、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>

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