19 キャッシュ構成オーバーライドの使用

Coherence 14.1.1.2206では、Coherenceクラスタ・オーバーライドに類似した機能であるキャッシュ構成オーバーライドが導入されています。キャッシュ構成オーバーライドを指定するには、キャッシュ構成のルート要素のxml-override属性を使用します。ルート要素はベース・キャッシュ構成ファイルと呼ばれ、その要素は、クラスパスまたはモジュール・パスにオーバーライド・ファイルを配置することで、オーバーライドできるようになりました。指定したXMLオーバーライド・ファイルがクラスパスまたはモジュール・パスで見つかった場合、Coherenceは実行時にファイルをロードし、各モジュールの固有の要件に基づいて基本構成をオーバーライドします。

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

xml-override属性の指定

coherence.cacheconfig.overrideシステム・プロパティを指定しない場合、指定したxml-override属性に基づいて、アプリケーションのクラスパスまたはモジュール・パス上にcache-config-override.xmlファイルが見つかると、Coherenceはこれをロードし、適用します。coherence.cacheconfig.overrideを指定した場合、Coherenceはこのシステム・プロパティが指すXMLオーバーライドをロードし、実行時に適用します。
xml-override属性が指定されているキャッシュ構成XMLファイルのスニペットを次に示します。
<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 coherence-cache-config.xsd"
              xml-override="{coherence.cacheconfig.override cache-config-override.xml}">
    ....
</cache-config>

Coherenceキャッシュ構成のオーバーライドのユース・ケース

この項のユース・ケースでは、Coherenceキャッシュ構成をオーバーライドする様々なシナリオについて説明します。

  • キャッシュ構成オーバーライドには、同じcache-nameのベース・キャッシュ構成にすでに存在するcaching-scheme-mapping/cache-mappingがあります

    この場合、次の例に示すように、caching-scheme-mapping内のcache-mapping要素は、オーバーライド・ファイルからオーバーライドされます。

    • ベースXML
      <cache-mapping>
          <cache-name>my-cache-*</cache-name>
          <scheme-name>my-cache-scheme-parent</scheme-name>
      </cache-mapping>
    • オーバーライドXML
      <cache-mapping>
          <cache-name>my-cache-*</cache-name>
          <scheme-name>my-cache-scheme-override</scheme-name>
      </cache-mapping>
    • XMLオーバーライドをベースXMLに適用した後の有効な<caching-scheme-mapping>要素
      <caching-scheme-mapping>
          <cache-mapping>
              <cache-name>my-cache-*</cache-name>
              <scheme-name>my-cache-scheme-override</scheme-name>
          </cache-mapping>
      </caching-scheme-mapping>
  • キャッシュ構成オーバーライドには、ベース・キャッシュ構成に存在しないcaching-scheme-mapping/cache-mappingがあります

    この場合、次の例に示すように、オーバーライド・ファイルの新しい<cache-mapping>要素は、caching-scheme-mapping内の他の要素の先頭に付加されます。

    • ベースXML
      <cache-mapping>
          <cache-name>my-cache-*</cache-name>
          <scheme-name>my-cache-scheme-parent</scheme-name>
      </cache-mapping>
    • オーバーライドXML
      <cache-mapping>
          <cache-name>my-cache-override</cache-name>
          <scheme-name>my-cache-scheme-override</scheme-name>
      </cache-mapping>
    • XMLオーバーライドをベースXMLに適用した後の有効な<caching-scheme-mapping>要素
      <caching-scheme-mapping>
          <cache-mapping>
              <cache-name>my-cache-override</cache-name>
              <scheme-name>my-cache-scheme-override</scheme-name>
          </cache-mapping>
          <cache-mapping>
              <cache-name>my-cache-*</cache-name>
              <scheme-name>my-cache-scheme-parent</scheme-name>  
          </cache-mapping>
      </caching-scheme-mapping>
  • キャッシュ構成オーバーライドには、ベース構成ファイルに存在する同じscheme-nameを持つcaching-schemeがあります

    次の例に示すように、指定されたscheme-nameを持つcaching-schemeのみが、オーバーライド・ファイルの関連コンテンツとマージされます。

    • ベースXML
      <caching-schemes>
         <distributed-scheme>
            <scheme-name>my-cache-scheme</scheme-name>
            <service-name>MyCache</service-name>
            <backing-map-scheme>
               <local-scheme>
                  <unit-calculator>BINARY</unit-calculator>
               </local-scheme>
            </backing-map-scheme>
            <partitioned-quorum-policy-scheme>
               <write-quorum>3</write-quorum>
            </partitioned-quorum-policy-scheme>
            <autostart>true</autostart>
         </distributed-scheme>
         <distributed-scheme>
            <scheme-name>my-cache-scheme-two</scheme-name>
            <service-name>MyCache2</service-name>
         </distributed-scheme>
      <caching-schemes>
    • オーバーライドXML
      <caching-schemes>
          <distributed-scheme>
            <scheme-name>my-cache-scheme</scheme-name>
            <partitioned-quorum-policy-scheme>
               <write-quorum>1</write-quorum>
            </partitioned-quorum-policy-scheme>
          </distributed-scheme>
      </caching-schemes>
    • XMLオーバーライドを適用した後の有効な<caching-schemes>要素
      <caching-schemes>
         <distributed-scheme>
            <scheme-name>my-cache-scheme</scheme-name>
            <service-name>MyCache</service-name>
            <backing-map-scheme>
               <local-scheme>
                  <unit-calculator>BINARY</unit-calculator>
               </local-scheme>
            </backing-map-scheme>
            <partitioned-quorum-policy-scheme>
               <write-quorum>1</write-quorum>
            </partitioned-quorum-policy-scheme>
            <autostart>true</autostart>
         </distributed-scheme>
         <distributed-scheme>
            <scheme-name>my-cache-scheme-two</scheme-name>
            <service-name>MyCache2</service-name>
         </distributed-scheme>
      <caching-schemes>
  • scheme-nameのないcaching-schemesを使用したキャッシュ構成オーバーライド

    次の例に示すように、そのcaching-schemeのすべてのタイプは、オーバーライド・ファイルの関連コンテンツで変更されます。

    • ベースXML
      <caching-schemes>
         <distributed-scheme>
            <scheme-name>my-cache-scheme</scheme-name>
            <service-name>MyCache</service-name>
            <backing-map-scheme>
               <local-scheme>
                  <unit-calculator>BINARY</unit-calculator>
               </local-scheme>
            </backing-map-scheme>
            <partitioned-quorum-policy-scheme>
               <write-quorum>3</write-quorum>
            </partitioned-quorum-policy-scheme>
            <autostart>true</autostart>
         </distributed-scheme>
         <distributed-scheme>
            <scheme-name>my-cache-scheme-two</scheme-name>
            <service-name>MyCache2</service-name>
         </distributed-scheme>
      <caching-schemes>
    • オーバーライドXML
      <caching-schemes>
         <distributed-scheme>
            <partitioned-quorum-policy-scheme>
               <write-quorum>1</write-quorum>
            </partitioned-quorum-policy-scheme>
         </distributed-scheme>
      </caching-schemes>
    • XMLオーバーライドを適用した後の有効な<caching-schemes>要素
      <caching-schemes>
         <distributed-scheme>
            <scheme-name>my-cache-scheme</scheme-name>
            <service-name>MyCache</service-name>
            <backing-map-scheme>
               <local-scheme>
                  <unit-calculator>BINARY</unit-calculator>
               </local-scheme>
            </backing-map-scheme>
            <partitioned-quorum-policy-scheme>
               <write-quorum>1</write-quorum>
            </partitioned-quorum-policy-scheme>
            <autostart>true</autostart>
         </distributed-scheme>
         <distributed-scheme>
            <scheme-name>my-cache-scheme-two</scheme-name>
            <service-name>MyCache2</service-name>
            <partitioned-quorum-policy-scheme>
               <write-quorum>1</write-quorum>
            </partitioned-quorum-policy-scheme>
         </distributed-scheme>
      <caching-schemes>