目次 前 次 PDF


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

Oracle CoherenceでのOracle Tuxedo分散キャッシュ(TDC)の使用
ここでは、以下の内容について説明します。
すばやく開始するために、次のサンプルを参照してください。
この機能に関連するOracle Tuxedo ATMI APIの詳細は、「Oracle Tuxedo分散キャッシュ(TDC)関連のATMI API」を参照してください。
概要
この機能では、Oracle Coherenceと、Oracle Coherenceのクライアントとして機能するOracle Tuxedo Javaサーバーを利用して、Oracle Coherenceに備えられたキャッシュに関するあらゆる利点を活用できるようにします。
この機能では、次のキャッシュ方式がサポートされます。
Oracle CoherenceとTMJAVASVRが使用されるため、実際にTDCを使用する前に、これらの両方を構成する必要があります。
これらを構成した後、Oracle Tuxedo分散キャッシュを使用できます。
クライアントおよびサーバーを対象としたデータ・キャッシュ
データ・キャッシュを有効にすると、キャッシュにデータを格納し、他のサーバー上のクライアントでキャッシュからデータを取得できます。これにより、クライアントとサーバーの間でデータを共有する新しい方法、特に、他のサーバーとの間でデータを共有する新しい方法が提供されます。
この機能により、次のことが実現されます。
キュー、ファイルまたはデータベースを介したデータの格納および取得では、通常、大量のソースが占有され、時間が浪費されるのに対し、キャッシュを介したデータの格納と取得は、より高速かつ軽量です。
また、Oracle Tuxedoでは高パフォーマンスを実現する方法を他にも採用し、たとえば、(理論的にいくつかのゼロ・コピーの事例を提供して)ローカル・バッファ・コピーを最小化したり、主に読取りが中心の操作に集中(たとえば、読取り/書込みの比率を2:1以上にして)しています。
この機能では数多くのOracle Tuxedoバッファ・タイプがサポートされるため、Oracle Tuxedoでサポートされるデータ型に自分のデータが一致するよう管理する必要がありません。サポートされるTuxedoバッファ・タイプは、CARRAYFMLFML32MBSTRINGSTRINGVIEWVIEW32XMLRECORDX_C_TYPEおよびX_COMMONです。
この機能はユーザーにとって透過的であり、ユーザーはコードに変更を加えることなくこの機能を使用できるため、アプローチが簡単になります。Oracle Tuxedoでは、Oracle Coherence機能がJavaサーバー・コンテナにカプセル化されているため、ユーザーは単にJavaサーバーを使用して、この機能に関連するすべての機能を実装できます。
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サーバーを使用して、この機能に関連するすべての機能を実装できます。
図13‑1に、Oracle Coherenceに基づいてTDCを使用するためのOracle Tuxedo MPドメインでの一般的なデプロイメントを示します。
図13‑1 Oracle Tuxedoサービスを対象とした結果キャッシュ
この図からわかるように、Oracle Tuxedo JavaサーバーはOracle Coherenceのクライアント(メンバー)とみなされます。Oracle Tuxedo Javaサーバーを直接使用して複数のマシンからの結果をキャッシュでき、そのとき、異なるマシンに配置されたクラスタ・メンバーが相互に通信する方法を考慮する必要はありません。
Oracle Coherenceの構成
Oracle Coherenceで構成する場合と同じように、次のファイルを構成します。手順の詳細は、『Oracle Fusion Middleware Oracle Coherenceでのアプリケーションの開発』を参照してください。
前述の構成ファイルは任意のパスにデプロイできますが、このパスはJavaクラス・パス内にあり、かつcoherence.jarよりも前に存在している必要があります。たとえば、構成ファイルを${APPDIR}/configに配置した後、次のようにOracle Coherenceサーバーを起動できます。
リスト13‑1 Oracle Coherenceクラスタのデプロイメント
java -server -showversion $JAVA_OPTS -Dtangosol.coherence.mode=prod -cp $APPDIR/config: ${COHERENCE_HOME}/lib/coherence.jar com.tangosol.net.DefaultCacheServer
 
tangosol-coherence-override.xml
リスト13‑2は例です。太字のプロパティに注意してください。この例で、coherence_tuxは、マルチキャスト・ポート番号が51697でユニキャスト・ポート番号が51687であるOracle Coherenceクラスタの名前です。
リスト13‑2 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-config 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
リスト13‑3は例です。太字のプロパティに注意してください。この例では、tux_distributedという名前のOracle Coherenceキャッシュを作成します。
リスト13‑3 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>
 
Oracle Tuxedo Javaサーバーの構成
Oracle Tuxedo Javaサーバーの構成ファイルの構成
Oracle Tuxedo分散キャッシュ(TDC)に導入された、システム提供の新しいOracle Tuxedo Javaサーバーでは、Oracle Coherenceへのキャッシュ・リクエストを変換して応答を返送します。これは、Oracle Coherenceのクライアントとして機能します。
このJavaサーバーによって使用されるJavaパッケージはcom.oracle.tuxedo.tdcj.jarで、これは${TUXDIR}/udataobj/tuxj/tdcにあります。
リスト13‑4は、TDCが有効化されたOracle Tuxedo Javaサーバーの構成ファイルの例です。詳細は、バージョン2.0のJavaサーバー構成スキーマ・ファイルを参照してください。
一般的に、太字のコード行は変更しないでください。クラスcom.oracle.tuxedo.tdc.TCache4CoherenceはTDCによって使用されるメイン・クラスで、これは${TUXDIR}/udataobj/tuxj/tdc/com.oracle.tuxedo.tdcj.jarにあります。
斜体のコード行は、環境の違いに応じて変更する必要があります。ファイルが機能するには、<APPDIR>を実際のパスに置き換える必要があることに注意してください。
リスト13‑4 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>
 
Oracle Tuxedo分散キャッシュ(TDC)のプロパティ・ファイルの構成
TDCのキャッシュに関するすべてのプロパティが指定された新しいプロパティ・ファイルを追加する必要があります。Oracle Tuxedo Javaサーバーでは、これらのキャッシュの名前を使用してサービスを通知します。単一のプロパティ・ファイルで、数多くのOracle Tuxedoキャッシュを定義できます。
リスト13‑5に、プロパティ・ファイルのテンプレートを示します。このテンプレートは、$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)のプロパティ・ファイルのプロパティ」を参照してください。
リスト13‑5 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
 
クライアントおよびサーバーを対象としたデータ・キャッシュの使用
クライアントおよびサーバーを対象としてデータ・キャッシュを使用する手順
Oracle Coherenceの構成
Oracle Coherenceの構成方法は、「Oracle Coherenceの構成」を参照してください。
Oracle Coherenceクラスタの起動
実行中のOracle Coherenceクラスタがない場合は、自身のクラスタを起動し、構成ファイルのパスをJavaクラス・パス内でcoherence.jarよりも前に構成します。例については、リスト13‑1を参照してください。
Oracle Tuxedo Javaサーバーの構成
手順は、「Oracle Tuxedo Javaサーバーの構成」を参照してください。
UBBCONFIGの構成
TMJAVASVRUBBCONFIGに構成します。TMJAVASVRでは、パフォーマンス向上のためにマルチスレッド構成を使用します。可用性を高めるために、複数インスタンス構成も使用されます。
リスト13‑6 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"
...
 
キーに関連付けられているOracle TuxedoバッファのOracle Tuxedoキャッシュへの配置
Oracle Tuxedoネイティブ・クライアントまたはワークステーション・クライアントで、TDC API tpgetcacheおよびtpcacheputを使用し、キーに関連付けられているOracle TuxedoバッファをOracle Tuxedoキャッシュに配置します。tpgetcacheおよびtpcacheputの詳細は、「Oracle Tuxedo分散キャッシュ(TDC)関連のATMI API」を参照してください。
リスト13‑7 キーに関連付けられている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);
...
 
キーに基づいたOracle TuxedoキャッシュからのOracle Tuxedoバッファの取得
Oracle Tuxedoネイティブ・クライアントまたはワークステーション・クライアントで、TDC API tpgetcacheおよびtpcachegetを使用し、キーに関連付けられているOracle TuxedoバッファをOracle Tuxedoキャッシュに取得します。tpgetcacheおよびtpcachegetの詳細は、「Oracle Tuxedo分散キャッシュ(TDC)関連のATMI API」を参照してください。
リスト13‑8 キーに基づいた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);
...
 
サンプル: クライアントおよびサーバーを対象としたデータ・キャッシュの使用
${APPDIR}/home/scott/tuxedo/dom1であると仮定します。
サンプル: Oracle Coherenceの構成
tangosol-coherence-override.xml${APPDIR}/configに準備します。リスト13‑9を参照してください。
マルチキャスト・ポート番号が51697でユニキャスト・ポート番号が51687であるOracle Coherenceクラスタcoherence_tuxを構成します。
coherence-cache-config.xml${APPDIR}/configに準備します。リスト13‑10を参照してください。
Oracle Coherenceキャッシュtux_distributedを構成します。
リスト13‑9 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-config 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‑10 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>
 
サンプル: 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
サンプル: Oracle Tuxedo Javaサーバーの構成
Oracle Tuxedo Javaサーバー用のtdcsvr_coh.xmlの構成
Oracle Tuxedo Javaサーバー用のtdcsvr_coh.xml${APPDIR}/configに準備します。
リスト13‑11を参照してください。ここでは、<server-clopt>-f /home/scott/tuxedo/dom1/config/tdcsvr_coh.conf</server-clopt>プロパティによってTDCプロパティ・ファイルが指定されています。
リスト13‑11 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>
 
TDCプロパティ・ファイル用のtdcsvr_coh.confの準備
TDCプロパティ・ファイル用のtdcsvr_coh.conf${APPDIR}/configに準備します。
リスト13‑12を参照してください。ここでは、実際にOracle Coherenceキャッシュtux_distributedを使用するOracle Tuxedoキャッシュtcが構成されています。
リスト13‑12 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
 
サンプル: UBBCONFIGでのTMJAVASVRの構成
TMJAVASVRUBBCONFIGに構成します。
リスト13‑13を参照してください。ここでは、マルチスレッド構成が有効化され、TMJAVASVR構成ファイルtdcsvr_coh.xmlが設定されています。
リスト13‑13 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"
...
 
サンプル: キーに関連付けられているOracle TuxedoバッファのOracle Tuxedoキャッシュへの配置
キーmykeyに関連付けられているOracle Tuxedo STRINGバッファをOracle Tuxedoキャッシュtcに配置します。
リスト13‑14 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);
...
 
サンプル: キーに基づいたOracle TuxedoキャッシュからのOracle Tuxedoバッファの取得
キーmykeyに基づいて、Oracle TuxedoキャッシュtcからOracle Tuxedo型付きバッファを取得します。
リスト13‑15 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);
...
 
Oracle Tuxedoサービスを対象とした結果キャッシュの使用
Oracle Tuxedoサービスを対象として結果キャッシュを使用する手順
MIBを使用して、TDCに対する変更を動的に行うこともできます。
Oracle Coherenceの構成
手順は、「Oracle Coherenceの構成」を参照してください。
Oracle Coherenceクラスタの起動
実行中のOracle Coherenceクラスタがない場合は、自身のクラスタを起動し、構成ファイルのパスをJavaクラス・パス内でcoherence.jarよりも前に構成します。例については、リスト13‑1を参照してください。
Oracle Tuxedo Javaサーバーの構成
手順は、「Oracle Tuxedo Javaサーバーの構成」を参照してください。
UBBCONFIGの構成
TDCをUBBCONFIGに構成します。
SERVICESセクション
このサービスのキャッシュに使用するキャッシュ基準の名前として、CACHING=string_valueを指定します。詳細は、「Oracle Tuxedo分散キャッシュ(TDC)関連のUBBCONFIGパラメータ」を参照してください。
CACHINGセクション
このCACHINGセクションをUBBCONFIGに指定します。詳細は、「Oracle Tuxedo分散キャッシュ(TDC)関連のUBBCONFIGパラメータ」を参照してください。
リスト13‑16に、次のような例を示します
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を使用します。サービスへのリクエスト・メッセージのバッファタイプはVIEW32であり、そのサブタイプはmystruct1です。サブタイプmystruct1内のフィールドnameの値が、キーとして使用されます。
Svccache5ではOracle Tuxedoキャッシュtc1を使用します。FML32およびVIEW32: mystruct1のバッファ・タイプには、同じfield1field2が含まれ(名前とデータ型は同じである必要がありますが、異なる値を使用できます)、リクエスト・メッセージでは、field1field2の値をキーとして使用します。
リスト13‑16 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"
 
...
 
MIBを使用したTDCに対する動的な変更
MIBを使用して、TDCに対する変更を動的に行うことができます。
詳細は、「Oracle Tuxedo分散キャッシュ(TDC)関連のMIB属性」を参照してください。
サンプル: Oracle Tuxedoサービスを対象とした結果キャッシュの使用
サンプル: VIEWTABLEの構成
VIEWTABLEを構成します。リスト13‑17を参照してください。ここで、バッファ・タイプはVIEWであり、サブタイプはmystruct1です。
リスト13‑17 VIEWTABLEの構成
...
VIEW mystruct1
# type cname fbname count flag size null
string name - 1 - 31 -
string address - 1 - 255 -
char age - 1 - - -
END
...
 
サンプル: UBBCONFIGの構成
UBBCONFIGを構成します。リスト13‑18を参照してください。次のような内容になります
TMJAVASVRが構成されています
マルチスレッド構成が有効化され、構成ファイルtdcsvr_coh.xmlが設定されています。
Oracle Tuxedoサービスmysvc1では、パフォーマンスを高めるためにキャッシュ・エントリsvccache1を使用します。svccache1では、Oracle Tuxedoキャッシュtc1使用して、サービス結果をキャッシュします。レスポンスの対応するキーは、リクエスト・データの値です。
リスト13‑18 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‑19を参照してください。ここで、mysvc1のリクエストはSTRINGとして設定され、mysvc1のレスポンスはVIEW32 mystruct1です。
リスト13‑19 サーバー側での構成
...
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‑20 データ・ファイル例
...
Scott
Mike
Andy
Scott
Ben
Brian
Scott
Clark
...
 
リスト13‑21のように、クライアント設定を設定します。
初めてScottがリクエストとして処理されたときに、mysvc1が呼び出され、レスポンスが返送されて、返送されたレスポンスがOracle Tuxedoキャッシュtc1にキーScottとともにキャッシュされます。キャッシュtc1内のデータが期限切れにならないかぎり、サービスmysvc1へのScottに対するこれ以降のすべてのリクエストでは、サービス自体を呼び出すのではなく、キャッシュtc1からレスポンスを取得します。
リスト13‑21 クライアント側での設定
...
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);
}
}
...
 
実行コンテキスト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に伝播できます。
ECIDの有効化
Oracle Tuxedoには、UBBCONFIG内のOPTIONSに追加してECIDを制御できる2つのフラグがあります。
ECID (実行コンテキスト識別子)作成機能が有効になります。このケースでは、境界ノード(ネイティブ、WSおよびJoltのクライアントとドメイン・ゲートウェイを含む)がECIDを生成できます。
識別子ECID_USERLOGが設定され、ECIDがNULL文字列でない場合、ECIDはユーザー・ログに追加されます。
手順は、Oracle Coherenceのドキュメントを参照してください。
TDCに対するECIDの有効化
tangosol-coherence-override.xml${APPDIR}/configに準備します。詳細は次のとおりです。
<destination>要素を使用して、ログ・メッセージをファイルに出力する場合のパスおよびファイル名を構成します。指定されたパスは、存在している必要があります。
ecid< message-format >要素に追加して、ECIDを有効にします。
<severity-level>要素を使用して、ログ・レベルを変更できます。
リスト13-22  
<?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-config 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>
 
 
Oracle Tuxedo分散キャッシュ(TDC)関連のATMI API
 
tpgetcache(3c)
名前
tpgetcache - 構成に応じてOracle Tuxedoキャッシュ・ハンドルを取得します
形式
#include "atmi.h"
TCACHE* tpgetcache(const char* name);
説明
tpgetcache(3c)により、取得するOracle Tuxedoキャッシュの名前を示すOracle Tuxedoキャッシュ名に基づいて、Oracle Tuxedoキャッシュ・ハンドルが取得されます。この名前の長さは、78文字以下にする必要があります。tpgetcache(3c)はスレッドレベルのAPIです。戻りハンドルTCACHEは、同じスレッド内でのみ使用できます。
戻り値
正常に終了すると、tpgetcache(3c)は内部構造体であるハンドル型TCACHEを返します。
異常終了すると、tpgetcache(3c)NULLを返し、tperrnoを設定してエラーの状況を示します。呼出しが異常終了してtperrnoに特定の値が設定されたときは、中間のATMI呼出しを省略して引き続きtperrordetail(3c)を呼び出すと、エラーに関する詳細な情報が提供されます。詳細は、「tperrordetail(3c)」リファレンス・ページを参照してください。
エラー
[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キャッシュが無効であることを示します。
tpcacheput(3c)
名前
tpcacheput - Oracle Tuxedo型付きバッファをキャッシュに配置し、このバッファをキーに関連付けます
形式
#include "atmi.h"
int tpcacheput(TCACHE* tc, char* key, char* data, long len, long flags);
説明
tpcacheput(3c)により、Oracle Tuxedo型付きバッファがキャッシュに配置され、キーに関連付けられます。tctpgetcache(3c)によって返されます。dataは、tpalloc(3c)によって割り当てられたTuxedo型付きバッファを指します。lenはデータの長さです。データの型に長さを指定する必要がない場合(FMLフィールド化バッファなど)、lenは無視されます(0でもかまいません)。flagsは予約されており、0Lである必要があります。
戻り値
正常に終了すると、tpcacheput(3c)は0を返します。
異常終了すると、tpcacheput(3c)は-1を返し、tperrnoを設定してエラーの状況を示します。呼出しが異常終了してtperrnoに特定の値が設定されたときは、中間のATMI呼出しを省略して引き続きtperrordetail(3c)を呼び出すと、エラーに関する詳細な情報が提供されます。詳細は、「tperrordetail(3c)」リファレンス・ページを参照してください。
エラー
[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キャッシュが無効であることを示します。
tpcacheget(3c)
名前
tpcacheget - キーに関連付けられているOracle Tuxedo型付きバッファをキャッシュから取得します
形式
#include "atmi.h"
int tpcacheget(TCACHE* tc, char* key, char** odata, long* olen, long flags);
説明
tpcacheget(3c)により、キーに関連付けられているOracle Tuxedo型付きバッファがキャッシュから取得されます。tctpgetcache(3c)によって返されます。odataは、キーのデータが読み込まれたバッファへのポインタのアドレスです。これは、tpalloc(3c)によって最初に割り当てられたバッファを指す必要があります。olenはデータの長さを指します。flagsは予約されており、0Lである必要があります。
戻り値
正常に終了すると、tpcacheget(3c)は0を返します。
異常終了すると、tpcacheget(3c)は-1を返し、tperrnoを設定してエラーの状況を示します。呼出しが異常終了してtperrnoに特定の値が設定されたときは、中間のATMI呼出しを省略して引き続きtperrordetail(3c)を呼び出すと、エラーに関する詳細な情報が提供されます。詳細は、「tperrordetail(3c)」リファレンス・ページを参照してください。
エラー
[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
このエラー・コードは、指定されたキーに基づいてリクエストされたエントリが存在しないことを示します。
tpcacheremove(3c)
名前
tpcacheremove - パラメータ・キーに関連付けられたキャッシュ・エントリをキャッシュから削除します
形式
#include "atmi.h"
int tpcacheremove(TCACHE* tc, char* key, long flags);
説明
tpcacheremove(3c)により、パラメータ・キーに関連付けられているキャッシュ・エントリがキャッシュから削除されます。tctpgetcache(3c)によって返されます。flagsは予約されており、0Lである必要があります。
戻り値
正常に終了すると、tpcacheremove(3c)は0を返します。
異常終了すると、tpcacheremove(3c)は-1を返し、tperrnoを設定してエラーの状況を示します。呼出しが異常終了してtperrnoに特定の値が設定されたときは、中間のATMI呼出しを省略して引き続きtperrordetail(3c)を呼び出すと、エラーに関する詳細な情報が提供されます。詳細は、「tperrordetail(3c)」リファレンス・ページを参照してください。
エラー
[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キャッシュが無効であることを示します。
tpcachemremove(3c)
名前
tpcachemremove - パラメータkeyarrayに関連付けられたキャッシュ・エントリをキャッシュから削除します
形式
#include "atmi.h"
int tpcachemremove(TCACHE* tc, char* keyarray[], int size, long flags);
説明
tpcachemremove(3c)により、パラメータkeyarrayに関連付けられているキャッシュ・エントリがキャッシュから削除されます。tctpgetcache(3c)によって返されます。keyarrayは削除されるキーの配列です。sizeはkeyarrayのサイズです。flagsは予約されており、0Lである必要があります。
戻り値
正常に終了すると、tpcachemremove(3c)は0を返します。
異常終了すると、tpcachemremove(3c)は-1を返し、tperrnoを設定してエラーの状況を示します。呼出しが異常終了してtperrnoに特定の値が設定されたときは、中間のATMI呼出しを省略して引き続きtperrordetail(3c)を呼び出すと、エラーに関する詳細な情報が提供されます。詳細は、「tperrordetail(3c)」リファレンス・ページを参照してください。
エラー
[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キャッシュが無効であることを示します。
tpcacheremoveall(3c)
名前
tpcacheremoveall - すべてのキャッシュ・エントリをキャッシュから削除します
形式
#include "atmi.h"
int tpcacheremoveall(TCACHE* tc, long flags);
説明
tpcacheremoveall(3c)により、すべてのエントリがキャッシュから削除されます。tctpgetcache(3c)によって返されます。flagsは予約されており、0Lである必要があります。
戻り値
正常に終了すると、tpcacheremoveall(3c)は0を返します。
異常終了すると、tpcacheremoveall(3c)は-1を返し、tperrnoを設定してエラーの状況を示します。呼出しが異常終了してtperrnoに特定の値が設定されたときは、中間のATMI呼出しを省略して引き続きtperrordetail(3c)を呼び出すと、エラーに関する詳細な情報が提供されます。詳細は、「tperrordetail(3c)」リファレンス・ページを参照してください。
エラー
[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キャッシュが無効であることを示します。
Oracle Tuxedo分散キャッシュ(TDC)のプロパティ・ファイルのプロパティ
 
Oracle Tuxedo TDCのプロパティ・ファイルは、単純な行指向形式のファイルです。
プロパティは行単位で処理されます。行には自然行と論理行の2種類があります。
自然行は、行末記号(\\n\\rまたは\\r\\n)のセットまたはストリームの末尾で区切られた1行の文字列として定義されます。自然行は、空白の行やコメント行であるか、キーと要素のペアの全部または一部を保持する場合があります。
論理行は、キーと要素のペアの全データを保持します。バックスラッシュ文字\\を使用して行末記号シーケンスをエスケープすることで、隣接する複数の自然行にまたがる場合があります。
空白文字のみが含まれた自然行は、空白とみなされて無視されます。コメント行には、ASCII '#'または'!'がその最初の非空白文字として含まれ、キーには、最初の非空白文字から最初のエスケープされていない'=', ':'の手前までの行内のすべての文字が含まれます。キーのあとの空白はすべてスキップされます。キーに続く最初の非空白文字が'='または':'である場合、これは無視され、その後の空白文字もすべてスキップされます。行上の残りのすべての文字は、関連付けられた要素文字列の一部になります。残りの文字がない場合、その要素は空の文字列""です。
同じキーを含む複数のプロパティが存在する場合は、それらのうち最後のプロパティが使用されます。
表13‑2に、サポートされているTDCプロパティ・ファイルのプロパティを示します。
 
yes (すべてのキャッシュ・データをエンコードする必要があります)
no (デフォルト)
この値は、cache.options.encode.[cachename]によってオーバーライドできます。
yesは、Oracle Tuxedoキャッシュ[cachename]内のすべてのキャッシュ・データをエンコードする必要があることを示します。データ表現の異なるマシンにキャッシュ・ユーザーが置かれる場合は、有効にする必要があります。
このプロパティが設定されていない場合、options.encodingの値が使用されます。
Oracle Tuxedoキャッシュ[cachename]のためにCoherenceクラスタで使用されているキャッシュ名を示します。
注意:
[cachename]の長さは、78文字以下にする必要があります。
Oracle Tuxedo分散キャッシュ(TDC)関連のUBBCONFIGパラメータ
UBBCONFIG SERVICESセクション
 
string_valueは、CACHINGセクションで定義されているCACHING_CRITERIA_NAMEである必要があります。このパラメータの指定は必須であり、指定しない場合、サービス・キャッシュは有効になりません。string_valueの長さは、127文字以下にする必要があります。
UBBCONFIG CACHINGセクション
 
CACHING_CRITERIA_NAME (string_value)は、SERVICESセクション内の特定のサービス・エントリについてCACHINGパラメータに割り当てられている名前です。CACHING_CRITERIA_NAMEの長さは、127文字以下にする必要があります。
使用するOracle Tuxedoキャッシュの名前を指定します。string_valueの長さは、78文字以下にする必要があります。
キャッシュ・データを関連付けるキーの構成方法を指定します。string_valueの長さは、127文字以下にする必要があります。
このパラメータは省略可能です。指定しない場合、キーはサービス名およびリクエスト内のシリアライズされたユーザー・データの組合せとして生成されます。string_valueは組込み変数をインポートして$でキーを構成できます。変数requestは、リクエスト内のユーザー・データの一部またはすべてを使用することを示します。
たとえば、mykey_$requestは、キーの形式がmykey_servicename_[user data in request]であることを示します。
KEY_BUFTYPEおよびKEY_FIELDパラメータは、ユーザー・データのどの部分を使用するかを指定する場合に役立ちます。
タイプは、STRINGCARRAYFMLFML32XMLVIEWVIEW32RECORDMBSTRINGX_C_TYPEまたはX_COMMONのいずれかにする必要があります。タイプがSTRINGCARRAYFMLFML32MBSTRINGまたはXMLの場合、サブタイプは指定できません。タイプがVIEWVIEW32RECORDX_C_TYPEおよびX_COMMON (*は許可されません)の場合は、サブタイプが必要です。サブタイプ名には、セミコロン、コロン、カンマまたはアスタリスク文字を使用できません。タイプとサブタイプのペアのうち、重複するものは同じキャッシュ基準名として指定できません。タイプとサブタイプのペアが一意である場合、複数のキャッシュ・エントリは同じ基準名を持つことができます。単一キャッシュ・エントリに複数のバッファ・タイプが指定されている場合は、各バッファ・タイプのキャッシュ・フィールドのデータ型は同じである必要があります。
このパラメータが指定されていない場合は、STRINGが使用されます。
このパラメータは、KEYrequestに設定されていない場合には無視されます。
各フィールドはFMLフィールド表(FLDTBLDIRおよびFIELDTBLS環境変数を使用するか、FLDTBLDIR32およびFIELDTBLS32環境変数を使用)またはFMLのVIEW表(VIEWDIRおよびVIEWFILES環境変数を使用するか、VIEWDIR32およびVIEWFILES32環境変数を使用)内のXML要素、要素属性またはフィールド名にすることができます。この情報は、メッセージの送信時に、サービス・キャッシュに関連するフィールド値を取得するために使用されます。
KEY_BUFTYPESTRINGまたはCARRAYに設定されている場合は、次の構文を使用してフィールドを定義します。
Index1はバッファ内のフィールドの開始インデックスを示し、index2はフィールドの終了インデックスを示します。このバラメータが定義されていない場合は、バッファ全体がキーと見なされます。インデックスは1から設定する必要があります。
このパラメータは、KEYBUFTYPEが設定されていないか、またはKEYrequestに設定されていない場合には無視されます。
Oracle Tuxedo分散キャッシュ(TDC)関連のMIB属性
T_SERVICEクラスの定義
 
TA_CACHING
このT_SERVICEオブジェクトは、キャッシュ基準名を示します。この属性に対するあらゆる更新は、関連するすべてのT_SVCGRPオブジェクトに反映されます。
T_CACHINGクラスの定義
このT_CACHINGクラスは、アプリケーションに対するキャッシュ指定の構成属性を表します。これらの属性値によって、アプリケーションのキャッシュ基準(バッファ・タイプ、フィールド名、キャッシュ定義など)を識別して特徴付けます。
 
注意:
(k) GETキー・フィールド
(*) 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になります。

Copyright ©1994, 2017,Oracle and/or its affiliates. All rights reserved