この付録には、POFユーザー定義型の指定に使用できる要素が一覧表示されています。POFユーザー定義型の構成要素は、coherence.jarファイルにあるpof-config.dtdファイルで定義されます。
POFユーザー定義型の構成ファイルの詳細は、JavadocのConfigurablePofContextクラスを参照してください。
POFユーザー定義型のデプロイメント・ディスクリプタを使用して、クラスタに渡される様々なユーザー定義型を指定します。
ディスクリプタのデフォルトの名前および場所はpof-config.xmlになります。このデフォルトのPOFユーザー定義型のディスクリプタはcoherence.jarにパッケージ化されており、カスタム・ファイルがアプリケーションのクラスパスに検出されないかぎり使用されます。ディスクリプタのデフォルトの名前および場所は、システム・プロパティtangosol.pof.configを使用して構成することもできます。クラスタ内のすべてのノードで使用するPOFユーザー定義型のディスクリプタを統一することをお薦めします。
POFユーザー定義型のディスクリプタは、次のDOCTYPE宣言から開始します。
<!DOCTYPE pof-config SYSTEM "pof-config.dtd">
要素のドキュメントの形式およびネストを例D-1に示します。
例D-1 POFユーザー定義型の構成ファイル(pof-config.xml)の形式
<pof-config>
   <user-type-list>
     ..
     <user-type>
       <type-id>53</type-id>
       <class-name>com.mycompany.data.Trade</class-name>
       <serializer>
         <class-name>com.tangosol.io.pof.PortableObjectSerializer</class-name>
         <init-params>
           <init-param>
             <param-type>int</param-type>
             <param-value>{type-id}</param-value>
           </init-param>
         </init-params>
       </serializer>
     </user-type>
     <user-type>
       <type-id>54</type-id>
       <class-name>com.mycompany.data.Position</class-name>
     </user-type>
     ..
     <include>file:/my-pof-config.xml</include>
     ..
   </user-type-list>
   <allow-interfaces>false</allow-interfaces>
   <allow-subclasses>false</allow-subclasses>
   <default-serializer>
      <class-name>com.mycompany.data.TradeSerializer</class-name>
      <init-params>
         <init-param>
            <param-type>int</param-type>
            <param-value>{type-id}</param-value>
         </init-param>
      </init-params>
   </default-serializer>
</pof-config>
表D-1には、POFユーザー定義型の構成で使用可能なすべての要素が一覧表示されています。
使用場所: <pof-config>
説明
allow-interfaces要素は、user-type class-nameでJavaクラス・タイプ以外にJavaインタフェース・タイプも指定できるかどうかを示します。
有効な値は、trueまたはfalseです。デフォルト値はfalseです。
要素
終端要素。
使用場所: <pof-config>
説明
allow-subclasses要素は、user-type class-nameで抽象的なJavaクラス・タイプを指定できるかどうか、および、指定したuser-type class-nameのサブクラスが実行時に許可され、シリアライザの取得を目的として指定したスーパークラスに自動的にマップされるかどうかを示します。
有効な値は、trueまたはfalseです。デフォルト値はfalseです。
要素
終端要素。
使用場所: <user-type>、<serializer>、<default-serializer>
説明
class-name要素は、JavaクラスまたはJavaインタフェースの名前を指定します。
user-type要素の中にはclass-name要素が必要であり、ユーザー定義型のすべての値にタイプの割当てが可能なJavaクラスまたはJavaインタフェースの完全修飾名を指定します。
serializer要素の中にはclass-name要素が必要です。
default-serializer要素の中にはclass-name要素が必要です。
要素
終端要素。
使用場所: <pof-config>
説明
この要素は、pof-config要素内で定義されるすべてのユーザー定義型のシリアライズおよびデシリアライズの際に使用するPofSerializerを指定します。シリアライザがuser-type内に指定されている場合、そのユーザー定義型にはデフォルトのシリアライザのかわりにそのシリアライザが使用されます。
default-serializer要素を省略すると、特定のユーザー定義型に対して定義されたシリアライザが使用されます。そのユーザー定義型のserializer要素も省略すると、ユーザー定義型によってPortableObjectインタフェースが実装され、PortableObjectSerializer実装がPofSerializerとして使用されることになります。
default-serializer要素からinit-params要素を省略した場合は、そのPofSerializer実装に対して次の4つのコンストラクタが、ここに示された順序で試行されます。
(int nTypeId, Class clz, ClassLoader loader)
(int nTypeId, Class clz)
(int nTypeId)
()
要素
表D-2は、default-serializer要素で定義可能なサブ要素について説明しています。
表D-2 default-serializerのサブ要素
| 要素 | 必須/オプション | 説明 | 
|---|---|---|
| 必須 | 
 | |
| オプション | (それぞれが | 
使用場所: <user-type-list>
説明
include要素は、user-type要素のロード元であるpof-configファイルの場所を指定します。この値は、ロード先のpof-configファイルの場所を特定するロケータ文字列(有効なパスとULRのいずれか)です。
要素
終端要素。
使用場所: <init-params>
説明
init-param要素では、構成パラメータの型、および引数として渡す対応値を指定します。
要素
表D-3は、init-param要素で定義可能なサブ要素について説明しています。
表D-3 init-paramのサブ要素
| 要素 | 必須/オプション | 説明 | 
|---|---|---|
| 必須 | 
 
 値は指定された型に変換されます。インスタンス化を正常に実行するには、ターゲットのコンストラクタまたはメソッドにその型のパラメータが存在している必要があります。 | |
| 必須 | 
 
 | 
使用場所: <serializer>、<default-serializer>
説明
init-params要素には、(それぞれがinit-paramとして)ゼロ個以上の引数を記述し、それらの引数は、構成されているクラスのコンストラクタのパラメータに対応します。
要素
表D-4は、init-params要素で定義可能なサブ要素について説明しています。
使用場所: <init-param>
説明
param-type要素は、初期化パラメータのJavaタイプを指定します。
サポートされているタイプは次のとおりです。
string: 値がjava.lang.Stringであることを示します。
boolean: 値がjava.lang.Booleanであることを示します。
int: 値がjava.lang.Integerであることを示します。
long: 値がjava.lang.Longであることを示します。
double: 値がjava.lang.Doubleであることを示します。
decimal: 値がjava.math.BigDecimalであることを示します。
file: 値がjava.io.Fileであることを示します。
date: 値がjava.sql.Dateであることを示します。
time: 値がjava.sql.Timedatetimeであることを示します。
datetime: 値がjava.sql.Timestampであることを示します。
xml: 値がinit-param XmlElement全体であることを示します。
値は指定されたデータ型に変換されます。インスタンス化を問題なく実行するには、ターゲット・コンストラクタまたはメソッドにその型のパラメータが存在している必要があります。
要素
終端要素。
使用場所: <init-param>
説明
param-value要素は、初期化パラメータの値を指定します。この値は、パラメータの型に固有の形式にします。
指定できる値が4つ予約されています。これらの値がそれぞれ、実行時に特定のランタイム値に置換されてから、コンストラクタが起動されます。
{type-id}: ユーザー定義型のタイプIDに置換されます。
{class-name}: ユーザー定義型のクラスの名前に置換されます。
{class}: ユーザー定義型のクラスに置換されます。
{class-loader}: ConfigurablePofContextのContextClassLoaderに置換されます。
要素
終端要素。
ルート要素
説明
pof-config要素は、POFユーザー定義型のディスクリプタのルート要素です。
要素
表D-5は、pof-config要素で定義可能なサブ要素について説明しています。
表D-5 pof-configのサブ要素
| 要素 | 必須/オプション | 説明 | 
|---|---|---|
| オプション | 
 | |
| オプション | 
 | |
| 必須 | 
 | |
| オプション | 
 | 
使用場所: <acceptor-config>、<distributed-scheme>、<initiator-config>、<invocation-scheme>、<optimistic-scheme>、<replicated-scheme>、<user-type>
説明
この要素は、proxy-scheme/acceptor-configやdistributed-schemeなどのサービス・スキーム要素の一部として使用するか、またはPOF構成ファイル内でuser-type要素の一部としてPOFSerializerを指定するために使用できます。
サービス・スキーム内での使用
ユーザー定義型をシリアライズおよびデシリアライズするためにサービスによって使用される、com.tangosol.io.Serializer実装のクラス構成情報を指定します。
次の例は、デフォルトのcoherence-pof-config.xml構成ファイルを使用してストリームに対するオブジェクトの読取りおよび書込みを行う、ConfigurablePofContextを構成しています。
<serializer> <class-name>com.tangosol.io.pof.ConfigurablePofContext</class-name> </serializer>
user-type内での使用
serializer要素は、特定のユーザー定義型のシリアライズおよびデシリアライズに使用するPofSerializerを指定します。
PofSerializerは、POFストリームとの間でのユーザー定義型の値のシリアライズおよびデシリアライズに使用されます。serializer要素の中にはclass-name要素が必要であり、init-params要素の中にはゼロ個以上のコンストラクタ・パラメータを定義できます。
serializer要素を省略すると、ユーザー定義型によってPortableObjectインタフェースが実装され、PortableObjectSerializer実装がPofSerializerとして使用されることになります。
serializer要素からinit-params要素を省略した場合は、そのPofSerializer実装に対して次の4つのコンストラクタが、ここに示された順序で試行されます。
(int nTypeId, Class clz, ClassLoader loader)
(int nTypeId, Class clz)
(int nTypeId)
()
要素
表D-6は、serializer要素で定義可能な要素について説明しています。
表D-6 serializerのサブ要素
| 要素 | 必須/オプション | 説明 | 
|---|---|---|
| 必須 | シリアライザの名前を指定します。 | |
| オプション | 
 | 
使用場所: <user-type>
説明
type-id要素は、ユーザー定義型を一意に識別する整数値(n >= 0)を指定します。
user-type要素のいずれもtype-id要素を記述していない場合には、ユーザー定義型の型IDは、user-type-listに表示される順序に基づきます。そこでは、最初に割り当てられるユーザー定義型の型IDが0、2番目に割り当てられるユーザー定義型の型IDが1になります(以下同様)。
ただし、スキーマのバージョニングおよび進化をサポートできるように、ユーザー定義型のIDを常に指定することを強くお薦めします。
| 注意:予約ID: 最初の1000個のIDは、Coherenceの内部使用に予約されています。 | 
要素
終端要素。
使用場所: <user-type-list>
説明
user-type要素には、POFユーザー定義型の宣言を記述します。POFユーザー定義型は、一意の識別、移植、バージョニングが可能なオブジェクト・クラスで、言語、オペレーティング・システム、ハードウェアおよび場所に関係なく、システム間で通信できます。
user-type要素の中ではtype-id要素を省略できますが、スキーマのバージョニングおよび進化をサポートできるように、使用することを強くお薦めします。
user-type要素の中にはclass-name要素が必要であり、ユーザー定義型のすべての値にタイプの割当てが可能なJavaクラスまたはJavaインタフェースの完全修飾名を指定します。
serializer要素を省略すると、ユーザー定義型によってPortableObjectインタフェースが実装され、PortableObjectSerializer実装がPofSerializerとして使用されることになります。
要素
表D-7は、user-type要素で定義可能な要素について説明しています。
表D-7 user-typeのサブ要素
| 要素 | 必須/オプション | 説明 | 
|---|---|---|
| 必須 | 
 | |
| オプション | 
 serializer要素を省略すると、ユーザー定義型によって 
 
 | |
| < | オプション | 
 | 
使用場所: <pof-config>
説明
user-type-list要素には、ゼロ個以上のuser-type要素を記述します。使用されるPOFユーザー定義型はそれぞれ、user-type-listに一覧表示されている必要があります。
user-type-list要素には、ゼロ個以上のinclude要素も記述できます。それぞれのinclude要素は、別のpof-configファイルで定義されたuser-type要素の追加に使用されます。
要素
次の表は、user-type-list要素で定義可能な要素について説明しています。
表D-8 user-type-listのサブ要素
| 要素 | 必須/オプション | 説明 | 
|---|---|---|
| < | オプション | 
 | 
| オプション | 
 
 
 
 |