外部コンポーネント置換参照の値は、最初に、primary-component が参照するコンポーネントを解決することで計算されます。secondary-component を primary-component として使用している場合は、primary-component を解決するときに使用される最初の現在のコンポーネントとして、外部コンポーネント置換参照を含むコンポーネントが使用されます。さらに、primary-component によって解決されたコンポーネントが、新しい現在のコンポーネントになります。次に、secondary-component-list に含まれている各 secondary-component が、最後に解決されたコンポーネントを現在のコンポーネントとして使用することで解決されます。最後に、プロビジョニングシステムは最後に解決されたコンポーネントで変数 varname を検索して返します。
外部コンポーネント置換参照の値は、コンポーネントのインストール時に参照先コンポーネントに指定されていた変数の値に基づいて計算されます。インストール済みのコンポーネントで宣言されていない変数、またはターゲットホストにインストールされていないコンポーネントは、参照することはできません。また、外部コンポーネント置換参照を宣言したコンポーネントまたはプランがアクセスできない変数を参照することもできません。変数にアクセスできるのは、その変数がアクセス可能なアクセスモードで宣言され、宣言するコンポーネントがアクセス可能で、なおかつそのコンポーネントに到達するまでにたどる基本コンポーネントと二次コンポーネントのそれぞれがアクセス可能な場合に限られます。
外部コンポーネント置換参照は、プランの実行開始時ではなく、実行中に検出された時点で計算されます。したがって、プランでそれまでに実行されたステップに応じて、参照対象である、実際にインストールされたコンポーネントが変化する可能性があります。さらに、現在のターゲットホスト以外のホストにインストールされたコンポーネントを参照する場合は、他方のホストで同時に実行されている他のプランによって影響を受ける可能性があります。予測可能な結果を保証するには、現在のプラン実行のターゲットセットに含まれているホストに参照を限定してください。これらのホストは確実にロックされているからです。さらに、再ターゲットまたはシリーズの実行モードを使用することによって、プラン内の外部参照を受けるホストでの <install> または <uninstall> 動作の同期を取ります。
次に、明示的な外部コンポーネントを使用する、外部コンポーネント置換変数参照の例を示します。
:[component:installApache:sys.label] :[component:jdk#1.3:classpath] :[component:webApp#2.4@{/usr/local}:bannerColor] |
次の例で、プロビジョニングシステムは、現在のターゲットホストのルート物理ホストにインストールされたコンポーネントを解決します。
:[component(/):IIS global settings:install_path] |
次の例では、webAppPath は、生成コンテキストの関連コンポーネントに設定された、単純置換変数の名前に解決されます。外部参照対象のコンポーネントで定義されている変数ではありません。
:[component:webApp@{:[webAppPath]}:bannerColor] |
次に、targetableComponent を使用する外部コンポーネント置換変数参照の例を示します。
:[targetableComponent:hostName] :[targetableComponent(host1):port] |
次に、nested-component と toplevel-component を使用する外部コンポーネント置換変数参照の例を示します。
:[nestedRef:ref1:sys.label] :[toplevelRef:ref2:sys.name] :[toplevelRef(/):ref3@{/usr/local}:var1] |
次に、system-type-component と system-service-component を使用する、外部コンポーネント置換変数の例を示します。
:[systemService:com.sun.windows#Windows SS:classPath] :[systemType:com.sun.weblogic#WL Target Type:serverName] :[systemType(..):MyType@{/tmp}:var1] |
次に、dependee-component を使用する外部コンポーネント置換変数参照の例を示します。
:[dependee:app2domain:domainName] |
次に、container-component を使用する外部コンポーネント置換変数参照の例を示します。
:[container:sys.installPath] |
次に、連鎖型コンポーネント参照の例を示します。この参照では、現在のターゲットコンポーネントが別のコンテナコンポーネントの入れ子コンポーネントとしてインストールされているものとします。container: 部分は現在のコンポーネントが含まれるコンポーネントに解決されます。この例では、X になります。nestedRef:ref1 部分は、ref1 というコンポーネント参照を使用し、コンポーネント X によって参照されるコンポーネントに解決されます。それがコンポーネント Y です。toplevelRef:ref1 部分は、ref1 というコンポーネント参照を使用し、コンポーネント Y が参照するコンポーネントに解決されます。これはコンポーネント Z です。最後に、プロビジョニングシステム がコンポーネント Z によって定義された label 属性の値を解決して使用します。
:[container:nestedRef:ref1:toplevelRef:ref1:sys.label] |