この付録には、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のサブ要素
要素 | 必須/オプション | 説明 |
---|---|---|
< |
オプション |
|
オプション |
|