13 Oracle CoherenceでのOracle Tuxedo分散キャッシュ(TDC)の使用

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

すぐに開始する場合は、次のサンプルを参照してください。

この機能に関連するOracle Tuxedo ATMI APIの詳細は、「Oracle Tuxedo分散キャッシュ(TDC)関連のATMI API」を参照してください。

13.1 概要

この機能では、Oracle Coherenceと、Oracle Coherenceのクライアントとして機能するOracle Tuxedo Javaサーバーを利用して、Oracle Coherenceに備えられたキャッシュに関するあらゆる利点を活用できるようにします。

この機能は、次のキャッシング方針をサポートしています。

Oracle CoherenceとTMJAVASVRが使用されるため、実際にTDCを使用する前に、これらの両方を構成する必要があります。

これらを構成した後、Oracle Tuxedo分散キャッシュを使用できます。

13.1.1 クライアントおよびサーバーを対象としたデータ・キャッシュ

データ・キャッシュを有効にすると、キャッシュにデータを格納し、他のサーバー上のクライアントでキャッシュからデータを取得できます。これにより、クライアントとサーバー間でデータを共有する新しい方法が得られます。特に、他のサーバーとのデータの共有が可能になります。

この機能の特長は次のとおりです。

高いパフォーマンス
キュー、ファイルまたはデータベースを介したデータの格納および取得では、通常、大量のソースが占有され、時間が浪費されるのに対し、キャッシュを介したデータの格納と取得は、より高速かつ軽量です。
Oracle Tuxedoでは、この他にも、ローカル・バッファ・コピーを最小限に抑えたり(ゼロ・コピーのユースケースをいくつか提供するのが理想的です)、主に読取りが多い操作(たとえば、読取り/書込みの比率が2:1以上)に重点を置くなど、高いパフォーマンスを実現する方法を導入しています。
様々なバッファ・タイプのサポート
この機能は、多くのOracle Tuxedoバッファ・タイプをサポートしているため、Oracle Tuxedoがサポートするデータ型にデータを一致させる手間が必要ありません。サポートされるTuxedoバッファ・タイプは、CARRAYFMLFML32MBSTRINGSTRINGVIEWVIEW32XMLRECORDX_C_TYPEおよびX_COMMONです。
簡単なアプローチ
この機能は透過的であるため、いっさいコードを変更することなく使用でき、取り組みやすいアプローチとなっています。Oracle Tuxedoでは、Oracle Coherence機能がJavaサーバー・コンテナにカプセル化されているため、ユーザーは、単にJavaサーバーを使用することで、この機能に関連するすべての機能を実装できます。

13.1.2 Oracle Tuxedoサービスを対象とした結果キャッシュ

結果キャッシュを有効にすると、Oracle Tuxedoはまずバックエンド・サービスではなくキャッシュ・エントリの結果にアクセスします。アクセスできない場合や、キャッシュまたはキャッシュ・エントリが期限切れになっている場合、Oracle Tuxedoはバックエンド・サービスにアクセスします。その結果がOracle Tuxedoキャッシュに格納されるため、次回もそれにアクセスできます。

この機能の特長は次のとおりです。

高いパフォーマンス
Oracle Tuxedoで結果をキャッシュに格納するのに適した候補としてよく挙げられるのが、変更されない結果を返す同期サービスです。これにより、バックエンド・サービスにアクセスするネットワーク・オーバーヘッドを減らして、パフォーマンスを高めることができます。
Oracle Tuxedoでは、この他にも、ローカル・バッファ・コピーを最小限に抑えたり(ゼロ・コピーのユースケースをいくつか提供するのが理想的です)、主に読取りが多い操作(たとえば、読取り/書込みの比率が2:1以上)に重点を置くなど、高いパフォーマンスを実現する方法を導入しています。
高可用性およびスケーラビリティ
Oracle Coherenceとの統合により、Oracle Tuxedoではその専用のスケーラブルなプロトコルとクラスタ作成機能を利用できるようになります。クラスタは、シームレスに拡大して、メモリーや処理能力を増やすことができます。また、クラスタ・メンバーで障害が発生した場合には透過的にフェイルオーバーするため、シングル・ポイント障害を回避することもできます。その結果、この機能によって可用性とスケーラビリティが高まります。
また、Oracle Coherenceを活用することにより、キャッシュ・エントリを複数のマシンにレプリケートでき、データ処理をデータの存在場所にファーム化して結果が返されるようにすることができます。これにより、データのスケーラビリティを確保できます。
様々なバッファ・タイプのサポート
この機能は、多くのOracle Tuxedoバッファ・タイプをサポートしているため、Oracle Tuxedoがサポートするデータ型にデータを一致させる手間が必要ありません。サポートされるTuxedoバッファ・タイプは、CARRAYFMLFML32MBSTRINGSTRINGVIEWVIEW32XMLRECORDX_C_TYPEおよびX_COMMONです。
簡単なアプローチ
この機能は透過的であるため、いっさいコードを変更することなく使用でき、取り組みやすいアプローチとなっています。Oracle Tuxedoでは、Oracle Coherence機能がJavaサーバー・コンテナにカプセル化されているため、ユーザーは、単にJavaサーバーを使用することで、この機能に関連するすべての機能を実装できます。

次の図は、Oracle Coherenceに基づいてTDCを使用するためのOracle Tuxedo MPドメインでの一般的なデプロイメントを示しています。

図13-1 Oracle Tuxedoサービスを対象とした結果キャッシュ


Oracle Tuxedoサービスを対象とした結果キャッシュの図

この図からわかるように、Oracle Tuxedo JavaサーバーはOracle Coherenceのクライアント(メンバー)と見なされます。Oracle Tuxedo Javaサーバーを直接使用して、異なるマシンに配置されたクラスタ・メンバーが相互に通信する方法に配慮することなく、複数のマシンからの結果をキャッシュできます。

13.2 Oracle Coherenceの構成

Oracle Coherenceで構成する場合と同じく、次のファイルを構成します。詳しい手順は、『Oracle Fusion Middleware Oracle Coherenceでのアプリケーションの開発』を参照してください。

  • tangosol-coherence-override.xml
  • coherence-cache-config.xml

前述の構成ファイルは任意のパスにデプロイできますが、このパスはJavaクラス・パス内にあり、かつcoherence.jarよりも前に存在している必要があります。たとえば、構成ファイルを${APPDIR}/configに配置し、次のようにOracle Coherenceサーバーを起動できます。

Oracle Coherenceクラスタのデプロイメントのリスト

java -server -showversion $JAVA_OPTS -Dtangosol.coherence.mode=prod -cp 
$APPDIR/config: ${COHERENCE_HOME}/lib/coherence.jar
com.tangosol.net.DefaultCacheServer

13.2.1 tangosol-coherence-override.xml

次のリストは一例であり、プロパティを太字で示しています。この例では、coherence_tuxはマルチキャスト・ポート番号が51697で、ユニキャスト・ポート番号が51687であるOracle Coherenceクラスタの名前です。

tangosol-coherence-override.xmlのリスト

<xml version='1.0'?>

<coherence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns="http://xmlns.oracle.com/coherence/coherence-operational-config"

xsi:schemaLocation="http://xmlns.oracle.com/coherence/coherence-operational-co 
nfig coherence-operational-config.xsd"> 

    <cluster-config>

        <member-identity> 
            <cluster-name 
system-property="tangosol.coherence.cluster">coherence_tux</cluster-name>

     </member-identity>
 
     <unicast-listener>
        <address 
system-property="tangosol.coherence.localhost">localhost</address> 

      <port system-property="tangosol.coherence.localport">51687</port>
  </unicast-listener> 
  <multicast-listener> 
        <port system-property="tangosol.coherence.clusterport">51697</port>    
     </multicast-listener> 
  </cluster-config>
</coherence>

13.2.2 coherence-cache-config.xml

次のリストは一例であり、プロパティを太字で示しています。この例では、Oracle Coherenceキャッシュをtux_distributedという名前で作成します。

coherence-cache-config.xmlのリスト

<?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 
coherence-cache-config.xsd">

    <caching-scheme-mapping>

      <cache-mapping>
        <cache-name>tux_distributed</cache-name>
        <scheme-name>distributed</scheme-name>
</cache-mapping>

</caching-scheme-mapping>

<caching-schemes>
  <distributed-scheme>
    <scheme-name>distributed</scheme-name>  
    <service-name>DistributedCache</service-name>
      <lease-granularity>member</lease-granularity>
    <backing-map-scheme>
        <local-scheme/>
        </backing-map-scheme>
        <autostart>true</autostart>
      </distributed-scheme>
    </caching-schemes>
  </cache-config>

13.3 Oracle Tuxedo Javaサーバーの構成

13.3.1 Oracle Tuxedo Javaサーバーの構成ファイルの構成

Oracle Tuxedo分散キャッシュ(TDC)に導入された、システム提供の新しいOracle Tuxedo Javaサーバーでは、Oracle Coherenceへのキャッシュ・リクエストを変換して応答を返送します。Oracle Coherenceのクライアントとして機能します。

このJavaサーバーによって使用されるJavaパッケージはcom.oracle.tuxedo.tdcj.jarで、これは${TUXDIR}/udataobj/tuxj/tdcにあります。

次のリストは、TDCが有効化されたOracle Tuxedo Javaサーバーの構成ファイルの例です。詳細は、バージョン2.0のJavaサーバー構成スキーマ・ファイルを参照してください。

  • 一般に、太字のコード行は変更しないでください。クラスcom.oracle.tuxedo.tdc.TCache4CoherenceはTDCによって使用されるメイン・クラスで、これは${TUXDIR}/udataobj/tuxj/tdc/com.oracle.tuxedo.tdcj.jarにあります。
  • 斜体のコード行は、環境の違いに応じて変更する必要があります。ファイルが機能するようにするには、<APPDIR>を実際のパスに置き換える必要があることに注意してください。

Oracle Tuxedo Javaサーバーの構成ファイルの構成のリスト

<?xml version="1.0" encoding="UTF-8"?>

<TJSconfig version="2.0">

    <java-config>
      <jvm-options>-XX:MaxPermSize=192m</jvm-options>
      <jvm-options>-server</jvm-options>

<jvm-options>-Dtangosol.coherence.distributed.localstorage=false</jvm-options>
      <jvm-options>-Dtangosol.coherence.mode=prod</jvm-options>
    </java-config>
<tux-config>
        <server-clopt>-f <APPDIR>/config/tdcsvr_coh.conf</server-clopt>
</tux-config>
<classpath-config>
</classpath-config>
<tux-resources>
</tux-resources>
<jdbc-resources>
</jdbc-resources>
<tux-server-config>

<classpath>${TUXDIR}/udataobj/tuxj/tdc/com.oracle.tuxedo.tdcj.jar</classpath>
        <classpath>${TUXDIR}/udataobj/tuxj/tdc/dms.jar</classpath>
        <classpath>${TUXDIR}/udataobj/tuxj/tdc/ojdl.jar</classpath>    
        <classpath>${APPDIR}/config</classpath>
        <classpath>${COHERENCE_HOME}/lib/coherence.jar</classpath>
        <server-class name="com.oracle.tuxedo.tdc.TCache4Coherence">
        </server-class>
     </tux-server-config>
</TJSconfig>

13.3.2 Oracle Tuxedo Distributed Caching (TDC)プロパティ・ファイルの構成

TDC用のキャッシュに関するすべてのプロパティを指定する新規プロパティ・ファイルを追加する必要があります。Oracle Tuxedo Javaサーバーでは、これらのキャッシュの名前を使用してサービスを通知します。単一のプロパティ・ファイルに数多くのOracle Tuxedoキャッシュを定義できます。

次のリストに、プロパティ・ファイルのテンプレートを示します。このテンプレートは、$TUXDIR/udataobj/tuxj/tdc/tdcsvr_coh.conf.templateにあります。このテンプレートでは、tc1tc2という2つのOracle Tuxedoキャッシュ名が構成されています。tc1ではOracle Coherenceキャッシュtux_distributedが使用され、tc2ではOracle Coherenceキャッシュtux2_distributedが使用されています。

このプロパティの詳細は、「Oracle Tuxedo分散キャッシュ(TDC)のプロパティ・ファイルのプロパティ」を参照してください。

TDCプロパティ・ファイル・テンプレートのリスト

#* global option encoding setting
#options.encoding=no
 
#* configurations for Tuxedo cache "tc"
 
#* option encoding setting
#cache.options.encoding.tc=no
#* physical cache used in Oracle Coherence
coh.cache.name.tc=tux_distributed
 
#* configurations for Tuxedo cache "tc2"
#
#* option encoding setting
#cache.options.encoding.tc2=no
#* physical cache used in Oracle Coherence
#coh.cache.name.tc2=tux2_distributed

13.4 クライアントおよびサーバーを対象としたデータ・キャッシュの使用

13.4.1 クライアントおよびサーバーを対象としてデータ・キャッシュを使用するステップ

13.4.1.1 Oracle Coherenceの構成

Oracle Coherenceを構成する方法は、「Oracle Coherenceの構成」を参照してください。

13.4.1.2 Oracle Coherenceクラスタの起動

実行中のOracle Coherenceクラスタがない場合は、自身のクラスタを起動し、構成ファイルのパスをJavaクラス・パスにcoherence.jarよりも前に構成します。例は、次のリストを参照してください。

13.4.1.3 Oracle Tuxedo Javaサーバーの構成

手順は、「Oracle Tuxedo Javaサーバーの構成」を参照してください。

13.4.1.4 UBBCONFIGの構成

TMJAVASVRUBBCONFIGに構成します。TMJAVASVRでは、マルチスレッド構成を使用してパフォーマンスを高めています。また、マルチインスタンス構成を使用して可用性を高めています。

TMJAVASVR用のUBBCONFIGのリスト

*RESOURCE
...
MODEL       SHM
...
*MACHINES
"m1"        LMID=L1
...
*GROUPS
JGRP1   LMID=L1 GRPNO=10
 
...
TMJAVASVR   SRVGRP=JGRP1   SRVID=10
            MINDISPATCHTHREADS=4 MAXDISPATCHTHREADS=4 MIN=2 MAX=2
            CLOPT="-- -c /home/scott/tuxedo/dom1/config/tdcsvr_coh.xml"    
...
13.4.1.5 キーに関連付けられているOracle TuxedoバッファのOracle Tuxedoキャッシュへの配置

Oracle Tuxedoネイティブ・クライアントまたはワークステーション・クライアントで、TDC API tpgetcacheおよびtpcacheputを使用し、キーに関連付けられているOracle TuxedoバッファをOracle Tuxedoキャッシュに配置します。tpgetcacheおよびtpcacheputの詳細は、「Oracle Tuxedo分散キャッシュ(TDC)関連のATMI API」を参照してください。

キーに関連付けられているOracle TuxedoバッファのOracle Tuxedoキャッシュへの配置のリスト

...
    TCACHE* mycache = NULL;
    char mykey[128];
    char* databuf = NULL;
 
    tpinit(NULL);
    databuf = tpalloc("STRING", NULL, 256);
 
    mycache = tpgetcache("tc");
    strcpy(mykey, "myname");
    strcpy(databuf, "scott");
    tpcacheput(mycache, mykey, databuf, 0, 0L);
 
    tpfree(databuf);
...
13.4.1.6 キーに基づいたOracle TuxedoキャッシュからのOracle Tuxedoバッファの取得

Oracle Tuxedoネイティブ・クライアントまたはワークステーション・クライアントで、TDC API tpgetcacheおよびtpcachegetを使用し、キーに関連付けられているOracle TuxedoバッファをOracle Tuxedoキャッシュに取得します。tpgetcacheおよびtpcachegetの詳細は、「Oracle Tuxedo分散キャッシュ(TDC)関連のATMI API」を参照してください。

キーに基づいたOracle TuxedoキャッシュからのOracle Tuxedoバッファの取得のリスト

...
    TCACHE* mycache = NULL;
    char mykey[128];
    char* databuf = NULL;
 
    tpinit(NULL);
    databuf = tpalloc("STRING", NULL, 256);
 
    mycache = tpgetcache("tc");
    strcpy(mykey, "myname");
    tpcacheget(mycache, mykey, &databuf, NULL, 0L); 

    tpfree(databuf);
...

13.4.2 サンプル: クライアントおよびサーバーを対象としたデータ・キャッシュの使用

${APPDIR}/home/scott/tuxedo/dom1であるとします。

13.4.2.1 サンプル: Oracle Coherenceの構成
  • ${APPDIR}/configtangosol-coherence-override.xmlを準備します。次のリストを参照してください。

    マルチキャスト・ポート番号が51697で、ユニキャスト・ポート番号が51687であるOracle Coherenceクラスタcoherence_tuxを構成します。

  • ${APPDIR}/configcoherence-cache-config.xmlを準備します。次のリストを参照してください。

    Oracle Coherenceキャッシュtux_distributedを構成します。

tangosol-coherence-override.xmlの準備のリスト

<?xml version='1.0'?>

<coherence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns="http://xmlns.oracle.com/coherence/coherence-operational-config"

xsi:schemaLocation="http://xmlns.oracle.com/coherence/coherence-operational-co
nfig coherence-operational-config.xsd">
   <cluster-config>
      <member-identity>
          <cluster-name 
system-property="tangosol.coherence.cluster">coherence_tux</cluster-name>
    </member-identity>
    <unicast-listener>
      <address 
system-property="tangosol.coherence.localhost">localhost</address>

       <port system-property="tangosol.coherence.localport">51687</port>
    </unicast-listener> 
    <multicast-listener>
          <port system-property="tangosol.coherence.clusterport">51697</port>
       </multicast-listener>
   </cluster-config>
</coherence>

coherence-cache-config.xmlの準備のリスト

<?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 
coherence-cache-config.xsd">

<caching-scheme-mapping>

  <cache-mapping>

     <cache-name>tux_distributed</cache-name>
     <scheme-name>distributed</scheme-name>
   </cache-mapping>
</caching-scheme-mapping>
 
<caching-schemes>
  <distributed-scheme>
    <scheme-name>distributed</scheme-name>  
    <service-name>DistributedCache</service-name>
      <lease-granularity>member</lease-granularity>
    <backing-map-scheme>
       <local-scheme/>
     </backing-map-scheme>
      <autostart>true</autostart>
    </distributed-scheme>
  </caching-schemes>
</cache-config>
13.4.2.2 サンプル: Oracle Coherenceクラスタの起動

実行中のOracle Coherenceクラスタがない場合は、独自のクラスタを起動できます。

java -server -showversion $JAVA_OPTS -Dtangosol.coherence.mode=prod -cp 
${APPDIR}/config: ${COHERENCE_HOME}/lib/coherence.jar 
com.tangosol.net.DefaultCacheServer
13.4.2.3 サンプル: Oracle Tuxedo Javaサーバーの構成
13.4.2.3.1 Oracle Tuxedo Javaサーバー用のtdcsvr_coh.xmlの構成

Oracle Tuxedo Javaサーバー用のtdcsvr_coh.xml${APPDIR}/configに準備します。

次のリストを参照してください。<server-clopt>-f /home/scott/tuxedo/dom1/config/tdcsvr_coh.conf</server-clopt>プロパティにTDCプロパティ・ファイルを指定しています。

Oracle Tuxedo Javaサーバーの構成ファイルの構成のリスト

<?xml version="1.0" encoding="UTF-8"?>

<TJSconfig version="2.0">
    <java-config>
        <jvm-options>-XX:MaxPermSize=192m</jvm-options>
        <jvm-options>-server</jvm-options>
<jvm-options>-Dtangosol.coherence.distributed.localstorage=false</jvm-options>
        <jvm-options>-Dtangosol.coherence.mode=prod</jvm-options>
   </java-config>
<tux-config>

      <server-clopt>-f 
/home/scott/tuxedo/dom1/config/tdcsvr_coh.conf</server-clopt>

</tux-config>

<classpath-config>

</classpath-config>

<tux-resources>

</tux-resources>

<jdbc-resources>

</jdbc-resources>

<tux-server-config>

<classpath>${TUXDIR}/udataobj/tuxj/tdc/com.oracle.tuxedo.tdcj.jar</classpath>
      <classpath>${TUXDIR}/udataobj/tuxj/tdc/dms.jar</classpath>
      <classpath>${TUXDIR}/udataobj/tuxj/tdc/ojdl.jar</classpath>
      <classpath>${COHERENCE_HOME}/lib/coherence.jar</classpath>
      <classpath>${APPDIR}/config</classpath>
      <server-class name="com.oracle.tuxedo.tdc.TCache4Coherence">
      </server-class>
    </tux-server-config>
</TJSconfig>
13.4.2.3.2 TDCプロパティ・ファイル用のtdcsvr_coh.confの準備

TDCプロパティ・ファイル用のtdcsvr_coh.conf${APPDIR}/configに準備します。

次のリストを参照してください。Oracle Tuxedoキャッシュtcを構成していますが、実際にはOracle Coherenceキャッシュtux_distributedを使用しています。

Oracle Tuxedo分散キャッシュ(TDC)のプロパティ・ファイルの構成のリスト

#* global option encoding setting

#options.encoding=no
 

#* configurations for Tuxedo cache "tc"
 

#* option encoding setting

#cache.options.encoding.tc=no

#* physical cache used in Oracle Coherence

coh.cache.name.tc=tux_distributed
13.4.2.4 サンプル: UBBCONFIGでのTMJAVASVRの構成

UBBCONFIGTMJAVASVRを構成します。

次のリストを参照してください。マルチスレッド構成を有効にし、TMJAVASVR構成ファイルtdcsvr_coh.xmlを設定しています。

UBBCONFIGでのTMJAVASVRの構成のリスト

*RESOURCES
...
MODEL SHM
...
*MACHINES

"m1"      LMID=L1
...
*GROUPS
JGRP1     LMID=L1 GRPNO=10
 
...
TMJAVASVR SRVGRP=JGRP1 SRVID=10
           MINDISPATCHTHREADS=4 MAXDISPATCHTHREADS=4 MIN=2 MAX=2
           CLOPT="-- -c /home/scott/tuxedo/dom1/config/tdcsvr_coh.xml"
...
13.4.2.5 サンプル: キーに関連付けられているOracle TuxedoバッファのOracle Tuxedoキャッシュへの配置

mykeyキーに関連付けられたOracle Tuxedo STRINGバッファをOracle Tuxedoキャッシュtcに格納します。

Oracle Tuxedoバッファの配置のリスト

...
      TCACHE* mycache = NULL;
      char mykey[128];
      char* databuf = NULL;
 
      tpinit(NULL);
      databuf = tpalloc("STRING", NULL, 256);
 
      mycache = tpgetcache("tc");
      strcpy(mykey, "myname");
      strcpy(databuf, "scott");
      tpcacheput(mycache, mykey, databuf, 0, 0L);  
 
      tpfree(databuf);
...
 
13.4.2.6 サンプル: キーに基づいたOracle TuxedoキャッシュからのOracle Tuxedoバッファの取得

キーmykeyに従ってOracle TuxedoキャッシュtcからOracle Tuxedo型付きバッファを取得します。

Oracle Tuxedoバッファの取得のリスト

...

    TCACHE* mycache = NULL;
    char mykey[128];
    char* databuf = NULL;
 
    tpinit(NULL);
    databuf = tpalloc("STRING", NULL, 256);
 

    mycache = tpgetcache("tc");
    strcpy(mykey, "myname");
    tpcacheget(mycache, mykey, &databuf, NULL, 0L);  

    tpfree(databuf);
...

13.5 Oracle Tuxedoサービスを対象とした結果キャッシュの使用

13.5.1 Oracle Tuxedoサービスを対象として結果キャッシュを使用するステップ

また、MIBを使用してTDCに動的に変更を加えることもできます。

13.5.1.1 Oracle Coherenceの構成

手順は、「Oracle Coherenceの構成」を参照してください。

13.5.1.2 Oracle Coherenceクラスタの起動

実行中のOracle Coherenceクラスタがない場合は、自身のクラスタを起動し、構成ファイルのパスをJavaクラス・パスにcoherence.jarよりも前に構成します。例は、次のリストを参照してください。

13.5.1.3 Oracle Tuxedo Javaサーバーの構成

手順は、「Oracle Tuxedo Javaサーバーの構成」を参照してください。

13.5.1.4 UBBCONFIGの構成

TDCをUBBCONFIGに構成します。

13.5.1.4.1 SERVICESセクション

このサービスのキャッシュに使用するキャッシュ基準の名前としてCACHING=string_valueを指定します。詳細は、「Oracle Tuxedo分散キャッシュ(TDC)関連のUBBCONFIGパラメータ」を参照してください。

13.5.1.4.2 CACHINGセクション

UBBCONFIGでこのCACHINGセクションを指定します。詳細は、「Oracle Tuxedo分散キャッシュ(TDC)関連のUBBCONFIGパラメータ」を参照してください。

次のリストに例を示します

  • Svccache1は、Oracle Tuxedoキャッシュtc1を使用します。その他の構成はデフォルトです。(つまり、KEY=$service+$requestおよびKEY_BUFTYPE=STRINGです)。
  • Svccache2は、Oracle Tuxedoキャッシュtc1を使用します。リクエストを使用してレスポンス・データのキャッシング時にキーを認識します。その他の構成はデフォルトです。(つまり、KEY_BUFTYPE=STRINGです)。
  • Svccache3は、Oracle Tuxedoキャッシュtc1を使用します。固定文字列key1をキーとして使用します。その他の構成はデフォルトです。
  • Svccache4は、Oracle Tuxedoキャッシュtc1を使用します。サービスへのリクエスト・メッセージのバッファ・タイプは、サブタイプがmystruct1VIEW32です。サブタイプmystruct1のフィールドnameの値をキーとして使用します。
  • Svccache5は、Oracle Tuxedoキャッシュtc1を使用します。FML32およびVIEW32: mystruct1のバッファ・タイプには、同じfield1およびfield2があります(名前とデータ型は同じである必要がありますが、値は違ってもかまいません)。リクエスト・メッセージでは、field1およびfield2の値をキーとして使用します。

UBBCONFIG CACHINGセクションの構成のリスト

...
*CACHING
Svccache1
      CACHENAME="tc1"
 
Svccache2
      CACHENAME="tc1"
      KEY="$request"
 
Svccache3
      CACHENAME="tc1"
      KEY="key1"
 
Svccache4
      CACHENAME="tc1"
      KEY="$request"
      KEY_BUFTYPE="IEW32:mystruct1"
      KEY_FIELD="name"
 
Svccache5  
      CACHENAME="tc1"
      KEY="mykey_$request"
      KEY_BUFTYPE="FML32;VIEW32:mystruct1"
         KEY_FIELD="field1+field2"
 
...
13.5.1.5 MIBを使用したTDCに対する動的な変更

MIBを使用して、TDCに対する変更を動的に行うことができます。

詳細は、「Oracle Tuxedo分散キャッシュ(TDC)関連のMIB属性」を参照してください。

13.5.2 サンプル: Oracle Tuxedoサービスを対象とした結果キャッシュの使用

13.5.2.1 サンプル: VIEWTABLEの構成

VIEWTABLEを構成します。次のリストを参照してください。ここで、バッファ・タイプはVIEWであり、サブタイプはmystruct1です。

VIEWTABLEの構成のリスト

...
VIEW mystruct1
# type     cname     fbname     count     flag     size     null
string     name         -         1         -       31       -
string     address      -         1         -       255      -
char       age          -         1         -        -       -
END
...
13.5.2.2 サンプル: UBBCONFIGの構成

UBBCONFIGを構成します。次のリストを参照してください

TMJAVASVRが構成されています
マルチスレッド構成を有効にし、構成ファイルtdcsvr_coh.xmlを設定しています。
キャッシュが有効化されています
Oracle Tuxedoサービスmysvc1では、パフォーマンスを高めるためにキャッシュ・エントリsvccache1を使用します。svccache1では、Oracle Tuxedoキャッシュtc1を使用して、サービス結果をキャッシュします。レスポンスの対応するキーは、リクエスト・データの値です。

UBBCONFIGの構成のリスト

...
*GROUPS
JGRP1 LMID=L1 GRPNO=10
 
...
TMJAVASVR       SRVGRP=JGRP1 SRVID=10
                MINDISPATCHTHREADS=4 MAXDISPATCHTHREADS=4 MIN=2 MAX=2
                CLOPT="-- -c /home/scott/tuxedo/dom1/config/tdcsvr_coh.xml"
...
*SERVICES
mysvc1
        ...
        CACHING="svccache1"
...
*CACHING
svccache1
       CACHENAME="tc1"
       KEY=$request
...
13.5.2.3 サンプル: サーバー側での設定

サーバー側で構成します。次のリストを参照してください。ここで、mysvc1のリクエストはSTRINGとして設定され、mysvc1のレスポンスはVIEW32 mystruct1です。

サーバー側での構成のリスト

...
struct mystruct1* rsp;
int tpsvrinit(int argc, char *argv[])
{
       rsp = tpalloc("VIEW32", "mystruct1", sizeof(struct mystruct1));
}
...
void mysvc1(TPSVCINFO *rqst)
{
      int ret = 0;
      /*rqst->data is the name, getrsp will get data from the database and 
store into rsp*/
      ret = getrsp(rqst->data, rsp);
      if(ret < 0){
              tpreturn(TPFAIL, 0, NULL, 0L, 0);
      }
      tpreturn(TPSUCCESS, 0, rsp, 0L, 0);
}
...
13.5.2.4 サンプル: クライアント側での設定

データ・ファイルが次のようになっていると想定としています。

データ・ファイルの例のリスト

...
Scott
Mike
Andy
Scott
Ben
Brian
Scott
Clark
...

次のリストのように、クライアント側で設定します。

最初にScottがリクエストとして取得されると、mysvc1が呼び出されてレスポンスが返されます。レスポンスは、Oracle Tuxedoキャッシュtc1にキーScottとともに格納されます。キャッシュtc1内のデータが期限切れになっていないかぎり、以後Scottからサービスmysvc1にリクエストを送ると、サービス自体が呼び出されるのではなく、キャッシュtc1からレスポンスが取得されます。

クライアント側での設定のリスト

...
struct mystruct1* rsp;
char* req;
int main(int argc, char *argv[])
{
      int ret;
      long olen = 0;
      rsp = tpalloc("VIEW32", "mystruct1", sizeof(struct mystruct1));
      req = tpalloc("STRING", NULL, 32);
      /*get name from the data file*/
      while(getname(req) == 0){
            tpcall("mysvc1",req, 0, &rsp, &olen,0);
}
}
...

13.6 実行コンテキストID (ECID)のOracle Coherenceへの伝播

Oracle Coherenceのログでは、実行コンテキストID (ECID)を使用できます。このグローバルに一意のIDをOracleコンポーネント間のリクエストにアタッチできます。ECIDを使用すると、複数のリクエストが並行して処理される場合に同じリクエストに関する複数のログ・メッセージを追跡できます。Oracle Coherence操作を呼び出す前にすでにアクティブ化されたECIDを持っている場合にのみ、Oracle CoherenceログにECIDが含まれます。ECIDは、別のコンポーネントから渡される場合や、クライアント・コードで取得される場合があります。

Oracle Tuxedo TDCは、Oracle Coherenceのクライアントとして機能するため、ECIDをOracle Coherenceに伝播できます。

13.6.1 ECIDの有効化

  • Oracle TuxedoでのECIDの有効化

    Oracle Tuxedoには、UBBCONFIG内のOPTIONSに追加してECIDを制御できる2つのフラグがあります。

    • ECID_CREATE

      ECID (実行コンテキスト識別子)作成機能が有効になります。このケースでは、境界ノード(ネイティブ、WSおよびJoltのクライアントとドメイン・ゲートウェイを含む)がECIDを生成できます。

    • ECID_USERLOG

      識別子ECID_USERLOGが設定され、ECIDがNULL文字列の場合、ECIDはユーザー・ログに追加されます。

  • Oracle CoherenceでのECIDの有効化

    手順の詳細は、 Oracle Coherenceのドキュメント を参照してください。

13.6.2 TDCに対するECIDの有効化

${APPDIR}/configtangosol-coherence-override.xmlを準備します。具体的には次のようになります。

  • <destination>要素を使用して、ログ・メッセージをファイルに出力する場合のパスおよびファイル名を構成します。指定されたパスは、存在している必要があります。
  • ecid< message-format >要素に追加して、ECIDを有効にします。
  • <severity-level>要素を使用して、ログ・レベルを変更できます。

リスト

<?xml version='1.0'?>

<coherence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns="http://xmlns.oracle.com/coherence/coherence-operational-config"

xsi:schemaLocation="http://xmlns.oracle.com/coherence/coherence-operational-co
nfig coherence-operational-config.xsd">

<cluster-config>
      <member-identity>

      <cluster-name 
system-property="tangosol.coherence.cluster">coherence_tux</cluster-name>
      </member-identity>
      <unicast-listener>
      <address 
system-property="tangosol.coherence.localhost">localhost</address>
      <port system-property="tangosol.coherence.localport">51687</port>
      </unicast-listener>
      <multicast-listener>
      <port system-property="tangosol.coherence.clusterport">51697</port>
      </multicast-listener>
</cluster-config>
 
<logging-config>

        <destination 
system-property="tangosol.coherence.log">/tmp/coherence.log</destination>
       <severity-level 
system-property="tangosol.coherence.log.level">9</severity-level>

      <message-format>{date}/{uptime} {product} ecid={ecid} {version}
&lt;{level}&gt;(thread={thread},member={member}):{text}</message-format>  
</logging-config>
</coherence>

13.7 Oracle Tuxedo分散キャッシュ(TDC)関連のATMI API

表13‑1 Oracle Tuxedo分散キャッシュ(TDC)関連のATMI API

名前 説明
tpgetcache(3c) 構成に従ってOracle Tuxedoキャッシュ・ハンドルを取得します。
tpcacheput(3c) Oracle Tuxedo型付きバッファをキーに関連付けてキャッシュに格納します。
tpcacheget(3c) キーに関連付けられているOracle Tuxedo型付きバッファをキャッシュから取得します。
tpcacheremove(3c) パラメータkeyに関連付けられているキャッシュ・エントリをキャッシュから削除します。
tpcachemremove(3c) パラメータkeyarrayに関連付けられているキャッシュ・エントリをキャッシュから削除します。
tpcacheremoveall(3c) キャッシュからすべてのキャッシュ・エントリを削除します。

13.7.1 tpgetcache(3c)

13.7.1.1 名前

tpgetcache - 構成に従ってOracle Tuxedoキャッシュ・ハンドルを取得します

13.7.1.2 形式
#include "atmi.h"

TCACHE* tpgetcache(const char* name);
13.7.1.3 説明

tpgetcache(3c)は、取得するOracle Tuxedoキャッシュの名前を示すOracle Tuxedoキャッシュ名に従ってOracle Tuxedoキャッシュ・ハンドルを取得します。名前の長さは78文字以内にする必要があります。tpgetcache(3c)はスレッド・レベルのAPIです。返されるハンドルTCACHEは、同じスレッド内でのみ使用できます。

13.7.1.4 戻り値

tpgetcache(3c)は、正常に終了すると、ハンドル型付きのTCACHEを返しますが、これは内部構造です。

失敗すると、tpgetcache()NULLを返し、tperrnoを設定してエラー条件を示します。呼出しが失敗してtperrnoに特定の値が設定された場合は、続けて、中間のATMI呼出しを省略してtperrordetail(3c)を呼び出すと、エラーに関する詳細な情報が提供されます。詳細は、「tperrordetail(3c)」リファレンス・ページを参照してください。

13.7.1.5 エラー
[TPEINVAL]
無効な引数(たとえば、confにNULL)が指定されました。
[TPENOENT]
リクエストされたキャッシュは存在しません。
[TPETIME]
このエラー・コードは、タイムアウトが発生したことを示します
[TPESYSTEM]
Oracle Tuxedoシステムのエラーが発生しました。エラーの正確な内容はULOGに追加されます。
[TPEOS]
オペレーティング・システムのエラーが発生しました。
[TPESVCFAIL]
Oracle Tuxedoキャッシュ・サーバーはエラーを満たします。tpurcodeには正確なエラー値が含まれます。tpurcodeの想定される値を次に示します。
TDC_ERR_CACHE_NOTEXIST
このエラー・コードは、リクエストされたOracle Tuxedoキャッシュが存在しないことを示します。
TDC_ERR_CACHE_UNAVAIL
このエラー・コードは、リクエストされたOracle Tuxedoキャッシュが使用不可であることを示します。
TDC_ERR_CACHENAME_INVALID
このエラー・コードは、リクエストされたOracle Tuxedoキャッシュが無効であることを示します。

13.7.2 tpcacheput(3c)

13.7.2.1 名前

tpcacheput - Oracle Tuxedo型付きバッファをキーに関連付けてキャッシュに格納します

13.7.2.2 形式
#include "atmi.h"
int tpcacheput(TCACHE* tc, char* key, char* data, long len, long flags);
13.7.2.3 説明

tpcacheput(3c)は、Oracle Tuxedo型付きバッファをキーに関連付けてキャッシュに格納します。tcは、tpgetcache(3c)によって返されます。dataは、tpalloc(3c)によって割り当てられたTuxedo型付きバッファを指します。lenはデータの長さです。データの型に長さを指定する必要がない場合(FMLフィールド化バッファなど)、lenは無視されます(0でもかまいません)。flagsは予約されており、0Lである必要があります。

13.7.2.4 戻り値

正常に終了すると、tpcacheput(3c)は0を返します。

異常終了すると、tpcacheput(3c)は-1を返し、tperrnoを設定してエラー条件を示します。呼出しが異常終了してtperrnoに特定の値が設定されたときは、中間のATMI呼出しを省略して引き続きtperrordetail(3c)を呼び出すと、エラーに関する詳細な情報が提供されます。詳細は、「tperrordetail(3c)」リファレンス・ページを参照してください。

13.7.2.5 エラー
[TPEINVAL]
無効な引数が指定されました。
[TPENOENT]
リクエストされたキャッシュは存在しません。
[TPETIME]
このエラー・コードは、タイムアウトが発生したことを示します
[TPESYSTEM]
Oracle Tuxedoシステムのエラーが発生しました。エラーの正確な内容はULOGに追加されます。
[TPEOS]
オペレーティング・システムのエラーが発生しました。
[TPESVCFAIL]
Oracle Tuxedoキャッシュ・サーバーはエラーを満たします。tpurcodeには正確なエラー値が含まれます。tpurcodeの想定される値を次に示します。
TDC_ERR_CACHE_NOTEXIST
このエラー・コードは、リクエストされたOracle Tuxedoキャッシュが存在しないことを示します。
TDC_ERR_CACHE_UNAVAIL
このエラー・コードは、リクエストされたOracle Tuxedoキャッシュが使用不可であることを示します。
TDC_ERR_CACHENAME_INVALID
このエラー・コードは、リクエストされたOracle Tuxedoキャッシュが無効であることを示します。

13.7.3 tpcacheget(3c)

13.7.3.1 名前

tpcacheget - キーに関連付けられているOracle Tuxedo型付きバッファをキャッシュから取得します

13.7.3.2 形式
#include "atmi.h"
int tpcacheget(TCACHE* tc, char* key, char** odata, long* olen, long flags);
13.7.3.3 説明

tpcacheget(3c)は、キーに関連付けられているOracle Tuxedo型付きバッファをキャッシュから取得します。tctpgetcache(3c)によって返されます。odataは、キーのデータが読み込まれるバッファへのポインタのアドレスです。これは、tpalloc(3c)によって最初に割り当てられたバッファを指す必要があります。olenはデータの長さを指します。flagsは予約されており、0Lである必要があります。

13.7.3.4 戻り値

正常に終了すると、tpcacheget(3c)は0を返します。

異常終了すると、tpcacheget(3c)は-1を返し、tperrnoを設定してエラー条件を示します。呼出しが異常終了してtperrnoに特定の値が設定されたときは、中間のATMI呼出しを省略して引き続きtperrordetail(3c)を呼び出すと、エラーに関する詳細な情報が提供されます。詳細は、「tperrordetail(3c)」リファレンス・ページを参照してください。

13.7.3.5 エラー
[TPEINVAL]
無効な引数が指定されました。
[TPENOENT]
リクエストされたキャッシュは存在しません。
[TPETIME]
このエラー・コードは、タイムアウトが発生したことを示します。
[TPESYSTEM]
Oracle Tuxedoシステムのエラーが発生しました。エラーの正確な内容はULOGに追加されます。
[TPEOS]
オペレーティング・システムのエラーが発生しました。
[TPESVCFAIL]
Oracle Tuxedoキャッシュ・サーバーはエラーを満たします。tpurcodeには正確なエラー値が含まれます。tpurcodeの想定される値を次に示します。
TDC_ERR_CACHE_NOTEXIST
このエラー・コードは、リクエストされたOracle Tuxedoキャッシュが存在しないことを示します。
TDC_ERR_CACHE_UNAVAIL
このエラー・コードは、リクエストされたOracle Tuxedoキャッシュが使用不可であることを示します。
TDC_ERR_CACHENAME_INVALID
このエラー・コードは、リクエストされたOracle Tuxedoキャッシュが無効であることを示します。
TDC_ERR_KEY_NOTEXIST
このエラー・コードは、指定されたキーに基づいてリクエストされたエントリが存在しないことを示します。

13.7.4 tpcacheremove(3c)

13.7.4.1 名前

tpcacheremove - パラメータkeyに関連付けられているキャッシュ・エントリをキャッシュから削除します

13.7.4.2 形式
#include "atmi.h"
int tpcacheremove(TCACHE* tc, char* key, long flags);
13.7.4.3 説明

tpcacheremove(3c)は、パラメータkeyに関連付けられているキャッシュ・エントリを削除します。tctpgetcache(3c)によって返されます。flagsは予約されており、0Lである必要があります。

13.7.4.4 戻り値

正常に終了すると、tpcacheremove(3c)は0を返します。

異常終了すると、tpcacheremove(3c)は-1を返し、tperrnoを設定してエラー条件を示します。呼出しが異常終了してtperrnoに特定の値が設定されたときは、中間のATMI呼出しを省略して引き続きtperrordetail(3c)を呼び出すと、エラーに関する詳細な情報が提供されます。詳細は、「tperrordetail(3c)」リファレンス・ページを参照してください。

13.7.4.5 エラー
[TPEINVAL]
無効な引数が指定されました。
[TPENOENT]
リクエストされたキャッシュは存在しません。
[TPETIME]
このエラー・コードは、タイムアウトが発生したことを示します。
[TPESYSTEM]
Oracle Tuxedoシステムのエラーが発生しました。エラーの正確な内容はULOGに追加されます。
[TPEOS]
オペレーティング・システムのエラーが発生しました。
[TPESVCFAIL]
Oracle Tuxedoキャッシュ・サーバーはエラーを満たします。tpurcodeには正確なエラー値が含まれます。tpurcodeの想定される値を次に示します。
TDC_ERR_CACHE_NOTEXIST
このエラー・コードは、リクエストされたOracle Tuxedoキャッシュが存在しないことを示します。
TDC_ERR_CACHE_UNAVAIL
このエラー・コードは、リクエストされたOracle Tuxedoキャッシュが使用不可であることを示します。
TDC_ERR_CACHENAME_INVALID
このエラー・コードは、リクエストされたOracle Tuxedoキャッシュが無効であることを示します。

13.7.5 tpcachemremove(3c)

13.7.5.1 名前

tpcachemremove - パラメータkeyarrayに関連付けられているキャッシュ・エントリをキャッシュから削除します

13.7.5.2 形式
#include "atmi.h"
int tpcachemremove(TCACHE* tc, char* keyarray[], int size, long flags);
13.7.5.3 説明

tpcachemremove(3c)は、パラメータkeyarrayに関連付けられているキャッシュ・エントリをキャッシュから削除します。tctpgetcache(3c)によって返されます。keyarrayは、削除されるキーの配列です。sizeはkeyarrayのサイズです。flagsは予約されており、0Lである必要があります。

13.7.5.4 戻り値

正常に終了すると、tpcachemremove(3c)は0を返します。

異常終了すると、tpcachemremove(3c)は-1を返し、tperrnoを設定してエラー条件を示します。呼出しが異常終了してtperrnoに特定の値が設定されたときは、中間のATMI呼出しを省略して引き続きtperrordetail(3c)を呼び出すと、エラーに関する詳細な情報が提供されます。詳細は、「tperrordetail(3c)」リファレンス・ページを参照してください。

13.7.5.5 エラー
[TPEINVAL]
無効な引数が指定されました。
[TPENOENT]
リクエストされたキャッシュは存在しません。
[TPETIME]
このエラー・コードは、タイムアウトが発生したことを示します
[TPESYSTEM]
Oracle Tuxedoシステムのエラーが発生しました。エラーの正確な内容はULOGに追加されます。
[TPEOS]
オペレーティング・システムのエラーが発生しました。
[TPESVCFAIL]
Oracle Tuxedoキャッシュ・サーバーはエラーを満たします。tpurcodeには正確なエラー値が含まれます。tpurcodeの想定される値を次に示します。
TDC_ERR_CACHE_NOTEXIST
このエラー・コードは、リクエストされたOracle Tuxedoキャッシュが存在しないことを示します。
TDC_ERR_CACHE_UNAVAIL
このエラー・コードは、リクエストされたOracle Tuxedoキャッシュが使用不可であることを示します。
TDC_ERR_CACHENAME_INVALID
このエラー・コードは、リクエストされたOracle Tuxedoキャッシュが無効であることを示します。

13.7.6 tpcacheremoveall(3c)

13.7.6.1 名前

tpcacheremoveall - キャッシュからすべてのキャッシュ・エントリを削除します

13.7.6.2 形式
#include "atmi.h"
int tpcacheremoveall(TCACHE* tc, long flags);
13.7.6.3 説明

tpcacheremoveall(3c)は、キャッシュからすべてのエントリを削除します。tctpgetcache(3c)によって返されます。flagsは予約されており、0Lである必要があります。

13.7.6.4 戻り値

正常に終了すると、tpcacheremoveall(3c)は0を返します。

異常終了すると、tpcacheremoveall(3c)は-1を返し、tperrnoを設定してエラー条件を示します。呼出しが異常終了してtperrnoに特定の値が設定されたときは、中間のATMI呼出しを省略して引き続きtperrordetail(3c)を呼び出すと、エラーに関する詳細な情報が提供されます。詳細は、「tperrordetail(3c)」リファレンス・ページを参照してください。

13.7.6.5 エラー
[TPEINVAL]
無効な引数が指定されました。
[TPENOENT]
リクエストされたキャッシュは存在しません。
[TPETIME]
このエラー・コードは、タイムアウトが発生したことを示します。
[TPESYSTEM]
Oracle Tuxedoシステムのエラーが発生しました。エラーの正確な内容はULOGに追加されます。
[TPEOS]
オペレーティング・システムのエラーが発生しました。
[TPESVCFAIL]
Oracle Tuxedoキャッシュ・サーバーはエラーを満たします。tpurcodeには正確なエラー値が含まれます。tpurcodeの想定される値を次に示します。
TDC_ERR_CACHE_NOTEXIST
このエラー・コードは、リクエストされたOracle Tuxedoキャッシュが存在しないことを示します。
TDC_ERR_CACHE_UNAVAIL
このエラー・コードは、リクエストされたOracle Tuxedoキャッシュが使用不可であることを示します。
TDC_ERR_CACHENAME_INVALID
このエラー・コードは、リクエストされたOracle Tuxedoキャッシュが無効であることを示します。

13.8 Oracle Tuxedo分散キャッシュ(TDC)のプロパティ・ファイルのプロパティ

Oracle Tuxedo TDCプロパティ・ファイルは、簡単な行指向形式のファイルです。

Propertiesは行単位で処理されます。行には自然行と論理行の2種類があります。

自然行は、行末記号(\\n\\r、または\\r\\n)のセットまたはストリームの末尾で区切られた1行の文字列として定義されます。自然行は、空白の行やコメント行であるか、キーと要素のペアの全部または一部を保持する場合があります。

論理行は、キーと要素のペアの全データを保持します。バックスラッシュ文字\\を使用して行末記号シーケンスをエスケープすることで、隣接する複数の自然行にまたがる場合があります。

空白文字だけを含む自然行は、空白と見なされて無視されます。コメント行には、ASCII '#'または'!'が最初の非空白文字として含まれます。キーには、行内の最初の非空白文字から最初のエスケープされていない'=', ':'の手前までの文字がすべて含まれます。キーのあとの空白はすべてスキップされます。キーに続く最初の非空白文字が'='または':'である場合、これは無視され、その後の空白文字もすべてスキップされます。行上の残りのすべての文字は、関連付けられた要素文字列の一部になります。残りの文字がない場合、その要素は空の文字列""です。

同じキーのプロパティが複数ある場合は、最後のプロパティが使用されます。

次の表に、サポートされているTDCプロパティ・ファイルのプロパティを示します。

表13-2 Oracle Tuxedo Distributed Caching (TDC)プロパティ・ファイルのプロパティ

プロパティ 説明
options.encoding 次の値を指定できます:
  • yes (すべてのキャッシュ・データをエンコードする必要があります)
  • no (デフォルト)
この値は次でオーバーライドできます
cache.options.encode.[cachename]
.
cache.options.encoding.[cachename] yesは、Oracle Tuxedoキャッシュ[cachename]内のすべてのキャッシュ・データをエンコードする必要があることを示します。データ表現が異なるマシンにキャッシュ・ユーザーを配置するときに、有効にする必要があります。

このプロパティを設定しないと、options.encoding値が使用されます。

coh.cache.name.[cachename] Oracle Tuxedoキャッシュ[cachename]のためにCoherenceクラスタで使用されているキャッシュ名を示します。

これは、Oracle CoherenceをTDCのために使用する場合に、TDCプロパティ・ファイルで必要になります。

ノート:

[cachename]の長さは、78文字以下にする必要があります。

13.9 Oracle Tuxedo分散キャッシュ(TDC)関連のUBBCONFIGパラメータ

13.10 UBBCONFIG SERVICESセクション

表13‑3 Oracle Tuxedo分散キャッシュ(TDC)関連のUBBCONFIG SERVICESセクション・パラメータ

パラメータ 説明
CACHING=string_value(必須) レスポンスをキャッシュする際に、このサービスに使用するキャッシュ基準の名前を指定します。string_valueは、CACHINGセクションで定義されているCACHING_CRITERIA_NAMEである必要があります。このパラメータの指定は必須であり、指定しない場合、サービス・キャッシュは有効になりません。string_valueの長さは、127文字以下にする必要があります。

13.10.1 UBBCONFIG CACHINGセクション

表13‑4 Oracle Tuxedo分散キャッシュ(TDC)関連のUBBCONFIGパラメータ

パラメータ 説明
CACHING_CRITERIA_NAME required_parameters(必須) CACHING_CRITERIA_NAME (string_value)は、SERVICESセクション内の特定のサービス・エントリについてCACHINGパラメータに割り当てられている名前です。CACHING_CRITERIA_NAMEの長さは、127文字以下にする必要があります。
CACHENAME=string_value(必須) 使用するOracle Tuxedoキャッシュの名前を指定します。string_valueは78文字以内にする必要があります。
KEY=string_value(オプション) キャッシュされたデータを関連付けるキーの構成方法を指定します。string_valueは127文字以下にする必要があります。

このパラメータは省略可能です。指定されていない場合、キーは、サービス名とリクエスト内のシリアライズされたユーザー・データの組合せとして生成されます。string_valueでは、$によってキーを構成する組込み変数をインポートできます。変数requestは、リクエスト内のユーザー・データの一部またはすべてを使用することを示します。

たとえば、mykey_$requestは、キーの形式がmykey_servicename_[user data in request]であることを示します。

KEY_BUFTYPEおよびKEY_FIELDパラメータは、ユーザー・データのどの部分を使用するかを指定する場合に役立ちます。

KEY_BUFTYPE="type1[:subtype1[,subtype2 . . . ]][;type2[:subtype3[, . . . ]]] . . ."(オプション) キーを生成するために使用する、このキャッシング・エントリが有効なデータ・バッファのタイプとサブタイプのリスト。このパラメータの長さは255文字までで、最大32のタイプ/サブタイプの組合せを指定できます。

タイプは、STRING、CARRAY、FML、FML32、XML、VIEW、VIEW32、RECORD、MBSTRING、X_C_TYPEまたはX_COMMONのいずれかにする必要があります。タイプがSTRING、CARRAY、FML、FML32、MBSTRINGまたはXMLの場合、サブタイプは指定できません。タイプがVIEWVIEW32RECORDX_C_TYPEおよびX_COMMONの場合はサブタイプが必要です(*は使用できません)。サブタイプ名には、セミコロン、コロン、カンマまたはアスタリスク文字を使用できません。タイプとサブタイプのペアのうち、重複するものは同じキャッシュ基準名として指定できません。タイプとサブタイプのペアが一意である場合、複数のキャッシュ・エントリは同じ基準名を持つことができます。単一キャッシュ・エントリに複数のバッファ・タイプが指定されている場合は、各バッファ・タイプのキャッシュ・フィールドのデータ型は同じである必要があります。

このパラメータが指定されない場合は、STRINGが使用されます。

このパラメータは、KEYrequestに設定されていない場合には無視されます。

KEY_FIELD= "field1[+field2[+field3[+¡­]]]"
(オプション)
キーを生成するために使用するバッファ内のフィールドの名前を指定します。255文字以内で、最大8つのフィールドを指定できます。

各フィールドはFMLフィールド表(FLDTBLDIRおよびFIELDTBLS環境変数か、またはFLDTBLDIR32およびFIELDTBLS32環境変数を使用)またはFMLのVIEW表(VIEWDIRおよびVIEWFILES環境変数か、またはVIEWDIR32およびVIEWFILES32環境変数を使用)内のXML要素、要素属性またはフィールド名にすることができます。この情報は、メッセージの送信時に、サービス・キャッシュに関連するフィールド値を取得するために使用されます。

XMLバッファ内のXML要素の内容または要素属性については、次の構文を使用してフィールドの名前を定義します。
root_element[/child_element][/child_element][/. . .]
[/@attribute_name]
要素名と属性名を組み合せて、最大35文字まで指定できます。Oracle Tuxedoでは、サービス・キャッシュでXMLバッファを処理する際に、指定された要素タイプの最初のオカレンスのみを認識します。XMLは、属性名に使用できる文字セットを厳密に定義しています。属性名は、単一の文字、アンダースコア、またはコロンを含む文字列で、その後に1つ以上の名前文字が続きます。要素名と属性名はいずれも、大文字/小文字が区別されます。詳細は、XMLのドキュメントを参照してください。
KEY_BUFTYPESTRINGまたはCARRAYに設定されている場合は、次の構文を使用してフィールドを定義します。
[index1, index2]
Index1はバッファ内のフィールドの開始インデックスを示し、index2はフィールドの終了インデックスを示します。このバラメータが定義されていない場合は、バッファ全体がキーと見なされます。インデックスは1から設定する必要があります。

このパラメータは、KEYBUFTYPEが設定されていないか、またはKEYrequestに設定されていない場合には無視されます。

13.11 Oracle Tuxedo分散キャッシュ(TDC)関連のMIB属性

13.11.1 T_SERVICEクラスの定義

表13‑5 Oracle Tuxedo分散キャッシュ(TDC)関連のMIB属性

属性 タイプ 権限 デフォルト
TA_CACHING string rwxr--r-- string [0..127] ""
TA_CACHING
このT_SERVICEオブジェクトは、キャッシング基準名を示します。この属性を更新すると、関連するすべてのT_SVCGRPオブジェクトに反映されます。

13.11.2 T_CACHINGクラスの定義

このT_CACHINGクラスは、アプリケーションに対するキャッシング指定の構成属性を表します。これらの属性値によって、アプリケーションのキャッシュ基準(バッファ・タイプ、フィールド名、キャッシュ定義など)を識別して特徴付けます。

表13‑6 Oracle Tuxedo分散キャッシュ(TDC)関連のMIB属性

属性 タイプ 権限 デフォルト
TA_CACHING_NAME(r)(*) string ru--r-- string[0..127] N/A
TA_CACHING_CACHENAME(r) string rw-r--r-- string[1..78] N/A
TA_CACHING_KEY string rw-r--r-- string[0..127] ""
TA_CACHING_KEY_BUFTYPE(*) string ru--r-- string[0..255] "STRING"
TA_CACHING_KEY_FIELD string rw-r--r-- string[0..255] ""
TA_STATE(k) string rw-r--r-- GET: "VAL" N/A
SET: "{NEW | INV}" N/A

ノート:

  • (k) GETキー・フィールド
  • (r) オブジェクトの作成に必要なフィールド(SET TA_STATE NEW)
  • (*) GET/SETキー、SET操作では1つ以上必要
  • u (一意性)が指定されている権限は、TA_CACHING_NAMETA_CACHING_KEY_BUFTYPEの組合せが一意である必要があることを意味します。
    TA_CACHING_NAME: string[1..127]
    キャッシュ基準名を指定します。
    TA_CACHING_CACHENAME: string[1..78]
    使用するOracle Tuxedoキャッシュの名前を指定します。
    TA_CACHING_KEY: string[0..127]
    キャッシュ・データを関連付けるキーの構成方法を指定します。
    TA_CACHING_KEY_BUFTYPE: string[0..255]
    キーを生成するために使用する、このキャッシング・エントリが有効なデータ・バッファのタイプとサブタイプのリストを指定します。このパラメータの長さは255文字までで、最大32のタイプ/サブタイプの組合せを指定できます。タイプは、STRINGCARRAYFMLFML32XMLVIEWVIEW32RECORDMBSTRINGX_C_TYPEまたはX_COMMONのいずれかにする必要があります。タイプがSTRINGCARRAYFMLFML32MBSTRINGまたはXMLの場合、サブタイプは指定できません。タイプがVIEWVIEW32RECORDX_C_TYPEおよびX_COMMONの場合はサブタイプが必要です(*は使用できません)。サブタイプ名には、セミコロン、コロン、カンマまたはアスタリスク文字を使用できません。タイプとサブタイプのペアのうち、重複するものは同じルーティング・キャッシュ基準名として指定できません。タイプとサブタイプのペアが一意の場合、複数のルーティング・キャッシュ・エントリは同じ基準名を持つことができます。単一キャッシュ・エントリに複数のバッファ・タイプが指定されている場合は、各バッファ・タイプのキャッシュ・フィールドのデータ型は同じである必要があります。
    TA_CACHING_KEY_FIELD: string[0..255]
    キーを生成するために使用するバッファ内のフィールドの名前を指定します。255文字以内で、最大8つのフィールドを指定できます。各フィールドはFMLフィールド表(FLDTBLDIRおよびFIELDTBLS環境変数か、またはFLDTBLDIR32およびFIELDTBLS32環境変数を使用)またはFMLのVIEW表(VIEWDIRおよびVIEWFILES環境変数か、またはVIEWDIR32およびVIEWFILES32環境変数を使用)内のXML要素、要素属性またはフィールド名にすることができます。この情報は、メッセージの送信時に、サービス・キャッシュに関連するフィールド値を取得するために使用されます。XMLバッファ内のXML要素の内容または要素属性については、次の構文を使用してフィールドの名前を定義します。
    root_element[/child_element][/child_element][/. . .][/@attribute_name]
    要素名と属性名を組み合せて、最大35文字まで指定できます。Oracle Tuxedoでは、サービス・キャッシュでXMLバッファを処理する際に、指定された要素タイプの最初のオカレンスのみを認識します。XMLは、属性名に使用できる文字セットを厳密に定義しています。属性名は、単一の文字、アンダースコア、またはコロンを含む文字列で、その後に1つ以上の名前文字が続きます。要素名と属性名はいずれも、大文字/小文字が区別されます。詳細は、XMLのドキュメントを参照してください。KEY_BUFTYPESTRINGまたはCARRAYに設定されている場合は、次の構文を使用してフィールドを定義します。
    [index1, index2]
    Index1はバッファ内のフィールドの開始インデックスを示し、index2はフィールドの終了インデックスを示します。このバラメータが定義されていない場合は、バッファ全体がキーと見なされます。インデックスは1から設定する必要があります。
    TA_STATE
    GET: "{VALid}"
    GET操作は、選択したT_CACHINGオブジェクトの構成情報を検索します。以下に示す状態は、GETリクエストに応えて返されるTA_STATEの意味を示します。これら以外の状態は返されません。VALid: T_CACHINGオブジェクトが定義されています。これがこのクラスの唯一の有効な状態です。
    SET: "{NEW | INValid}"
    SET操作は、選択したT_CACHINGオブジェクトの構成情報を更新します。以下に示す状態は、SETリクエストで設定されるTA_STATEの意味を示します。これ以外の状態を設定することはできません。NEW: アプリケーションのT_CACHINGオブジェクトを作成します。状態の変更はINValid状態でのみ可能です。正常に終了すると、オブジェクトの状態はVALidになります。INValid: アプリケーションのT_CACHINGオブジェクトを削除します。状態の変更は、VALid状態でのみ可能です。正常に終了すると、オブジェクトの状態はINValidになります。