<installList> 要素は <component> 要素の子であり、1 つ以上の名前付きインストールステップブロックを含みます。各ブロックは、当該コンポーネントをインストールする個々の方法を提供します。多くのコンポーネントには、<installSteps> 要素の子としてインストールブロックが1 つだけ存在します (この節で後述)。
この要素は、非派生コンポーネントの場合は必須で、派生コンポーネントの場合はオプションです。この要素を使用する場合、この要素は 1 回しか出現できません。
インストール環境ごとに異なるステップが必要な場合は、複数のインストールブロックを使用できます。たとえば、EBJ アプリケーションをサーバークラスタに配備するインストールブロック、単一の管理対象サーバーに配備する別のインストールブロック、最初のインストール用のインストールブロック、およびアプリケーションをアップグレードするインストールブロックを作成できます。
デフォルトでは、派生コンポーネントはそのベースコンポーネントの、アクセスが可能な <installList> 要素コンテンツを継承します。派生コンポーネントが <installList> を宣言する場合、そのコンテンツはベースコンポーネントのコンテンツと完全に結合されます。派生コンポーネントは新しい <installSteps> 要素を宣言することで継承された要素をオーバーライドできますが、ベースコンポーネントによって宣言された要素を削除することはできません。
<installList> 要素には 1 つの子要素 <installSteps> があり、この子要素は、当該コンポーネントをインストールするために実行されるステップのシーケンスを一覧表示します。<installSteps> 要素は、1 回または複数回出現することができます。
<installList> 要素には 1 つの子要素 <installSteps> があり、この子要素は、当該コンポーネントをインストールするために実行されるステップのシーケンスを一覧表示します。<install> ステップによって当該コンポーネントがインストールされる場合、ここに挙げるステップが順に実行されます。一般に、単純コンポーネントのインストールステップには <deployResource> ステップが含まれます。複合コンポーネントのインストールステップには、参照先コンポーネントをインストールするため、1 つ以上の <install> ステップが含まれます。
<installSteps> 要素の子は、オプションの <paramList> 要素から構成され、このあとには本体が続き、これはオプションのローカル <varList> 要素から構成されています。ローカル <varList> 要素には、ゼロ個以上の「共通」ステップまたは「コンポーネントのインストール専用」ステップが続きます。インストールブロックが抽象と宣言されている場合、本体は含められません。
デフォルトでは、派生コンポーネントはそのベースコンポーネントの、アクセス可能なすべてのインストールブロックを継承します。
派生コンポーネントは、ベースコンポーネントから継承されたインストールブロックに含まれない名前を使用して別のインストールブロックを定義できます。派生コンポーネントは、同じ名前を使用してブロックを宣言し直すことにより、継承した非最終インストールブロックをオーバーライドできます。ブロックの無効化は名前を使用してしか行えず、パラメータに基づいてオーバーロード(多重定義) することはできません。ブロックをオーバーライドする場合は、ブロックの全コンテンツ (アクセスモード、修飾子、およびパラメータ) を宣言し直す必要があります。本体を指定できるのは、優先するブロックが非抽象の場合だけです。アクセスモードは、ベースコンポーネントのモードよりも厳しくすることはできません。
派生コンポーネント内の優先ブロックのシグニチャーは、ベースコンポーネントのシグニチャーと互換性がなければなりません。互換性があるということは、ベースブロックが使用できる引数はすべて派生ブロックでも使用できることを意味します。
派生ブロックがベースブロックと互換性があるのは、必須パラメータを新たに宣言せず、親ブロックでオプションパラメータを必須パラメータとして再定義していない場合です。
以下のシグニチャー変更は互換性があると見なされます。
必須パラメータまたはオプションパラメータの削除
必須パラメータのオプションパラメータへの変更
オプションパラメータの追加
ブロックをオーバーライドすると、ベースコンポーネント内の参照も含め、そのブロックに対する参照はすべてオーバーライドされた値に評価されます。
派生コンポーネントを非抽象と宣言する場合は、ベースコンポーネントによって宣言されているすべての抽象ブロックを、派生コンポーネントによってオーバーライドする必要があります。
<superComponent> ターゲッターを使用して派生コンポーネントがブロックをオーバーライドする場合でも、派生コンポーネント内のブロックは、ベースコンポーネントによって定義されているブロックを明示的に呼び出すことができます。
<installSteps> 要素には次の属性があります。
access – accessEnum 型のオプション属性で、インストールブロックのアクセシビリティを指定します。次の値が使用できます。
PUBLIC – アクセスはまったく制限されません。デフォルトのアクセスモードです。
PROTECTED – アクセスは同じパス内の派生コンポーネントとエンティティに制限されます。
PATH – アクセスは同じパス内のエンティティに制限されます。
PRIVATE – アクセスは当該コンポーネントに制限されます。
コンポーネントから直接実行できるのは PUBLIC ブロックだけです。
modifier – ModifierEnum 型のオプション属性で、インストールブロックのオーバーライド要件を指定します。次の値が使用できます。
ABSTRACT – ブロックに本体を含めることはできません。本体は、非抽象派生コンポーネントによって指定する必要があります。インストールブロックを抽象と宣言できるのは、コンポーネントも抽象と宣言されている場合だけです。抽象ブロックは専用にはできません。非抽象ブロックの場合、本体を宣言する必要があります。
FINAL – インストールブロックを派生コンポーネントによってオーバーライドすることはできません。
modifier 属性を指定しない場合、派生コンポーネントはブロックをオーバーライドするかどうかを選択できます。
name – entityName 型の必須属性で、インストールブロックの名前。この名前は、包含している <installList> 内のすべてのインストールブロックの中で一意である必要があります。
<paramList> 要素は、<installSteps>、<uninstallSteps>、<snapshot>、および <control> 要素の子です。この要素は、包含要素のステップで使用できるパラメータの一覧を宣言します。パラメータの値は、呼び出し側の <argList> 要素のコンテンツに基づいて呼び出し側によって定義されます。たとえば、<installSteps> ブロック内の <paramList> の場合、パラメータ値は <installSteps> ブロックを呼び出した <install> ステップの <argList> に基づいて定義されます。
包含要素のステップは、次の変数とパラメータを使用できます。
ローカル <varList> 要素で宣言されたローカルスコープ変数
<paramList> 要素で宣言されたパラメータ
包含コンポーネントのコンポーネント <varList> 要素で宣言されたコンポーネントスコープ変数
<paramList> パラメータの名前がコンポーネント <varList> 変数と同じである場合、パラメータの値が使用されます。このような場合、パラメータはコンポーネント変数を「隠蔽」していると言われます。隠蔽は、ローカル変数とパラメータの間では許可されません。これは、それらの名前が個別のものでなければならないためです。
<paramList> 要素には 1 つの必須子要素 <param> があります。この子要素はパラメータ宣言で、名前とデフォルト値が含まれます。定義する必要があるパラメータごとに、1 つの <param> 要素を指定します。
<param> 要素は <paramList> 要素の子で、(名前、デフォルト値が含まれる) パラメータを宣言します。デフォルト値が使用されるのは、呼び出し側がこのパラメータの値を明示的に渡さない場合だけです。デフォルト値が指定されず、呼び出し側がこのパラメータの値を明示的に渡さない場合、プランの実行時にプリフライトエラーが発生します。
<param> 要素には次の属性が含まれます。包含しているインストールブロック、アンインストールブロック、または制御ブロックが、プランまたはほかのコンポーネントからではなくユーザーによって直接呼び出される場合に、prompt 属性および displayMode 属性を使用します。
name – identifier 型の必須属性で、パラメータの名前。この名前は、包含要素によって宣言されているほかのすべてのローカル変数とパラメータにおいて一意でなければなりません。
prompt – オプション属性で、パラメータの値を求める際にユーザインタフェースで表示されるテキストを指定する文字列。この属性を指定しないと、name の値が使用されます。
default – オプション属性で、パラメータのデフォルト値を指定する文字列。パラメータには、コンポーネント変数、ターゲットホスト属性、セッション変数、およびインストール済みコンポーネント変数への参照を含めることができますが、ほかのパラメータへの参照を含めることはできません。
displayMode – オプション属性で、パラメータの表示モードを指定します。次の値が有効です。
PASSWORD – ユーザー指定の値が隠されます。つまりパスワードは表示されないか、アスタリスクに置き換えられます。
BOOLEAN – チェックボックスを使用してパラメータが指定されます。
CLEAR – 入力時に値が表示されます。
値が CLEAR または BOOLEAN の場合は、入力時に安全に表示されます。この属性を指定しないと、値は CLEAR になります。
ローカル <varList> 要素は、<installSteps>、<uninstallSteps>、<snapshot>、および <control> 要素の子です。この要素は、包含要素のステップで使用できる変数の一覧を宣言します。これらの変数の値は宣言時に定義され、再定義は行えません。
包含要素のステップは、次の変数とパラメータを使用できます。
ローカル <varList> 要素で宣言されたローカルスコープ変数
<paramList> 要素で宣言されたパラメータ
包含コンポーネントのコンポーネント <varList> 要素で宣言されたコンポーネントスコープ変数
ローカル <varList> 変数の名前がコンポーネント <varList> 変数と同じである場合、ローカル変数の値が使用されます。このような場合、ローカル変数はコンポーネント変数を「隠蔽」していると言われます。隠蔽は、ローカル変数とパラメータの間では許可されません。これは、それらの名前が個別のものでなければならないためです。
ローカル <varList> 要素には 1 つの必須子要素 <var> があります。この要素は、ローカル変数 (名前、デフォルト値など) の宣言です。複数の <var> 要素を指定できます。