conf /server.xml内のTomcat構成ファイルappBaseおよびdocBase



Tomcat Configuration File Appbase



序文

最近、Tomcatでアプリを構成してデプロイしたときに、主に${CATALINA_HOME}/conf/server.xmlについていくつかの落とし穴を踏みました。構成ファイル内のホストノードプロパティappBase、およびホストノード子ノードのプロパティContext> docBase。

プロジェクトをApp1.warパッケージに入力し、warパッケージをtomcatの関連ディレクトリにアップロードして、デプロイメントを開始しました。



展開計画

1.デフォルト構成。conf/ server.xmlファイルを変更しないでください

戦争パッケージを直接${CATALINA_HOME}/webapps/に渡しますディレクトリ、tomcatを開始した後、tomcatはこのwebappsディレクトリでwarを自動的に解凍してデプロイします。

たとえば、App1.warをwebappsディレクトリに配置した後、tomcatはApp1.warをwebapps / App1ディレクトリに抽出してデプロイします。



これがデフォルトの構成です。コンテキストサブノードは追加されません。 Tomcatがwarパッケージを抽出するのは非常に便利です。

2. conf / server.xmlファイルを変更し、Contextノードを追加して、docBase =“ App1”を設定します(エラーの例)。

App1.warパッケージを${CATALINA_HOME}/webapps/に渡しますディレクトリを作成し、conf / server.xmlファイルを変更し、コンテキストノードを追加して、コンテキストノードのプロパティを指定しますdocBase=“App1”

プログラム1からわかるように、App1.warは自動的にApp1ディレクトリに抽出されるため、docBaseをApp1に設定するのが自然なようです。



ただし、これにはホストノードによって指定されたピットがあります。appBase=“webapps”そしてApp1はwebappsディレクトリにあるため、TomcatはappBaseに従ってApp1を1回ロードします。

Context子ノードが再度設定されます。docBase=“App1'このとき、tomcatはdocBaseに従ってApp1を再度ロードします。これは、App1が2回ロードされるのと同じです。

これにより、次のような多くの不可解な問題が発生する可能性があります。特定の時間指定タスクが2回実行されると同時に、ログが前日のファイルにヒットする可能性があるなど。

3. conf / server.xmlファイルを構成し、Contextノードを追加し、非WebアプリケーションのサブディレクトリとしてdocBaseを指定します(推奨)
  1. 新規${CATALINA_HOME}/mybapps/App1目次
  2. conf / server.xmlファイルを変更し、コンテキストノードを構成し、docBase=“${CATALINA_HOME}/myapps/App1”ここで${CATALINA_HOME}を指定します。 Tomcatのパスをインストールし、使用する場合は絶対パスに置き換えます
  3. App1.warを${CATALINA_HOME}/mybapps/App1/に入れます内容の下
  4. コマンドによるjar xvf App1.war warパッケージを現在のディレクトリに解凍します
  5. Tomcatを開始します
  6. 後続のwarパッケージが更新されたら、ステップ3と4を繰り返します。ステップ5を実行する必要はなく、tomcatは自動的に再デプロイします。

注:docBaseは絶対パスに設定する必要があります

シナリオ3の構成例

conf / server.xmlファイルのホストノード:

... ...

総括する

conf /server.xmlのホストノードのappBaseによって指定されたディレクトリ。

  1. このディレクトリの下のサブディレクトリは、アプリケーションとして自動的に展開されます。
  2. このディレクトリの下の.warファイルは自動的に解凍され、アプリケーションとしてデプロイされます。

DocBaseは、アプリケーションを指す単なるディレクトリであり、appBaseとは関係ありません。特に、docBaseがwebappsの下のディレクトリを指している場合、アプリが2回読み込まれ、奇妙な問題が発生します。