自動デプロイ - ユースケース

目次

はじめに

このページでは、多くの一般的なユースケースにおける自動デプロイヤの期待される動作を定義します。これはTomcatの機能の中でも複雑な領域です。このドキュメントとTomcatの動作の間に違いがある場合はバグですが、修正は、このドキュメント、Tomcatの動作、またはその両方を変更することによって行われる場合があります。

キー

用語説明
XML HostのconfigBaseにあるXML構成ファイル。単一の<Context>要素を含んでいなければならず、オプションでネストされた要素を含めることができます。明示的なdocBase属性は定義しません。単一のWebアプリケーションを表します。多くの場合、context.xmlファイルと呼ばれます。
XML+EW HostのconfigBaseにあるXML構成ファイル。単一の<Context>要素を含んでいなければならず、オプションでネストされた要素を含めることができます。外部WARを指す明示的なdocBase属性が含まれています。単一のWebアプリケーションを表します。多くの場合、context.xmlファイルと呼ばれます。
XML+ED HostのconfigBaseにあるXML構成ファイル。単一の<Context>要素を含んでいなければならず、オプションでネストされた要素を含めることができます。外部ディレクトリを指す明示的なdocBase属性が含まれています。単一のWebアプリケーションを表します。多くの場合、context.xmlファイルと呼ばれます。
WAR HostのappBaseにあるWARファイル。WARには、埋め込まれたcontext.xmlファイルが含まれていません。
WAR+XML HostのappBaseにあるWARファイル。WARには、埋め込まれたcontext.xmlファイルが含まれています。
DIR HostのappBaseにあるディレクトリ。ディレクトリには、埋め込まれたcontext.xmlファイルが含まれていません。
DIR+XML HostのappBaseにあるディレクトリ。ディレクトリには、埋め込まれたcontext.xmlファイルが含まれています。
再デプロイ (redeploy) Webアプリケーションを表すContextオブジェクトが破棄され、新しいContextオブジェクトが作成されます。存在し、構成によって許可されている場合、この新しいContextオブジェクトはcontext.xmlファイルを解析して作成されます。web.xmlファイルはアプリケーションの開始プロセス中に解析されます。デフォルト構成の標準的なManagerに保存されているセッションは永続化されません。再デプロイ中のWebアプリケーションへのリクエストは、Webアプリケーションがデプロイされていないかのように処理されます。
リロード (reload) Webアプリケーションを表すContextオブジェクトが停止され、その後開始されます。web.xmlファイルはアプリケーションの開始プロセス中に解析されます。デフォルト構成の標準的なManagerに保存されているセッションは永続化されません。リロード中のWebアプリケーションへのリクエストは、リロードが完了するまで保持され、その後、リロードされたWebアプリケーションを使用して続行されます。

新規ファイル

このセクションでは、自動デプロイプロセスが新しいWebアプリケーションを検出した場合のTomcatの動作について説明します。

アーティファクトの開始 構成設定 結果
deployXMLcopyXMLunpackWARs XMLWARDIR備考
XML いずれかいずれかいずれか YNN1, 2, 3
XML+EW いずれかいずれかfalse YNN1
XML+EW いずれかいずれかtrue YNY1
XML+ED いずれかいずれかいずれか YNN1, 2
WAR+XML falseいずれかfalse NYN4
WAR+XML falseいずれかtrue NYY4
WAR+XML truefalsefalse NYN
WAR+XML truefalsetrue NYY
WAR+XML truetruefalse YYN
WAR+XML truetruetrue YYY
WAR いずれかいずれかfalse NYN
WAR いずれかいずれかtrue NYY
DIR+XML falseいずれかいずれか NNY4
DIR+XML truefalseいずれか NNY
DIR+XML truetrueいずれか YNY
DIR falseいずれかいずれか NNY

削除されたファイル

このセクションでは、自動デプロイプロセスがWebアプリケーションファイルが削除されたことを検出した場合のTomcatの動作について説明します。

ファイルが削除または変更された場合、変更/削除されたリソースの後にリストされている再デプロイリソースは、それ自体が削除されます(そしておそらく再作成されます)。再デプロイリソースの順序は次のとおりです。

  1. WAR
  2. DIR
  3. XML
  4. グローバルリソース

上記の削除ルールにはいくつかの例外があります。

  • グローバルリソースは決して削除されません。
  • 外部リソースは決して削除されません。
  • WARまたはDIRが変更された場合、XMLファイルは、copyXMLtruedeployXMLtrueの場合にのみ削除されます。

次の表では

  • 「-」は「存在しない状態から変更なし」を意味します。つまり、アーティファクトは変更前には存在せず、変更後も存在しません。「N」ではなく「-」を使用することで、何が変化したかに注意を集中します。
  • 「R」は、WARファイルを展開することでディレクトリが再作成されることを意味します。これは、unpackWARstrueの場合にのみ発生します。
  • 「XW」は、WARにMETA-INF/context.xmlファイルが含まれている場合、それが抽出され、HostのconfigBaseに配置されることを意味します。これは、copyXMLtruedeployXMLtrueの場合にのみ発生します。
  • 「XD」は、ディレクトリにMETA-INF/context.xmlファイルが含まれている場合、それがHostのconfigBaseにコピーされることを意味します。これは、copyXMLtruedeployXMLtrueの場合にのみ発生します。
存在するアーティファクト 削除されたアーティファクト 残りのアーティファクト
XMLWARDIR XMLWARDIR備考
NNY DIR --N
NYN WAR -N-
NYY DIR -YR
NYY WAR -NN
YNN XML N--
YNY DIR N-N5
YNY XML XD-Y
YYN WAR NN-5
YYN XML XWY-
YYY DIR XWYR
YYY WAR NNN
YYY XML XWYY
YY(外部)N WAR YN-3
YY(外部)N XML NY(外部)-6
YNY(外部) DIR Y-N3
YNY(外部) XML N-Y(外部)6
YY(外部)Y DIR YY(外部)R
YY(外部)Y WAR YNN3
YY(外部)Y XML NY(外部)N6

変更されたファイル

このセクションでは、自動デプロイプロセスがWebアプリケーションファイルが変更されたことを検出した場合のTomcatの動作について説明します。

次の表では

  • 「-」は「存在しない状態から変更なし」を意味します。つまり、アーティファクトは変更前には存在せず、変更後も存在しません。「N」ではなく「-」を使用することで、何が変化したかに注意を集中します。
  • 「M」は、アーティファクトが変更されたことを意味します。
  • 「R」は、ディレクトリが削除され、WARファイルを展開することで再作成されることを意味します。これは、unpackWARstrueの場合にのみ発生します。
存在するアーティファクト 変更されたアーティファクト 残りのアーティファクト
XMLWARDIR XMLWARDIRアクション
NNY DIR --Mなし
NYN WAR -M-再デプロイ
NYY DIR -YMなし
NYY WAR -MR再デプロイ
YNN XML M--再デプロイ
YNY DIR Y-Mなし
YNY XML M-Y再デプロイ
YYN WAR YM-リロード
YYN XML MY-再デプロイ
YYY DIR YYMなし
YYY WAR YMRリロード
YYY XML MYY再デプロイ
YY(外部)N WAR YM(外部)-リロード
YY(外部)N XML MY(外部)-再デプロイ
YNY(外部) DIR Y-M(外部)なし
YNY(外部) XML M-Y(外部)再デプロイ
YY(外部)Y DIR YY(外部)Mなし
YY(外部)Y WAR YM(外部)Rリロード
YY(外部)Y XML MY(外部)Y再デプロイ

追加されたファイル

これは、追加されたファイルが変更されたものとして扱われ、次の追加アクションが行われます。

  • WARが追加された場合、DIRは削除され、unpackWARsに応じて再作成される場合があります。
  • 外部docBaseを参照するXMLファイルが追加された場合、appBase内のWARまたはDIRは削除されます。外部リソースがWARであり、unpackWARsがtrueの場合、DIRは再作成される場合があります。
  • WARが既に存在し、unpackWARsfalseの場合にDIRが追加されると、DIRは無視されますが、DIRが最初に検出されたときに警告がログに記録されます。WARが削除されると、DIRは残され、自動デプロイを介してデプロイされる場合があります。
  • 外部WARが既に存在する場合にWARがappBaseに追加されると、appBase内のWARは無視されますが、appBase内のWARが最初に検出されたときに警告がログに記録されます。外部WARが削除されると、appBase内のWARは残され、自動デプロイを介してデプロイされる場合があります。
  • そのDIRからデプロイされたアプリケーションのMETA-INFディレクトリにXMLファイルが追加された場合、アプリケーションは常に再デプロイされます。結果は、新規デプロイの場合と同じになります。

備考

  1. configBaseでXMLファイルが検出されたため、deployXMLcopyXMLは無視されます。
  2. WARファイルがないため、unpackWARsは無視されます。
  3. 期待されるdocBaseにコンテンツがないため、コンテキストの開始に失敗します。
  4. 埋め込まれたMETA-INF/context.xmlが含まれており、deployXMLfalseで、configBaseにXMLが提供されていないため、Webアプリケーションのデプロイに失敗します。
  5. XMLファイルは、copyXMLtruedeployXMLtrueの場合にのみ削除されます。
  6. 外部リソースはまだ存在しますが、Tomcatは外部リソースに関する知識を持っていないため、Webアプリケーションは完全にアンデプロイされます。