この章では、プラグインの定義に使用する XML スキーマを説明します。この章の内容は、次のとおりです。
<plugin> 要素は、プラグインスキーマの最上位の要素です。<plugin> 要素は、プラグインのパーツを特定します。
<plugin> 要素には次の属性があります。
name – プラグインの名前。name 属性の最大長は 64 です。プラグイン名は、com.sun.solaris の形式に似た構造に従います。
version – プラグインのバージョン。バージョン番号は標準的な x.y (メジャー.マイナー) の形式に従う必要があります。
previousversion (オプション) – システム上に存在すると想定されている当該プラグインのバージョン。指定されていない場合は、初期インストールが想定されます。指定されている場合、値はプラグインをアップグレードする元のバージョンを表します。
xmlns:xsi – 必須値は、 http://www.w3.org/2001/XMLSchema-instance。
xsi:schemaLocation (オプション) – 推奨値は、http://www.sun.com/schema/SPS plugin.xsd。
schemaVersion – 使用されているプラグイン XML スキーマのバージョン。現在許可されている値は 5.0 のみです。
<plugin> 要素は、次の子要素を含むことができます。
<readme> (オプション) – プラグインの作成者によって書かれた readme ファイルへのパス
<serverPluginJAR> (オプション) – Master Server で実行するサーバー側のプラグインコードが含まれる JAR ファイルへのパス
<gui> (オプション) – プラグイン用のオプション GUI 拡張機能
<dependencyList> (オプション) – 当該プラグインが依存する外部プラグインのリスト
<memberList> (オプション) – プラグインの一部として作成するメンバーオブジェクトのリスト。これらのメンバーオブジェクトは、任意の数のフォルダ、ホスト型、ホストセット、ホスト検索、コンポーネント、およびプランのオブジェクトを含むことができます。これらのメンバーオブジェクトは、任意の順序で指定できます。
<readme> 要素は <plugin> 要素の子で、プラグイン JAR の readme.txt ファイルの位置を宣言するために使用されます。readme.txt ファイルは、Unicode で符号化されたテキストファイルであると想定されています。Unicode 符号化を指定するには、バイトオーダーマーク (BOM) を使用します。BOM が存在しない場合は、デフォルトで UTF-8 符号化が使用されます。
<readme> 要素には 1 つの属性 jarPath があり、これには readme ファイルへのパス名が含まれます。readme ファイルのパス名は、プラグイン JAR ファイルのルートに相対的です。先頭のスラッシュ (/) またはピリオド (.) 文字は、jarPath では使用できません。
<serverPluginJAR> 要素は <plugin> 要素の子で、Master Server で実行するコードを含むサーバー側プラグイン JAR ファイルの位置の宣言に使用されます。JAR ファイルの位置は、プラグイン JAR ファイルのルートに相対的です。一般的にこの JAR ファイルには、プラグインにより定義されたコンポーネント型の、コンポーネントエクスポータ実装が含まれます。Master Server で実行されるよう外部で書かれたコード (エクスポータクラスなど) は、プラグイン用のエージェントで実行されるコードと同じ JAR ファイル内に存在する必要はありません (同じ位置に存在すること自体は可能)。
<serverPluginJAR> 要素には 1 つの属性 jarPath があり、これにはサーバー側プラグイン JAR ファイルへのパス名が含まれます。パス名は、プラグイン JAR ファイルのルートに相対的です。先頭のスラッシュ (/) またはピリオド (.) 文字は、jarPath では使用できません。
<gui> 要素は <plugin> 要素のオプションの子で、当該プラグインをサポートする GUI 拡張機能のセット用に、独立したプラグイン UI 記述子ファイルの位置を宣言するために使用されます。このプラグイン UI 記述子ファイルの構文は、第 6 章「プラグインユーザーインタフェーススキーマ」で説明されています。
<gui> 要素には 1 つの属性 jarPath があり、これにはプラグイン UI 記述子ファイルへのパス名が含まれます。パス名は、プラグイン JAR ファイルのルートに相対的です。先頭のスラッシュ (/) またはピリオド (.) 文字は、jarPath では使用できません。
<dependencyList> 要素は <plugin> 要素の子で、当該プラグインが依存するそのほかのプラグインのリストを宣言するために使用されます。この要素には属性はありませんが、当該プラグインの依存性を特定する <pluginRef> 要素が 1 つ以上含まれています。当該プラグインが破棄されると、N1 Grid Service Provisioning System により、これらの依存性と照らし合わせたチェックが行われます。
<pluginRef> 要素は <dependencyList> 要素の子で、別のプラグインへの参照の宣言に使用されます。<pluginRef> 要素には次の 2 つの必須属性があります。
name – 参照先プラグインの名前。name 属性の最大長は 64 です。プラグイン名は、com.sun.solaris の形式に似た構造に従います。
version – 参照先プラグインの最低限のバージョン。参照先プラグインは、このバージョン以上のシステムにインストールする必要があります。
<pluginRef> 要素には子要素はありません。
<memberList> 要素は <plugin> 要素の子で、当該プラグインの一部であるシステムオブジェクトのリストの宣言に使用されます。これらのオブジェクトは、任意の順序で指定できます。
<memberList> 要素には属性がありませんが、次の子要素の中の最低 1 つの要素を含みます。
<folder> – フォルダの宣言。
<hostType> – ホスト型の宣言。
<hostSet> – ホストセットの宣言。
<hostSearch> – ホスト検索の宣言。
<component> – コンポーネントの宣言。
<plan> – プランの宣言。
<folder> 要素は <memberList> 要素の子で、プラグインにより参照されるフォルダの宣言に使用されます。
プラグインは、フルパス名の形式で、作成されるフォルダを指定できます。たとえば /a/b/c という例の場合、a および b は内部フォルダで c はリーフフォルダです。当該プラグインはこのリーフフォルダを所有します。admin グループはフォルダ所有者グループとしてリストされ、当該フォルダはプラグインによって所有されていると特定されます。プラグインは、自らが所有するフォルダにのみコンポーネントとプランを作成できます。プラグインが所有するフォルダには、ユーザーはコンポーネント、プランまたはサブフォルダを作成できません。
プラグインの読み込み時に内部フォルダが存在しない場合、内部フォルダが暗黙に作成されます。プラグインは内部フォルダを所有できません。プラグインが作成した内部フォルダの所有者グループは admin グループですが、そのフォルダはプラグインに属しているとは特定されません。内部フォルダが暗黙にプラグインによって所有されるよう、プラグインの作成者が意図した場合、そのようなフォルダを個別に作成する必要があります。上記の例では、まずフォルダ /a が作成され、次にフォルダ /a/b が作成され、さらにフォルダ /a/b/c が作成されます。
所有されている内部フォルダの下位には、所有されていない内部フォルダを作成することはできません。この要件により、プラグインの作成者は、フォルダ階層において所有されているフォルダの間にあるフォルダにコンポーネントやプランを作成できなくなるため、削除のセマンティクスが複雑になります。
ある内部フォルダが存在し、プラグインの読み込み時点では所有されていない場合、その内部フォルダは直接使用されます。内部フォルダが存在し、あるプラグインによって所有されている場合、その内部フォルダは現在のプラグインによって所有されているか、 現在のプラグインが直接依存しているプラグインによって所有されている必要があります。この要件により、複数の協調的なプラグインを、プラグインベンダーによって個別に分配することができます。Java パッケージスタイルの命名規則に従うことで、フォルダを作成する際に、ベンダーはフォルダネームスペースの衝突を回避できます。
<folder> 要素には次の 2 つの属性があります。
<hostType> 要素は <memberList> 要素の子で、プラグインにより参照されるホスト型の宣言に使用されます。システムでホスト型が作成される際に、ホスト型名には暗黙にプラグイン名の接頭辞が付けられます。
<hostType> 要素には次の 2 つの属性があります。
name – ホスト型の名前。name 属性の最大長は 32 文字です。名前の先頭は Unicode 文字またはアンダースコア文字 (_) で、そのあとには Unicode 文字、数字、アンダースコア文字 (_)、ドット (.) またはダッシュ (-) が続く必要があります。
<hostType> 要素にはオプションの <varlist> 子要素が含まれます。<varlist> 要素は、<hostType> 要素に追加され、後にホストが構成で使用する変数のリストを指定します。
<varlist> 子要素には、1 つ以上の <var> 子要素が含まれます。<var> 要素は、次の 2 つの必須属性を通じて、<hostType> 要素の変数宣言を行います。
<hostSet> 要素は <memberList> 要素の子で、プラグインにより参照されるホストセットの宣言に使用されます。プラグインはホストを定義できないため、<hostSet> 要素はホストを含むことができません。プラットフォームホストセットは、システムプラグイン以外のプラグインでは定義できません。システムでホストセットが作成される際に、ホストセット名には暗黙にプラグイン名の接頭辞が付けられます。
<hostSet> 要素には次の 3 つの属性があります。
name – ホストセットの名前。name 属性の最大長は 32 文字です。名前の先頭は Unicode 文字またはアンダースコア文字 (_) で、そのあとには Unicode 文字、数字、アンダースコア文字 (_)、ドット (.) またはダッシュ (-) が続く必要があります。
unsupported (オプション) – true である場合、ホストセットはサポートされません。デフォルトは false です。
<hostSet> 要素には次の 2 つのオプションの子要素が含まれます。
<hostSetRef>
<hostSearchRef>
<hostSetRef> 要素は <hostSet> 要素の子で、サブホストセットを指定します。このホストセットは、当該フラグイン、または当該プラグインが直接依存するプラグインで、事前に定義されている必要があります。別のプラグインで定義されたホストセットへの参照は、com.foo.other#hostSetName のように、そのプラグイン名を含む必要があります。修飾されていない参照は、当該プラグインにより作成されたオブジェクトと見なされます。
<hostSetRef> 要素には 1 つの属性 name があります。この属性はホストセット参照の名前を指定します。name 属性にはオプションの pluginName があり、最大長は 64 文字です。pluginName のあとには、 # 区切り文字と、最大長が 32 文字の hostEntityName が続きます。
<hostSearchRef> 要素は <hostSet> 要素の子で、サブホストの検索を指定します。このホスト検索は、当該プラグイン、または当該プラグインが直接依存するプラグインで、事前に定義されている必要があります。別のプラグインで定義されたホスト検索への参照は、com.foo.other#hostSearchName のように、そのプラグイン名を含む必要があります。修飾されていない参照は、当該プラグインにより作成されたオブジェクトと見なされます。
<hostSearchRef> 要素には 1 つの属性 name があります。この属性はホスト検索参照の名前を指定します。name 属性にはオプションの pluginName があり、その最大長は 64 文字で、そのあとには # 区切り文字が続き、さらに (最大長が 32 文字である) hostEntityName が続きます。
プラグイン <hostSearch> 要素は <memberList> 要素の子で、プラグインにより参照されるホスト検索の宣言に使用されます。システムでホスト検索が作成される際に、ホスト検索名には暗黙にプラグイン名の接頭辞が付けられます。
<hostSearch> 要素には次の 2 つの属性があります。
name – ホスト検索の名前。name 属性の最大長は 32 文字です。名前の先頭は Unicode 文字またはアンダースコア文字 (_) で、そのあとには Unicode 文字、数字、アンダースコア文字 (_)、ドット (.) またはスラッシュ (-) が続く必要があります。
<hostSearch> 要素には、次の子要素の少なくとも 1 つが含まれます。
<criteriaList>
<appTypeCriteria>
<physicalCriteria>
<criteriaList>、<appTypeCriteria>、および <physicalCriteria> 要素はそれぞれオプションですが、この 3 つの要素のいずれかを指定する必要があります。
<criteriaList> 要素は <hostSearch> 要素の子で、<hostSearch> 要素に追加する基準のリストを指定します。<appTypeCriteria> と <physicalCriteria> が指定されていない場合は、<criteriaList> 要素を指定する必要があります。
<criteriaList> 要素には 1 つ以上の <criteria> 要素が含まれます。<criteria> 要素は、名前、一致型、パターンを含む、検索基準を指定します。この要素には次の 3 つの属性があります。
<appTypeCriteria> 要素は <hostSearch> 要素の子で、<hostSearch> 要素に追加するアプリケーション型の基準のリストを指定します。<appTypeCriteria> 要素の引数は属性として表現され、その順序は重要ではありません。値が false であるか、要素が空または未指定である場合、検索実行時にこの基準は無視されます。<criteriaList> および <physicalCriteria> が指定されていない場合、<appTypeCriteria> 要素を指定する必要があります。
<appTypeCriteria> 要素には次の 3 つのオプション属性があります。
ms – true である場合、ホスト検索で MasterServer アプリケーション型を照合します。デフォルトは false です。
ld – true である場合、ホスト検索で LocalDistributor アプリケーション型を照合します。デフォルトは false です。
ra – true である場合、ホスト検索で RemoteAgent アプリケーション型を照合します。デフォルトは false です。
<physicalCriteria> 要素は <hostSearch> 要素の子で、<hostSearch> 要素に追加する物理型の基準のリストを指定します。<physicalCriteria> 要素の引数は属性として表現され、その順序は重要ではありません。値が false であるか、要素が空または未指定である場合、検索実行時にこの基準は無視されます。<criteriaList> および <appTypeCriteria> が指定されていない場合、<physicalCriteria> 要素を指定する必要があります。
<physicalCriteria> 要素には次の 2 つのオプション属性があります。
<component> 要素は <memberList> 要素の子で、プラグイン JAR ファイルでコンポーネントを宣言するために使用されます。このコンポーネントにより参照されるすべてのオブジェクトは、当該プラグイン、または当該プラグインが直接依存するプラグインで、事前に定義されている必要があります。
<component> 要素には次の 2 つの属性があります。
jarPath – コンポーネント XML ファイルの位置で、プラグイン JAR のルートに相対的です (先頭の / または . 文字は使用できません)。コンポーネント XML の書式は、プランおよびコンポーネント言語の仕様により指定されます。詳細は、第 3 章「コンポーネントのスキーマ」を参照してください。
majorVersion (オプション) – コンポーネントを新しいメジャーバージョンとしてチェックインするかどうかを決定します。デフォルトは false です。
<component> 要素には次の 3 つのオプションの子要素が含まれます。
<systemService>
<componentType>
<resource>
<systemService> 要素は <component> 要素の子で、包含コンポーネントにより返されるシステムサービスの宣言に使用されます。この要素は <componentType> 要素とは併用できません。<systemService> 要素が <component> 要素で使用されている場合、コンポーネントが読み込まれ、そのコンポーネントを参照する <systemServiceRef> が作成されます。システムでシステムサービスが作成される際に、システムサービス名にはプラグイン名の接頭辞が付けられます。
<systemService> 要素には次の 2 つの属性があります。
<componentType> 要素は <component> 要素の子で、包含コンポーネントにより返されるコンポーネント型の宣言に使用されます。<componentType> 要素は <systemService> 要素とは併用できません。<componentType> 要素が <component> 要素で使用されている場合、コンポーネントが読み込まれ、そのコンポーネントにより返されるコンポーネント型が作成されます。システムでコンポーネント型が作成される際に、コンポーネント型名にはプラグイン名の接頭辞が付けられます。
コンポーネント型は、プラグインによりグループ化され、これらのグルーピング内でのコンポーネント型の順序により順序付けられます。グルーピングは、プラグインの順序に従って順序付けられます。特定のプラグイン内では、コンポーネント型により定義された個々のグループ名の下で、コンポーネント型がインデントされます。
<componentType> 要素には次の 5 つの属性があります。
name – コンポーネント型の名前。
名前の最大長は 64 文字です。名前は文字またはアンダースコアで始まる必要があり、そのあとには任意の文字、数字、または (アンダースコア (_)、ピリオド (.)、プラス記号 (+)、マイナス記号 (-)、および空白 ( ) などの) 特殊文字が続きます。Unicode 文字および数字が使用できます。
description (オプション) – コンポーネント型の説明。
group – 当該コンポーネントがコンポーネント型の階層の一部である場合の、コンポーネント型のグループ名。
グループ名は、コンポーネント型名と同じ要件に従います。また、グループは hidden として宣言できるため、このように宣言すると、「component list 」ページのコンポーネント型のドロップダウンリストでは型が表示されません。
order – ブラウザインタフェースのコンポーネント型のドロップダウンリストで、当該コンポーネント型を配置する場所を特定する番号です。
order は、最大 18 文字です。Unicode 文字および数字のほかに、ASCII キーボードで入力できるすべての文字が使用できます。order によって、特定のプラグイン内で定義されているすべての型を順序付けられる必要があります。
indentlevel – 0 から 10 までの番号で、ブラウザインタフェースのコンポーネント型の階層で当該コンポーネント型をインデントするレベルを特定します。
<resource> 要素は <component> 要素の子であり、JAR ファイル内でのリソースファイルの名前と位置を指定します。リソースは、常に単純ファイル型のリソースとしてチェックインされます。<resource> 要素を含むコンポーネントは単純コンポーネントであり、その単純コンポーネントの <resourceRef> 要素は <resource> 要素により作成されたリソースを参照する必要があります。
<resource> 要素には次の 3 つの属性があります。
jarPath – プラグイン JAR ファイルのルートに相対的な、リソースファイルの位置。先頭の / または . 文字は使用できません。
majorVersion (オプション) – 当該リソースを新しいメジャーバージョンとしてチェックインするかどうかを決定します。デフォルトは false です。
name (オプション) – リソースの名前。指定されていない場合、名前のデフォルトは (相対として指定されている場合に絶対に変換される) 絶対 jarPath になります。
<plan> 要素は <memberList> 要素の子で、プラグイン JAR でプランを宣言するために使用されます。このプランにより参照されるすべてのオブジェクトは、当該プラグイン、または当該プラグインが直接依存するプラグインで、事前に定義されている必要があります。
<plan> 要素には次の 2 つの属性があります。
jarPath – プラグイン JAR ファイルのルートに相対的な、プラン XML の位置。先頭の / または . 文字は使用できません。プラン XML の書式は、プランおよびコンポーネント言語の仕様により指定されます。詳細は、第 4 章「プランのスキーマ」を参照してください。
majorVersion (オプション) – 当該プランを新しいメジャーバージョンとしてチェックインするかどうかを決定します。デフォルトは false です。
<?xml version="1.0" encoding="UTF-8"?> <plugin name="com.bigCo.logic.pluginName" description="imitation WL plugin" vendor="bigCo" version="1.3" previousVersion="1.2" xmlns="http://www.sun.com/schema/SPS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sun.com/schema/SPS plugin.xsd" schemaVersion="5.0"> <readme jarPath="docs/readme.txt"/> <serverPluginJAR jarPath="lib/appserver/serverCode.jar"/> <gui jarPath="custom/weblogic/gui/pluginUI.xml"/> <dependencyList> <pluginRef name="webLogicUtils" version="1.0"/> <pluginRef name="otherPlugin" version="1.3"/> </dependencyList> <memberList> <folder name="/com/bea/weblogic/6.0" description="Weblogic 6.0 plugin folder"/> <folder name="/folder2" description="second place sees dust"/> <hostType name="WL Admin Server" description="Host Type for Weblogic Admin Servers"> <varList> <var name="adminPort" default="7001"/> <var name="adminUser" default="weblogic"/> <var name="secureConnect" default="false"/> </varList> </hostType> <hostSet name="Weblogic Admin Servers" description="The Weblogic Admin Servers"> <hostSetRef name="WL boxes"/> <hostSearchRef name="WL Admin Search"/> </hostSet> <hostSearch name="WL box search" description="matches Weblogic boxes"> <criteriaList> <criteria name="sys.OS" match="CONTAINS" pattern="SunOS"/> <criteria name="sys.OSVersion" pattern="5.9"/> </criteriaList> <appTypeCriteria ms="false" ld="false" ra="true"/> <physicalCriteria physical="true" virtual="true"/> </hostSearch> <hostSet name="Weblogic Servers" description="All Weblogic Servers"> <hostSetRef name="Weblogic Admin Servers"/> <hostSetRef name="com.bigCo.logic.cluster#Weblogic Clusters"/> </hostSet> <component jarPath="comps/system/weblogic/foo.xml" majorVersion="true"> <componentType name="contained EJB CT" description="contained ejb comp type ref" group="hidden" order="001-003-002" indentLevel="2"/> </component> <component jarPath="weblogic/system/comps/bar.xml"> <systemService name="WebLogic SS" description="WL service ref"/> </component> <component jarPath="weblogic/system/comps/baz.xml"/> <plan jarPath="weblogic/system/plans/bar.xml" majorVersion="false"/> <component jarPath="weblogic/system/comps/dee.xml"> <resource jarPath="weblogic/system/plugin-core.jar" majorVersion="true"/> </component> </memberList> </plugin>