7.4.3.3. 高度な外部データベースの登録
以下の例は、以前に保存した Person オブジェクトの高度な外部サイザー実装を登録するために必要な設定のタイプを示しています。
infinispan.xml
<infinispan>
<cache-container>
<serialization>
<advanced-externalizer class="Person$PersonExternalizer"/>
</serialization>
</cache-container>
...
</infinispan>
プログラムで行う:
GlobalConfigurationBuilder builder = ...
builder.serialization()
.addAdvancedExternalizer(new Person.PersonExternalizer());
前述のように、これらの外部データベース実装を一覧表示すると、ユーザーは getId()実装ではなく、XML またはプログラムを使用して外部ナライザーの識別子をオプションで指定できます。ここでも、識別子を維持するための集中的な方法を提供しますが、ルールは明確であることが重要です。XML/programmatic 設定またはアノテーション経由の AdvancedExternalizer の実装は、識別子に関連付ける必要があります。そうでない場合、Red Hat Data Grid はエラーをスローし、起動を中止します。特定の AdvancedExternalizer 実装が XML/programmatic 設定とアノテーションの両方で ID を定義する場合、XML/プログラムで定義した値は、使用される値になります。id が登録時に定義される外部データベースの例を以下に示します。
infinispan.xml
<infinispan>
<cache-container>
<serialization>
<advanced-externalizer id="123"
class="Person$PersonExternalizer"/>
</serialization>
</cache-container>
...
</infinispan>
プログラムで行う:
GlobalConfigurationBuilder builder = ...
builder.serialization()
.addAdvancedExternalizer(123, new Person.PersonExternalizer());
最後に、プログラムによる設定に関するいくつかのメモです。GlobalConfiguration.addExternalizer()は varargs を取ります。したがって、ID が @Marshalls アノテーションですでに定義されていることを仮定して、複数の外部ライザーを 1 度だけ登録できることを意味します。以下に例を示します。
builder.serialization()
.addAdvancedExternalizer(new Person.PersonExternalizer(),
new Address.AddressExternalizer());