この節では、コンポーネント (単純コンポーネントまたは複合コンポーネント) のインストールブロック内でしか使用できない手順を示します。
これは、ほかのコンポーネントに対する現在のコンポーネントの永続的な依存性を作成するために使用される手順です。 この手順は、その実行時にまず指定された基準に一致するインストール済みコンポーネントが存在しないかチェックし、そのようなコンポーネントが存在しない場合は停止します (この動作は <checkDependency> 手順に同じ)。 一致するコンポーネントが見つかると、一致したコンポーネント (dependee、依存先コンポーネント) と呼び出しコンポーネント (dependant、依存元コンポーネント) 間に永続的な依存性が作成されます。 複数のインストール済みコンポーネントが基準に一致する場合 (インストールパスを指定しないとこのような状況となり得る) は、最新のものが依存先として使用されます。 永続的なコンポーネントは、手順で指定される名前で作成されます。 この名前は、インストールブロックで作成されるすべての依存性間で一意のものでなければなりません。
作成された永続的な依存性は、依存コンポーネントがアンインストールされるまで持続します。 永続的な依存性を作成したあとで後続の手順で依存コンポーネントのインストールが停止する場合、依存性はこの停止時にただちに削除されます。
個々のコンポーネントは、<createDependency> 手順をほかのコンポーネントごとに実行することにより任意の数のコンポーネントに依存できます。 依存性が満たされない場合に実際の処理を行う前にインストールが停止するように、createDependency 手順をインストールブロックの最初の手順として指定することを推奨します (必須ではありません)。
名前 |
型 |
必須 |
構成可能 |
説明 |
---|---|---|---|---|
name |
Identifier |
はい |
不可 |
作成する依存性の名前。 これは、現在のコンポーネントによって作成されるすべての依存性の間で一意のものでなければならない |
名前 |
数 |
説明 |
installed component targeter |
1 |
依存先コンポーネント (dependee) を特定する |
コンポーネントのアンインストールは、そのコンポーネントに対して依存するインストール済みコンポーネントが存在する場合行えません。 コンポーネントのアンインストールブロックが検出された場合で、そのコンポーネントを依存先とする 1 つ以上の永続的な依存性が存在するときは、アンインストールはただちに停止します。 しかし、コンポーネント A によってコンポーネント B のアンインストールが進行している場合、A によって作成された B に対する依存性が B のアンインストールを防止することはなく、この依存性は B が正常にアンインストールされた時点で暗黙に削除されます。
依存先コンポーネントは、<dependantCleanup> ブロックを使用してその依存元 (dependant) をアンインストールするアクションを指定できます。
同じホストとインストールパス上にインストールされた同じバージョンツリー内に既存コンポーネントが検出される場合、コンポーネントインストールは、再インストールと見なされます。 コンポーネントの再インストールが行えるのは、その新しいコンポーネントが本来のコンポーネントのすべての依存元に適合する場合だけです。 コンポーネントは常に同じバージョンコンポーネントで再インストールできますが、異なるバージョンで再インストールができるのは永続的なコンポーネントを作成した <createDependency> 手順内で指定された制約に新しいバージョンも適合する場合だけです。
コンポーネントの単純インストールブロックが検出される場合は、インストールによって既存のインストールが上書きされるか確認する必要があります。 上書きされる場合は、既存のコンポーネントを依存先としている永続的な依存性をすべて検出し、インストールされる新しいコンポーネントについても依存性の制約が適合するかを検証し直します。 適合しないものがある場合、新しいコンポーネントのインストールは失敗し、本来のコンポーネントがインストールされたままとなります。 すべて適合する場合、新しいコンポーネントがそのインストールを正常に完了した時点で、当該コンポーネントがすべての永続的な依存性の新しい依存先となります。 新しいコンポーネントのインストールが正常に完了した時点で本来のコンポーネントはアンインストールされると見なされ、そのコンポーネントの依存元であったすべての永続的な依存関係が削除されます。 つまり、新しいコンポーネントは必要に応じて依存性を作成し直す必要があります。
依存性の名前は、慣例的に「xxx2yyy」という表記で付けられます。xxx は依存元コンポーネントの名前、yyy は依存先コンポーネントの名前を示します。 たとえば、管理対象サーバー WebLogic はその管理サーバーに対して「server2domain」という依存性を持ち、その包含クラスタに対して「server2cluster」という依存性を持つ例が考えられます。 この慣例は依存関係の状態を自己記録として表現するのに便利であり、特定のコンポーネントの依存先関係と依存元関係の両方を示すことができます。
これは、インストール中のコンポーネントの現在のインストール状態のスナップショットを作成するための手順です。 インストールブロックには、任意の数の <createSnapshot> 手順を含めることができます。
createSnapshot 手順は引数の引き渡しをサポートしないため、必要なパラメタを指定されたスナップショットブロックで宣言することはできません。 引数の引き渡しがサポートされないのは、この機能をサポートすると生成されたスナップショットに対してあとで比較が行われる際に引数の収集と引き渡しのサポートも必要となるためです。
複合コンポーネントに対して比較が行われる場合には、入れ子になったすべてのコンポーネント参照の再帰的なインストールによって作成されたスナップショットのツリー一式に加えて、そのコンポーネントによって直接作成されたスナップショットもすべて含まれます。 しかし、最上位のコンポーネント参照に関連付けられたスナップショットは考慮されず、必要に応じて <addSnapshot> キャプチャ命令を使用して複合コンポーネントのスナップショット内に明示的に含める必要があります。
また、入れ子になったコンポーネントは相互に依存していることがあり、このような場合にはそれらのコンポーネントがすべてインストールされるまでスナップショットのキャプチャを延期する必要があることにも注意してください。 相互依存の関係にある例として、ディレクトリを配備する入れ子コンポーネントと、そのディレクトリにファイルを配備する入れ子コンポーネントが挙げられます。 このような場合には、包含コンポーネントでインストール中にスナップショットを作成しないように入れ子コンポーネントに指示するパラメタ引き渡しまたは特殊なインストールブロックを使用して入れ子コンポーネントをインストールし、続いて、包含コンポーネントのスナップショットブロックで <addSnapshot> 命令を使用して入れ子コンポーネントの適切なスナップショットを含めることを推奨します。
名前 |
型 |
必須 |
構成可能 |
説明 |
blockName |
entityName |
はい |
不可 |
当該コンポーネント内で実行するスナップショットブロックの名前 |
これは、対象ホストにコンポーネントをインストールするための手順です。 この手順を使用すると、対象コンポーネントの指定されたインストールブロックの手順が実行されます。
この手順の構文は、コンポーネントターゲッターを省略できる (ターゲッターを省略すると <thisComponent> が指定されたと想定される) 点を除き単純プラン <install> 手順で指定する場合と同じです。
コンポーネント内で使用される場合、この手順は同一コンポーネント内のほかの既存インストールブロックの呼び出しにしばしば使用されます。 この場合、一番外側のインストールブロックがその実行を完了するまで、コンポーネントのインストールが完了したとは見なされません。 また、ほかのローカルインストールブロックの呼び出し対象がほかのホストに変更された場合でも、コンポーネントは最初のインストール手順の対象となったホストにインストールされたとしか見なされません。
この手順は、参照先コンポーネントをインストールする目的で複合コンポーネント内でも使用できます。 参照先コンポーネントは、包含コンポーネントのインストール先以外のホストにもインストールできます。 包含コンポーネントのインストールが失敗する場合、この失敗以前にインストールが正常に行われている入れ子になった参照先コンポーネントはすべて、アンインストールブロックを実行することなく暗黙にアンインストールされます。 しかし、失敗以前にインストールが正常に行われた最上位の参照先コンポーネントはインストールされたままとなります。