自動デプロイメント - ユースケース
目次
はじめに
このページでは、多くの典型的なユースケースにおける自動デプロイヤーの期待される動作を定義します。 これは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の動作について説明します。
開始アーティファクト | 構成設定 | 結果 | |||||
---|---|---|---|---|---|---|---|
deployXML | copyXML | unpackWARs | XML | WAR | DIR | 注記 | |
XML | どちらか | どちらか | どちらか | Y | N | N | 1, 2, 3 |
XML+EW | どちらか | どちらか | false | Y | N | N | 1 |
XML+EW | どちらか | どちらか | true | Y | N | Y | 1 |
XML+ED | どちらか | どちらか | どちらか | Y | N | N | 1, 2 |
WAR+XML | false | どちらか | false | N | Y | N | 4 |
WAR+XML | false | どちらか | true | N | Y | Y | 4 |
WAR+XML | true | false | false | N | Y | N | |
WAR+XML | true | false | true | N | Y | Y | |
WAR+XML | true | true | false | Y | Y | N | |
WAR+XML | true | true | true | Y | Y | Y | |
WAR | どちらか | どちらか | false | N | Y | N | |
WAR | どちらか | どちらか | true | N | Y | Y | |
DIR+XML | false | どちらか | どちらか | N | N | Y | 4 |
DIR+XML | true | false | どちらか | N | N | Y | |
DIR+XML | true | true | どちらか | Y | N | Y | |
DIR | false | どちらか | どちらか | N | N | Y |
削除されたファイル
このセクションでは、自動デプロイメントプロセスがWebアプリケーションファイルが削除されたことを検出したときのTomcatの動作について説明します。
ファイルが削除または変更されると、変更/削除されたリソースの後にリストされているリデプロイリソース自体が削除されます(そして場合によっては再作成されます)。 リデプロイリソースの順序は次のとおりです。
- WAR
- DIR
- XML
- グローバルリソース
上記削除ルールにはいくつかの例外があります。
- グローバルリソースは決して削除されません
- 外部リソースは決して削除されません
- WARまたはDIRが変更された場合、XMLファイルはcopyXMLが
true
でdeployXMLがtrue
の場合にのみ削除されます
次の表では
- ' - 'は「存在しない状態から変更なし」を意味します。 つまり、アーティファクトは変更前には存在せず、変更後にも存在しません。 「N」ではなく「-」を使用して、変更点に注意を向けています。
- 'R'は、WARファイルを展開してディレクトリが再作成されることを意味します。 これは、unpackWARsが
true
の場合にのみ発生します。 - 'XW'は、WARにMETA-INF/context.xmlファイルが含まれている場合、それが抽出され、HostのconfigBaseに配置されることを意味します。 これは、copyXMLが
true
でdeployXMLがtrue
の場合にのみ発生します。 - 'XD'は、ディレクトリにMETA-INF/context.xmlファイルが含まれている場合、それがHostのconfigBaseにコピーされることを意味します。 これは、copyXMLが
true
でdeployXMLがtrue
の場合にのみ発生します。
存在するアーティファクト | 削除されたアーティファクト | 残りのアーティファクト | |||||
---|---|---|---|---|---|---|---|
XML | WAR | DIR | XML | WAR | DIR | 注記 | |
N | N | Y | DIR | - | - | N | |
N | Y | N | WAR | - | N | - | |
N | Y | Y | DIR | - | Y | R | |
N | Y | Y | WAR | - | N | N | |
Y | N | N | XML | N | - | - | |
Y | N | Y | DIR | N | - | N | 5 |
Y | N | Y | XML | XD | - | Y | |
Y | Y | N | WAR | N | N | - | 5 |
Y | Y | N | XML | XW | Y | - | |
Y | Y | Y | DIR | XW | Y | R | |
Y | Y | Y | WAR | N | N | N | |
Y | Y | Y | XML | XW | Y | Y | |
Y | Y (外部) | N | WAR | Y | N | - | 3 |
Y | Y (外部) | N | XML | N | Y (外部) | - | 6 |
Y | N | Y (外部) | DIR | Y | - | N | 3 |
Y | N | Y (外部) | XML | N | - | Y (外部) | 6 |
Y | Y (外部) | Y | DIR | Y | Y (外部) | R | |
Y | Y (外部) | Y | WAR | Y | N | N | 3 |
Y | Y (外部) | Y | XML | N | Y (外部) | N | 6 |
変更されたファイル
このセクションでは、自動デプロイメントプロセスがWebアプリケーションファイルが変更されたことを検出したときのTomcatの動作について説明します。
次の表では
- ' - 'は「存在しない状態から変更なし」を意味します。 つまり、アーティファクトは変更前には存在せず、変更後にも存在しません。 「N」ではなく「-」を使用して、変更点に注意を向けています。
- 'M'は、アーティファクトが変更されたことを意味します。
- 'R'は、ディレクトリが削除され、WARファイルを展開して再作成されることを意味します。 これは、unpackWARsが
true
の場合にのみ発生します。
存在するアーティファクト | 変更されたアーティファクト | 残りのアーティファクト | |||||
---|---|---|---|---|---|---|---|
XML | WAR | DIR | XML | WAR | DIR | アクション | |
N | N | Y | DIR | - | - | M | なし |
N | Y | N | WAR | - | M | - | リデプロイ |
N | Y | Y | DIR | - | Y | M | なし |
N | Y | Y | WAR | - | M | R | リデプロイ |
Y | N | N | XML | M | - | - | リデプロイ |
Y | N | Y | DIR | Y | - | M | なし |
Y | N | Y | XML | M | - | Y | リデプロイ |
Y | Y | N | WAR | Y | M | - | リロード |
Y | Y | N | XML | M | Y | - | リデプロイ |
Y | Y | Y | DIR | Y | Y | M | なし |
Y | Y | Y | WAR | Y | M | R | リロード |
Y | Y | Y | XML | M | Y | Y | リデプロイ |
Y | Y(外部) | N | WAR | Y | M(外部) | - | リロード |
Y | Y(外部) | N | XML | M | Y(外部) | - | リデプロイ |
Y | N | Y(外部) | DIR | Y | - | M(外部) | なし |
Y | N | Y(外部) | XML | M | - | Y(外部) | リデプロイ |
Y | Y(外部) | Y | DIR | Y | Y(外部) | M | なし |
Y | Y(外部) | Y | WAR | Y | M(外部) | R | リロード |
Y | Y(外部) | Y | XML | M | Y(外部) | Y | リデプロイ |
追加されたファイル
これは、追加されたファイルが変更されたかのように扱われます。以下の追加のアクションがあります。
- WARが追加された場合、DIRは削除され、unpackWARsに応じて再作成される場合があります。
- 外部docBaseを参照するXMLファイルが追加された場合、appBaseのWARまたはDIRは削除されます。 外部リソースがWARでunpackWARsがtrueの場合、DIRは再作成される場合があります。
- WARが既に存在する場合にDIRが追加され、unpackWARsが
false
の場合、DIRは無視されますが、DIRが最初に検出されたときに警告がログに記録されます。 WARが削除された場合、DIRは残され、自動デプロイメントでデプロイされる場合があります。 - 外部WARが既に存在する場合にWARがappBaseに追加された場合、appBaseのWARは無視されますが、appBaseのWARが最初に検出されたときに警告がログに記録されます。 外部WARが削除された場合、appBaseのWARは残され、自動デプロイメントでデプロイされる場合があります。
- DIRからデプロイされたアプリケーションのMETA-INFディレクトリにXMLファイルが追加された場合、アプリケーションは常にリデプロイされます。 結果は、新しいデプロイメントの場合と同じです。
注記
- XMLファイルがconfigBaseで検出されたため、deployXMLおよびcopyXMLは無視されます。
- WARファイルがないため、unpackWARsは無視されます。
- 期待されるdocBaseにコンテンツがないため、コンテキストの開始に失敗します。
- 埋め込みMETA-INF/context.xmlが含まれており、deployXMLが
false
で、XMLがconfigBaseに提供されていないため、Webアプリケーションのデプロイに失敗します。 - XMLファイルは、copyXMLが
true
でdeployXMLがtrue
の場合にのみ削除されます。 - 外部リソースはまだ存在していますが、Tomcatは外部リソースを認識していないため、Webアプリケーションは完全にアンデプロイされます。