ヘッダーをスキップ
Oracle® Coherence Oracle ToplinkおよびCoherence Grid統合ガイド
リリース3.7.1
B71691-01
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次
索引へ移動
索引

前
 
次
 

4 POFシリアライズの使用方法

シリアライズとは、オブジェクトをバイナリ形式にエンコードするプロセスです。これは、ネットワークを介してデータを移動する必要がある場合のCoherenceの操作に不可欠な機能です。Portable Object Format (POF)は言語に依存しないバイナリ形式です。POFは領域と時間の両面で効率を向上させるように設計されており、Coherenceの使用時に不可欠なものとなっています。POFの使用には、パフォーマンス上のメリットから言語の非依存性まで、様々なメリットがあります。Coherenceで作業する際には、シリアライズ・ソリューションとしてPOFを詳細に検討することをお薦めします。

この章では、POFシリアライズの対象とするためにTopLinkアプリケーション・ファイルに加える必要がある変更および追加についてのみ説明します。POFの使用方法および構成の詳細は、Oracle Coherence開発者ガイドのPortable Object Formatの使用方法に関する項を参照してください。

この章の内容は次のとおりです。

4.1 シリアライズ・ルーチンの実装

エンティティのシリアライズおよびデシリアライズの方法を指定するシリアライズ・ルーチンを実装する必要があります。これは、PortableObjectインタフェースを実装するか、com.tangosol.io.pof.PofSerializerインタフェースを使用してシリアライザを作成することで実行できます。

4.2 キャッシュ構成ファイルの定義

キャッシュ構成ファイルで、操作するエンティティに対応するキャッシュ・マッピングを作成します。シリアライザ(com.tangosol.io.pof.ConfigurablePofContextなど)およびPOF構成ファイルpof-config.xmlを指定します。EclipseLinkキャッシュ・ストア(oracle.eclipselink.coherence.integrated.EclipseLinkJPACacheStoreなど)を<cachestore-scheme>属性内に指定します。

例4-2 キャッシュ構成ファイルの例

<?xml version="1.0"?>
<cache-config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xmlns="http://xmlns.oracle.com/coherence/coherence-cache-config"
              xsi:schemaLocation="http://xmlns.oracle.com/coherence/coherence-cache-config http://xmlns.oracle.com/coherence/coherence-cache-config/1.0/coherence-cache-config.xsd">
  <caching-scheme-mapping>
    <cache-mapping>
        <cache-name>ATTORNEY_JPA_CACHE</cache-name>
        <scheme-name>eclipselink-jpa-distributed</scheme-name>
    </cache-mapping>
    <cache-mapping>
        <cache-name>CONTACT_JPA_CACHE</cache-name>
        <scheme-name>eclipselink-jpa-distributed-load</scheme-name>
    </cache-mapping>
...
additional cache mappings 
...
<caching-schemes>
    <distributed-scheme>
      <scheme-name>eclipselink-jpa-distributed-load</scheme-name>
      <service-name>EclipseLinkJPA</service-name>
 
    <serializer>
      <instance>
      <class-name>com.tangosol.io.pof.ConfigurablePofContext</class-name>
      <init-params>
        <init-param>
          <param-type>String</param-type>                 
          <param-value>trader-pof-config.xml</param-value>
        </init-param>
      </init-params>
      </instance>
    </serializer>
      <backing-map-scheme>
        <read-write-backing-map-scheme>
          <internal-cache-scheme>
            <local-scheme/>
          </internal-cache-scheme>
        </read-write-backing-map-scheme>
      </backing-map-scheme>
      <autostart>true</autostart>
    </distributed-scheme>
    <distributed-scheme>
      <scheme-name>eclipselink-jpa-distributed</scheme-name>
      <service-name>EclipseLinkJPA</service-name>
    <serializer>
      <instance>
      <class-name>com.tangosol.io.pof.ConfigurablePofContext</class-name>
      <init-params>
        <init-param>
          <param-type>String</param-type>
          <param-value>trader-pof-config.xml</param-value>
        </init-param>
      </init-params>
      </instance>
    </serializer>
 
      <backing-map-scheme>
        <read-write-backing-map-scheme>
          <internal-cache-scheme>
            <local-scheme/>
          </internal-cache-scheme>
          <!-- Define the cache scheme -->
          <cachestore-scheme>
            <class-scheme>
              <class-name>oracle.eclipselink.coherence.integrated.EclipseLinkJPACacheStore</class-name>
              <init-params>
                <init-param>
                  <param-type>java.lang.String</param-type>
                  <param-value>{cache-name}</param-value>
                </init-param>
                <init-param>
                  <param-type>java.lang.String</param-type>
                  <param-value>coherence-pu</param-value>
                </init-param>
              </init-params>
            </class-scheme>
          </cachestore-scheme>
        </read-write-backing-map-scheme>
      </backing-map-scheme>
      <autostart>true</autostart>
    </distributed-scheme>
  </caching-schemes>
</cache-config>

4.3 POF構成ファイルの指定

POFシリアライズの対象とするエンティティ・クラスを指定するファイルを定義します。Coherenceにはデフォルトで、pof-config.xmlという名前のPOF構成ファイルが用意されています。このファイルを使用して、エンティティ・クラスにtype-idを割り当てます。

POF構成ファイルには、次のクラスに対するtype-idエントリも含める必要があります。

例4-3は、TopLink Gridサポート・ファイルを含むPOF構成ファイルの例を示しています。

例4-3 POF構成ファイルの例

<?xml version="1.0"?>
<pof-config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://xmlns.oracle.com/coherence/coherence-pof-config"
    xsi:schemaLocation="http://xmlns.oracle.com/coherence/coherence-pof-config http://xmlns.oracle.com/coherence/coherence-pof-config/1.0/coherence-pof-config.xsd">
  <user-type-list>
    <!-- include all "standard" Coherence POF user types -->
    <include>coherence-pof-config.xml</include>
     <user-type>
       <type-id>1163</type-id>
      <class-name>oracle.toplinkgrid.codesample.pof.models.trader.Attorney</class-name>
     </user-type>
   ...
   additional type IDs for Entity classes 
   ...
     <user-type>
       <type-id>1144</type-id>
       <class-name>oracle.eclipselink.coherence.integrated.internal.cache.WrapperInternal</class-name>
       <serializer>
         <class-name>oracle.eclipselink.coherence.integrated.cache.WrapperPofSerializer</class-name>
       </serializer>
     </user-type>
     <user-type>
       <type-id>1142</type-id>
       <class-name>oracle.eclipselink.coherence.integrated.internal.querying.EclipseLinkExtractor</class-name>
       <serializer>
         <class-name>oracle.eclipselink.coherence.integrated.cache.ExtractorSerializer</class-name>
       </serializer>
     </user-type>
     <user-type>
       <type-id>1141</type-id>
       <class-name>oracle.eclipselink.coherence.integrated.internal.cache.VersionPutProcessor</class-name>
     </user-type>
     <user-type>
       <type-id>1140</type-id>
       <class-name>oracle.eclipselink.coherence.integrated.internal.cache.VersionRemoveProcessor</class-name>
     </user-type>
     <user-type>
       <type-id>1139</type-id>
       <class-name>oracle.eclipselink.coherence.integrated.internal.cache.RelationshipUpdateProcessor</class-name>
     </user-type>
     <user-type>
       <type-id>1138</type-id>
       <class-name>oracle.eclipselink.coherence.integrated.internal.querying.EclipseLinkFilterFactory$SubClassOf</class-name>
     </user-type>
   </user-type-list>
 
   <allow-interfaces>true</allow-interfaces>
   <allow-subclasses>true</allow-subclasses>
 </pof-config>