Oracle Tuxedo Distributed Caching (TDC)のサンプル
サンプル: クライアントとサーバーのデータ・キャッシュの使用
${APPDIR}が
/home/scott/tuxedo/dom1であるとします。
サンプル: Oracle Coherenceの構成
•
|
${APPDIR}/configに tangosol-coherence-override.xmlを準備します。 リスト4-1を参照してください。
|
マルチキャスト・ポート番号が
51697で、ユニキャスト・ポート番号が
51687であるOracle Coherenceクラスタ
coherence_tuxを構成します。
•
|
${APPDIR}/configに coherence-cache-config.xmlを準備します。 リスト4-2を参照してください。
|
Oracle Coherenceキャッシュ
tux_distributedを構成します。
リスト4-1
tangosol-coherence-override.xmlの準備
<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-name system-property="tangosol.coherence.cluster">coherence_tux</cluster-name>
<address system-property="tangosol.coherence.localhost">localhost</address>
<port system-property="tangosol.coherence.localport">51687</port>
<port system-property="tangosol.coherence.clusterport">51697</port>
リスト4-2
coherence-cache-config.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">
<cache-name>tux_distributed</cache-name>
<scheme-name>distributed</scheme-name>
</caching-scheme-mapping>
<scheme-name>distributed</scheme-name>
<service-name>DistributedCache</service-name>
<lease-granularity>member</lease-granularity>
<autostart>true</autostart>
サンプル: 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 Caching Serverモジュールの構成
Oracle Tuxedo Caching Serverモジュールのtdcsvr_coh.xmlの準備
${APPDIR}/configにOracle Tuxedo Caching Serverモジュールの
tdcsvr_coh.xmlを準備します。
リスト4-3を参照してください。
<server-clopt>-f /home/scott/tuxedo/dom1/config/tdcsvr_coh.conf</server-clopt>プロパティにTDCプロパティ・ファイルを指定しています。
リスト4-3
Oracle Tuxedo Javaサーバー構成ファイルでのOracle Tuxedo Caching Serverモジュールの構成
<?xml version="1.0" encoding="UTF-8"?>
<TJSconfig version="2.0">
<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>
<server-clopt>-f /home/scott/tuxedo/dom1/config/tdcsvr_coh.conf</server-clopt>
<classpath>${TUXDIR}/udataobj/tuxj/tdc/com.oracle.tuxedo.tjtdc.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">
注意:
|
クラス・パス ${APPDIR}/config</classpath>は、クラス・パス ${COHERENCE_HOME}/lib/coherence.jarよりも前にある必要があります。
|
TDCプロパティ・ファイルのtdcsvr_coh.confの準備
${APPDIR}/configにTDCプロパティ・ファイルの
tdcsvr_coh.confを準備します。
リスト4-4を参照してください。Oracle Tuxedoキャッシュ
tcを構成していますが、実際にはOracle Coherenceキャッシュ
tux_distributedを使用しています。
リスト4-4
Oracle Tuxedo Distributed Caching (TDC)プロパティ・ファイルの構成
#* global option encoding setting
#* 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の構成
UBBCONFIGに
TMJAVASVRを構成します。
リスト4-5を参照してください。マルチスレッド構成を有効にし、
TMJAVASVR構成ファイル
tdcsvr_coh.xmlを設定しています。
リスト4-5
UBBCONFIGでのTMJAVASVRの構成
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バッファの格納
mykeyキーに関連付けられたOracle Tuxedo
STRINGバッファをOracle Tuxedoキャッシュ
tcに格納します。
リスト4-6
Oracle Tuxedoバッファの配置
databuf = tpalloc("STRING", NULL, 256);
mycache = tpgetcache("tc");
strcpy(databuf, "scott");
tpcacheput(mycache, mykey, databuf, 0, 0L);
サンプル: キャッシュからのOracle Tuxedoバッファの取得
キー
mykeyに従ってOracle Tuxedoキャッシュ
tcからOracle Tuxedo型付きバッファを取得します。
リスト4-7
Oracle Tuxedoバッファの取得
databuf = tpalloc("STRING", NULL, 256);
mycache = tpgetcache("tc");
tpcacheget(mycache, mykey, &databuf, NULL, 0L);
サンプル: キャッシュからのOracle Tuxedoバッファの削除
Oracle Tuxedoキャッシュ
tcからキー
mykeyに関連付けられたOracle Tuxedoバッファを削除します。
リスト4-8
キーに関連付けられたOracle TuxedoバッファのOracle Tuxedoキャッシュからの削除
TCACHE* mycache = NULL; char mykey[128];
databuf = tpalloc("STRING", NULL, 256);
mycache = tpgetcache("tc"); strcpy(mykey, "myname");
tpcacheremove(mycache, mykey,0L);
サンプル: Oracle Tuxedoサービスの結果キャッシュの使用
VIEWTABLEを構成します。
リスト4‑9を参照してください。ここで、バッファ・タイプは
VIEWであり、サブタイプは
mystruct1です。
# type cname fbname count flag size null
string address - 1 - 255 -
UBBCONFIGを構成します。
リスト4-10を参照してください。次のような内容になります
マルチスレッド構成を有効にし、構成ファイル
tdcsvr_coh.xmlを設定しています。
Oracle Tuxedoサービス
mysvc1では、キャッシュ・エントリ
svccache1を使用して、パフォーマンスを高めます。
svccache1では、Oracle Tuxedoキャッシュ
tc1を使用して、サービス結果をキャッシュに格納します。レスポンスの対応するキーは、リクエスト・データの値です。
TMJAVASVR SRVGRP=JGRP1 SRVID=10
MINDISPATCHTHREADS=4 MAXDISPATCHTHREADS=4 MIN=2 MAX=2
CLOPT="-- -c /home/scott/tuxedo/dom1/config/tdcsvr_coh.xml"
サーバー側で構成します。
リスト4-11を参照してください。
mysvc1のリクエストを
STRINGとして設定し、
mysvc1のレスポンスが
VIEW32 mystruct1となっています。
int tpsvrinit(int argc, char *argv[])
rsp = tpalloc("VIEW32", "mystruct1", sizeof(struct mystruct1));
void mysvc1(TPSVCINFO *rqst)
/*rqst->data is the name, getrsp will get data from the database and store into rsp*/
ret = getrsp(rqst->data, rsp);
tpreturn(TPFAIL, 0, NULL, 0L, 0);
tpreturn(TPSUCCESS, 0, rsp, 0L, 0);
データ・ファイルが次のようになっていると想定としています。
最初に
Scottがリクエストとして取得されると、
mysvc1が呼び出されてレスポンスが返されます。レスポンスは、Oracle Tuxedoキャッシュ
tc1にキー
Scottとともに格納されます。キャッシュ
tc1内のデータが期限切れになっていないかぎり、以後
Scottからサービス
mysvc1にリクエストを送ると、サービス自体が呼び出されるのではなく、キャッシュ
tc1からレスポンスが取得されます。
int main(int argc, char *argv[])
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);