この付録には、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">
要素のドキュメントの形式およびネストを例J-1に示します。
例J-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>
</pof-config>
表J-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>
説明
class-name要素は、JavaクラスまたはJavaインタフェースの名前を指定します。
user-type要素の中にはclass-name要素が必要であり、ユーザー定義型のすべての値にタイプの割当てが可能なJavaクラスまたはJavaインタフェースの完全修飾名を指定します。
serializer要素の中にはclass-name要素が必要です。
要素
終端要素。
使用場所: <user-type-list>
説明
include要素は、user-type要素のロード元であるpof-configファイルの場所を指定します。この値は、ロード先のpof-configファイルの場所を特定するロケータ文字列(有効なパスとULRのいずれか)です。
要素
終端要素。
使用場所: <init-params>
説明
init-param要素では、コンフィギュレーション・パラメータの型、および引数として渡す対応値を指定します。
要素
表J-2は、init-param要素で定義可能なサブ要素について説明しています。
表J-2 init-paramのサブ要素
| 要素 | 必須/オプション | 説明 |
|---|---|---|
|
必須 |
値は指定された型に変換されます。インスタンス化を正常に実行するには、ターゲットのコンストラクタまたはメソッドにその型のパラメータが存在している必要があります。 |
|
|
必須 |
|
使用場所: <serializer>、<well-known-addresses>
説明
init-params要素には、(それぞれがinit-paramとして)ゼロ個以上の引数を記述し、それらの引数は、構成されているクラスのコンストラクタのパラメータに対応します。
要素
表J-3は、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ユーザー定義型のディスクリプタのルート要素です。
要素
表J-4は、pof-config要素で定義可能な要素について説明しています。
表J-4 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)
()
要素
表J-5は、serializer要素で定義可能な要素について説明しています。
表J-5 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として使用されることになります。
要素
表J-6は、user-type要素で定義可能な要素について説明しています。
表J-6 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要素で定義可能な要素について説明しています。
表J-7 user-type-listのサブ要素
| 要素 | 必須/オプション | 説明 |
|---|---|---|
|
< |
必須 |
|
|
必須 |
|