Sun N1 Service Provisioning System 5.1 XML スキーマリファレンスガイド

第 6 章 プラグイン記述子スキーマ

この章では、プラグインの定義に使用する XML スキーマを説明します。この章の内容は、次のとおりです。

<plugin> 要素の概要

<plugin> 要素は、プラグインスキーマの最上位の要素です。<plugin> 要素は、プラグインのパーツを特定します。

<plugin> 要素の属性

<plugin> 要素には次の属性があります。

<plugin> 要素の子要素

<plugin> 要素は、次の子要素を含むことができます。

<readme> 要素

<readme> 要素は <plugin> 要素の子で、プラグイン JAR の readme.txt ファイルの位置を宣言するために使用されます。readme.txt ファイルは、Unicode で符号化されたテキストファイルであると想定されています。Unicode 符号化を指定するには、バイトオーダーマーク (BOM) を使用します。BOM が存在しない場合は、デフォルトで UTF-8 符号化が使用されます。

<readme> 要素には 1 つの属性 jarPath があり、これには readme ファイルへのパス名が含まれます。readme ファイルのパス名は、プラグイン JAR ファイルのルートに相対的です。先頭のスラッシュ (/) またはピリオド (.) 文字は、jarPath では使用できません。

<serverPluginJAR> 要素

<serverPluginJAR> 要素は <plugin> 要素の子で、Master Server で実行するコードを含むサーバー側プラグイン JAR ファイルの位置の宣言に使用されます。JAR ファイルの位置は、プラグイン JAR ファイルのルートに相対的です。一般的にこの JAR ファイルには、プラグインにより定義されたコンポーネント型の、コンポーネントエクスポータ実装が含まれます。Master Server で実行されるよう外部で書かれたコード (エクスポータクラスなど) は、プラグイン用のエージェントで実行されるコードと同じ JAR ファイル内に存在する必要はありません (同じ位置に存在すること自体は可能)。

<serverPluginJAR> 要素には 1 つの属性 jarPath があり、これにはサーバー側プラグイン JAR ファイルへのパス名が含まれます。パス名は、プラグイン JAR ファイルのルートに相対的です。先頭のスラッシュ (/) またはピリオド (.) 文字は、jarPath では使用できません。

<gui> 要素

<gui> 要素は <plugin> 要素のオプションの子で、当該プラグインをサポートする GUI 拡張機能のセット用に、独立したプラグイン UI 記述子ファイルの位置を宣言するために使用されます。このプラグイン UI 記述子ファイルの構文は、第 7 章「プラグインユーザーインタフェーススキーマ」で説明されています。

<gui> 要素には 1 つの属性 jarPath があり、これにはプラグイン UI 記述子ファイルへのパス名が含まれます。パス名は、プラグイン JAR ファイルのルートに相対的です。先頭のスラッシュ (/) またはピリオド (.) 文字は、jarPath では使用できません。

<dependencyList> 要素

<dependencyList> 要素は <plugin> 要素の子で、当該プラグインが依存するそのほかのプラグインのリストを宣言するために使用されます。この要素には属性はありませんが、当該プラグインの依存性を特定する <pluginRef> 要素が 1 つ以上含まれています。当該プラグインが配備されると、N1 SPSソフトウェアにより、これらの依存性と照らし合わせたチェックが行われます。

<pluginRef> 要素

<pluginRef> 要素は <dependencyList> 要素の子で、別のプラグインへの参照の宣言に使用されます。<pluginRef> 要素には次の 2 つの必須属性があります。

<pluginRef> 要素には子要素はありません。

<memberList> 要素

<memberList> 要素は <plugin> 要素の子で、当該プラグインの一部であるシステムオブジェクトのリストの宣言に使用されます。これらのオブジェクトは、任意の順序で指定できます。

<memberList> 要素には属性がありませんが、次の子要素の中の最低 1 つの要素を含みます。

<folder> 要素

<folder> 要素は <memberList> 要素の子で、プラグインにより参照されるフォルダの宣言に使用されます。

プラグインは、フルパス名の形式で、作成されるフォルダを指定できます。たとえば /a/b/c という例の場合、a および b は内部フォルダで c はリーフフォルダです。当該プラグインはこのリーフフォルダを所有します。admin グループはフォルダ所有者グループとしてリストされ、当該フォルダはプラグインによって所有されていると特定されます。プラグインは、自らが所有するフォルダにのみコンポーネントとプランを作成できます。プラグインが所有するフォルダには、ユーザーはコンポーネント、プランまたはサブフォルダを作成できません。

プラグインの読み込み時に内部フォルダが存在しない場合、内部フォルダが暗黙に作成されます。プラグインは内部フォルダを所有できません。プラグインが作成した内部フォルダの所有者グループは admin グループですが、そのフォルダはプラグインに属しているとは特定されません。内部フォルダが暗黙にプラグインによって所有されるよう、プラグインの作成者が意図した場合、そのようなフォルダを個別に作成する必要があります。上記の例では、まずフォルダ /a が作成され、次にフォルダ /a/b が作成され、さらにフォルダ /a/b/c が作成されます。

所有されている内部フォルダの下位には、所有されていない内部フォルダを作成することはできません。この要件により、プラグインの作成者は、フォルダ階層において所有されているフォルダの間にあるフォルダにコンポーネントやプランを作成できなくなるため、削除のセマンティクスが複雑になります。

ある内部フォルダが存在し、プラグインの読み込み時点では所有されていない場合、その内部フォルダは直接使用されます。内部フォルダが存在し、あるプラグインによって所有されている場合、その内部フォルダは現在のプラグインによって所有されているか、 現在のプラグインが直接依存しているプラグインによって所有されている必要があります。この要件により、複数の協調的なプラグインを、プラグインベンダーによって個別に分配することができます。Java パッケージスタイルの命名規則に従うことで、フォルダを作成する際に、ベンダーはフォルダネームスペースの衝突を回避できます。

<folder> 要素の属性

<folder> 要素には次の 2 つの属性があります。

<hostType> 要素

<hostType> 要素は <memberList> 要素の子で、プラグインにより参照されるホスト型の宣言に使用されます。システムでホスト型が作成される際に、ホスト型名には暗黙にプラグイン名の接頭辞が付けられます。

<hostType> 要素の属性

<hostType> 要素には次の 2 つの属性があります。

<varlist> 要素

<hostType> 要素にはオプションの <varlist> 子要素が含まれます。<varlist> 要素は、<hostType> 要素に追加され、あとでホストが構成で使用する変数のリストを指定します。

<varlist> 子要素には、1 つ以上の <var> 子要素が含まれます。<var> 要素は、次の 2 つの必須属性を通じて、<hostType> 要素の変数宣言を行います。

<hostSet> 要素

<hostSet> 要素は <memberList> 要素の子で、プラグインにより参照されるホストセットの宣言に使用されます。プラグインはホストを定義できないため、<hostSet> 要素はホストを含むことができません。プラットフォームホストセットは、システムプラグイン以外のプラグインでは定義できません。システムでホストセットが作成される際に、ホストセット名には暗黙にプラグイン名の接頭辞が付けられます。

<hostSet> 要素には次の 2 つのオプションの子要素が含まれます。

<hostSet> 要素の属性

<hostSet> 要素には次の 3 つの属性があります。

<hostSetRef> 要素

<hostSetRef> 要素は <hostSet> 要素の子で、サブホストセットを指定します。このホストセットは、当該フラグイン、または当該プラグインが直接依存するプラグインで、事前に定義されている必要があります。別のプラグインで定義されたホストセットへの参照は、com.foo.other#hostSetName のように、そのプラグイン名を含む必要があります。修飾されていない参照は、当該プラグインにより作成されたオブジェクトと見なされます。

<hostSetRef> 要素の属性

<hostSetRef> 要素には 1 つの属性 name があります。この属性はホストセット参照の名前を指定します。name 属性にはオプションの pluginName があり、最大長は 64文字です。 このあとには、# 区切り文字と、最大長が 32 文字の hostEntityName が続きます。

<hostSearchRef> 要素

<hostSearchRef> 要素は <hostSet> 要素の子で、サブホストの検索を指定します。このホスト検索は、当該プラグイン、または当該プラグインが直接依存するプラグインで、事前に定義されている必要があります。別のプラグインで定義されたホスト検索への参照は、com.foo.other#hostSearchName のように、そのプラグイン名を含む必要があります。修飾されていない参照は、当該プラグインにより作成されたオブジェクトと見なされます。

<hostSearchRef> 要素の属性

<hostSearchRef> 要素には 1 つの属性 name があります。この属性はホスト検索参照の名前を指定します。name 属性にはオプションの pluginName があり、最大長は 64文字です。 このあとには、# 区切り文字と、最大長が 32 文字の hostEntityName が続きます。

<hostSearch> 要素

プラグイン <hostSearch> 要素は <memberList> 要素の子で、プラグインにより参照されるホスト検索の宣言に使用されます。システムでホスト検索が作成される際に、ホスト検索名には暗黙にプラグイン名の接頭辞が付けられます。

<hostSearch> 属性には、次の子要素の少なくとも 1 つが含まれます。


注 –

<criteriaList><appTypeCriteria>、および <physicalCriteria> 要素はいずれもオプションですが、これら 3 つのいずれかを指定する必要があります。


<hostSearch> 要素の属性

<hostSearch> 要素には次の 2 つの属性があります。

<criteriaList> 要素

<criteriaList> 要素は <hostSearch> 要素の子で、<hostSearch> 要素に追加する基準のリストを指定します。<appTypeCriteria><physicalCriteria> が指定されていない場合は、<criteriaList> 要素を指定する必要があります。

<criteriaList> 要素には 1 つ以上の <criteria> 要素が含まれます。<criteria> 要素は、名前、一致型、パターンを含む、検索基準を指定します。

<criteriaList> 要素の属性

<criteriaList> 要素には次の 3 つの属性があります。

<appTypeCriteria> 要素

<appTypeCriteria> 要素は <hostSearch> 要素の子で、<hostSearch> 要素に追加するアプリケーション型の基準のリストを指定します。<appTypeCriteria> 要素の引数は属性として表現され、その順序は重要ではありません。値が false であるか、要素が空または未指定である場合、検索実行時にこの基準は無視されます。<criteriaList> および <physicalCriteria> が指定されていない場合、<appTypeCriteria> 要素を指定する必要があります。

<appTypeCriteria> 要素の属性

<appTypeCriteria> 要素には次の 3 つのオプション属性があります。

<physicalCriteria> 要素

<physicalCriteria> 要素は <hostSearch> 要素の子で、<hostSearch> 要素に追加する物理型の基準のリストを指定します。<physicalCriteria> 要素の引数は属性として表現され、その順序は重要ではありません。値が false であるか、要素が空または未指定である場合、検索実行時にこの基準は無視されます。<criteriaList> および <appTypeCriteria> が指定されていない場合、<physicalCriteria> 要素を指定する必要があります。

<physicalCriteria> 要素の属性

<physicalCriteria> 要素には次の 2 つのオプション属性があります。

<component> 要素

<component> 要素は <memberList> 要素の子で、プラグイン JAR ファイルでコンポーネントを宣言するために使用されます。このコンポーネントにより参照されるすべてのオブジェクトは、当該プラグイン、または当該プラグインが直接依存するプラグインで、事前に定義されている必要があります。

<component> 要素には次の 3 つのオプションの子要素が含まれます。

<component> 要素の属性

<component> 要素には次の 2 つの属性があります。

<systemService> 要素

<systemService> 要素は <component> 要素の子で、包含コンポーネントにより返されるシステムサービスの宣言に使用されます。この要素は <componentType> 要素とは併用できません。<systemService> 要素が <component> 要素で使用されている場合、コンポーネントが読み込まれ、そのコンポーネントを参照する <systemServiceRef> が作成されます。システムでシステムサービスが作成される際に、システムサービス名にはプラグイン名の接頭辞が付けられます。

<systemService> 要素の属性

<systemService> 要素には次の 2 つの属性があります。

<componentType> 要素

<componentType> 要素は <component> 要素の子で、包含コンポーネントにより返されるコンポーネント型の宣言に使用されます。<componentType> 要素は <systemService> 要素とは併用できません。<componentType> 要素が <component> 要素で使用されている場合、コンポーネントが読み込まれ、そのコンポーネントにより返されるコンポーネント型が作成されます。システムでコンポーネント型が作成される際に、コンポーネント型名にはプラグイン名の接頭辞が付けられます。

コンポーネント型は、プラグインによりグループ化され、これらのグルーピング内でのコンポーネント型の順序により順序付けられます。グルーピングは、プラグインの順序に従って順序付けられます。特定のプラグイン内では、コンポーネント型により定義された個々のグループ名の下で、コンポーネント型がインデントされます。

<componentType> 要素の属性

<componentType> 要素には次の 5 つの属性があります。

<resource> 要素

<resource> 要素は <component> 要素の子であり、JAR ファイル内でのリソースファイルの名前と位置を指定します。リソースは、常に単純ファイル型のリソースとしてチェックインされます。<resource> 要素を含むコンポーネントは、その <resourceRef> 要素が <resource> 要素により作成されたリソースを参照する、単純コンポーネントである必要があります。

<resource> 要素の属性

<resource> 要素には次の 3 つの属性があります。

<plan> 要素

<plan> 要素は <memberList> 要素の子で、プラグイン JAR でプランを宣言するために使用されます。このプランにより参照されるすべてのオブジェクトは、当該プラグイン、または当該プラグインが直接依存するプラグインで、事前に定義されている必要があります。

<plan> 要素の属性

<plan> 要素には次の 2 つの属性があります。

<plugin> 要素のサンプル XML


例 6–1 サンプルのプラグイン記述子ファイル

<?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.1">
  <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>
 <component jarPath="weblogic/system/comps/boo.xml">
   <resource jarPath="weblogic/system/bigDir/" majorVersion="true"
  	name="com/sun/boo" type="DIRECTORY" checkInMode="ADD_TO"
 		descriptorPath="resources/bigDir.manifest" />
 </component>
  </memberList>
</plugin>