Oracle Tuxedo Distributed Caching (TDC)管理
すぐに開始する場合は、次のサンプルを参照してください。
Oracle Tuxedo Distributed Caching (TDC)ではキャッシュ・エンジンとしてOracle Coherenceを使用するため、Oracle Tuxedo Distributed Caching (TDC)を使用するにはOracle Coherenceをインストールして構成しておく必要があります。
前述の構成ファイルは任意のパスにデプロイできますが、このパスはJavaクラス・パス内にあり、かつ
coherence.jarよりも前に存在している必要があります。たとえば、構成ファイルを
${APPDIR}/configに配置し、次のようにOracle Coherenceサーバーを起動できます。
リスト2-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
リスト2-2は一例であり、プロパティを太字で示しています。この例では、
coherence_tuxはマルチキャスト・ポート番号が
51697で、ユニキャスト・ポート番号が
51687であるOracle Coherenceクラスタの名前です。
リスト2-2
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>
coherence-cache-config.xml
リスト2‑3は例です。太字のプロパティに注意してください。この例では、Oracle Coherenceキャッシュを
tux_distributedという名前で作成します。
リスト2-3
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 Tuxedo Caching Serverモジュールの構成
Oracle Tuxedo Caching ServerモジュールはTuxedo Javaサーバーで実行されるため、
UBBCONFIGに
TMJAVASVRを構成する必要があります。
TMJAVASVRでは、マルチスレッド構成を使用してパフォーマンスを高めています。また、マルチインスタンス構成を使用して可用性を高めています。
リスト2-4
TMJAVASVRのUBBCONFIG
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 Caching Serverモジュールの構成
Oracle Tuxedo Distributed Caching (TDC)では、キャッシュ・リクエストをOracle Coherenceに変換して応答を返すOracle Tuxedo Caching Serverモジュールを導入しています。Oracle Coherenceのクライアントとして機能します。
このOracle Tuxedo Caching ServerモジュールをOracle Tuxedo Javaサーバー構成ファイルに構成する必要があります。Oracle Tuxedo JavaサーバーがTDCを有効にするために使用するパッケージは、
${TUXDIR}/udataobj/tuxj/tdcにある
com.oracle.tuxedo.tjtdc.jarです。
リスト2-5は、TDCを有効にするOracle Tuxedo Javaサーバー構成ファイルの例です。この機能のために
<server-clopt>要素の
-fオプションが新しく追加されており、TDCプロパティ・ファイルのパスを指定するために使用します。他の要素およびオプションの詳細は、
『Oracle Tuxedoアプリケーションの設定』の
バージョン2.0のJavaサーバー構成スキーマ・ファイルに関する項を参照してください。
•
|
一般に、太字のコード行は変更しないでください。クラス com.oracle.tuxedo.tdc.TCache4Coherenceは、TDCで使用されるメイン・クラスで、 ${TUXDIR}/udataobj/tuxj/tdc/com.oracle.tuxedo.tjtdc.jarにあります。
|
•
|
斜体のコード行は、環境の違いに応じて変更する必要があります。ファイルが機能するようにするには、 <APPDIR>を実際のパスに置き換える必要があることに注意してください。
|
•
|
Tuxedoマシンに1つ以上のOracle Tuxedo Caching Serverモジュールを構成できます。
|
•
|
TDCはドメイン間のキャッシュをサポートしていますが、異なるTuxedoドメインのOracle Tuxedo Caching Serverモジュールが同じOracle Coherenceクラスタのメンバーである必要があります。
|
•
|
クラス・パス ${APPDIR}/config</classpath>は、クラス・パス ${COHERENCE_HOME}/lib/coherence.jarよりも前にある必要があります。
|
•
|
IPv4スタックおよびIPv6スタックが同時に検証されるプラットフォームでJAVA8を使用するときは、次のようにIPv4スタックを明示的に指定する必要があります。
|
<jvm-options>-Djava.net.preferIPv4Stack=true</jvm-options>
リスト2-5
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 <APPDIR>/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">
Oracle Tuxedo Distributed Caching (TDC)プロパティ・ファイルの構成
リスト2‑6に、プロパティ・ファイルのテンプレートを示します。このテンプレートでは、
tc1と
tc2という2つのOracle Tuxedoキャッシュ名を構成しています。
tc1はOracle Coherenceキャッシュ
tux_distributedを使用し、
tc2はOracle Coherenceキャッシュ
tux2_distributedを使用します。
このテンプレートは、
$TUXDIR/udataobj/tuxj/tdc/tdcsvr_coh.conf.templateにあります。このプロパティ・ファイルの名前および場所を変更できます。その場合、Oracle Tuxedo Javaサーバー構成ファイルの
<server-clopt> -fオプションに対して同じ変更を加えてください(例は、
リスト2-5を参照してください)。
リスト2-6
TDCプロパティ・ファイル・テンプレート
#**********global level settings**********
#* Encoding setting, optional, defaults to "no"
#* It can be overridden by the cache level setting.
#* Logging setting, optional, defaults to "no"
#* There is no cache level logging setting.
#**********cache level settings**********
#* Configurations for Tuxedo cache "tc"
#* Encoding setting, optional, defaults to "no"
#cache.options.encoding.tc=yes
#* Cache used in Oracle Coherence, required
coh.cache.name.tc=tux_distributed
#* Configurations for Tuxedo cache "tc2"
#* Encoding setting, optional, defaults to "no"
#cache.options.encoding.tc2=yes
#* Cache used in Oracle Coherence, required
coh.cache.name.tc2=tux_distributed
Oracle Tuxedo Distributed Caching (TDC)プロパティ・ファイルのプロパティ
Oracle Tuxedo TDCプロパティ・ファイルは、簡単な行指向形式のファイルです。
Propertiesは行単位で処理されます。行には自然行と論理行の2種類があります。
自然行は、行末記号(
\\n、
\\r、または
\\r\\n)のセットまたはストリームの末尾で区切られた1行の文字列として定義されます。自然行は、空白の行やコメント行であるか、キーと要素のペアの全部または一部を保持する場合があります。
論理行は、キーと要素のペアの全データを保持します。バックスラッシュ文字
\\を使用して行末記号シーケンスをエスケープすることで、隣接する複数の自然行にまたがる場合があります。
空白文字だけを含む自然行は、空白と見なされて無視されます。コメント行には、ASCII
'#'または
'!'が最初の非空白文字として含まれます。キーには、行内の最初の非空白文字から最初のエスケープされていない
'=', ':'の手前までの文字がすべて含まれます。キーのあとの空白はすべてスキップされます。キーに続く最初の非空白文字が
'='または
':'である場合、これは無視され、その後の空白文字もすべてスキップされます。行上の残りのすべての文字は、関連付けられた要素文字列の一部になります。残りの文字がない場合、その要素は空の文字列
""です。
同じキーのプロパティが複数ある場合は、最後のプロパティが使用されます。
表2‑1に、サポートされているTDCプロパティ・ファイルのプロパティを示します。
表2-1
Oracle Tuxedo Distributed Caching (TDC)のプロパティ・ファイルのプロパティ
|
|
|
•
|
yes (すべてのキャッシュ・データをエンコードする必要があります)
|
この値は、 cache.options.encoding.[cachename]で上書きできます。
|
cache.options.encoding.[cachename]
|
yesは、Oracle Tuxedoキャッシュ [cachename]内のすべてのキャッシュ・データをエンコードする必要があることを示します。データ表現が異なるマシンにキャッシュ・ユーザーを配置するときに、有効にする必要があります。
このプロパティを設定しないと、 options.encoding値が使用されます。
|
coh.cache.name.[cachename]
|
Oracle Tuxedoキャッシュ [cachename]のためにCoherenceクラスタで使用されているキャッシュ名を示します。
これは、Oracle CoherenceをTDCのために使用する場合に、TDCプロパティ・ファイルで必要になります。
|
|
yesの値は、すべてのキャッシュ・リクエストがCoherenceログに記録されることを示します。デフォルトでは noに設定されます。
|
•
|
[cachename]の長さは、78文字以下である必要があります。名前が [cachename]であるサービスが、Oracle Tuxedo Javaサーバーによって通知されます。
|
•
|
options.logging=yesを設定すると、ログ・レベルが6になります(このデフォルト値を変更することはできません)。このため、ロギング情報を出力するには、Oracle Tuxedo Coherence構成ファイルで要素 <severity-level>を6以上に指定する必要があります。
|
Oracle Tuxedo Distributed Caching (TDC)プロパティ・ファイルのプロパティを動的に構成するためのTMIBの使用
TMIBを使用して、TDCプロパティ・ファイルのプロパティを動的に構成できます。
表2-2
Oracle Tuxedo Distributed Caching (TDC)プロパティ・ファイルのプロパティを構成するためのTMIBの使用
|
|
|
|
cache.options.encoding.[cachename]
|
|
coh.cache.name.[cachename]
|
|
|
|
Oracle Tuxedo Javaサーバーでは、この機能に使用するために
T_TJSという新規クラスを導入しています。これを使用すると、TDCプロパティを変更、追加および削除できます。なお、この動的構成は、Coherence内のキャッシュ・データには影響を与えません。キャッシュ・マッピングを削除しても、キャッシュ・データはクリアされません。
動的構成後、元のプロパティ・ファイル内のコメントは削除され、新規プロパティ・ファイルではプロパティの元のシーケンスを保持できません。元のプロパティ・ファイルは、拡張子名
.bakでバックアップされます。
リスト2-7
TMIBによってTDCプロパティを構成するためのインタフェース
TA_CLASS T_TJS /*must be T_TJS*/
TA_OPERATION SET /*must be SET*/
TA_SRVGRP xxxx /*TMJAVASVR Group Identifier*/
TA_SRVID xxxx /*the server id of TMJAVASVR which support TDC*/
TA_TJS_CLASS T_TJSAPPCMD /* must be T_TJSAPPCMD */
TA_COMMAND TA_TDC_UPDATECFG /*must be TA_TDC_UPDATECFG */
TA_TDC_PROPERTY xxxx /* the TDC property*/
TA_TDC_PRO_UPDATEMODE xxxx /* the operation on TDC property*/
ここでは、
TA_TDC_PROPERTY属性を使用してプロパティを設定し、
TA_TDC_PRO_UPDATEMODE属性を使用して
delete、
newまたは
modifyとして設定できる操作モードを示します。
TA_TDC_PROPERTYの値は、操作が
newまたは
modifyのときにはTDCプロパティのキーと値のペアとなり、操作が
deleteのときにはTDCプロパティのキーとなります。なお、キーと値のペアのセパレータには
=のみを使用できます。
TDCプロパティ・ファイルにプロパティを追加する例(実行コマンド: "
ud32 -C tpsysadm<setProperty")は、
リスト2-8を参照してください。TDCプロパティ・ファイルからプロパティを削除する例は、
リスト2-9を参照してください。
リスト2-8
ud32入力ファイルの編集: setproperty
TA_COMMAND TA_TDC_UPDATECFG
TA_TDC_PROPERTY coh.cache.name.cache1=tux_distributed
TA_TDC_PROPERTY cache.options.encoding.cache1=yes
TA_TDC_PROPERTY options.encoding=yes
TA_TDC_PROPERTY options.logging=yes
TA_TDC_PRO_UPDATEMODE new
リスト2-9
TDCプロパティ・ファイルからのプロパティの削除
TA_COMMAND TA_TDC_UPDATECFG
TA_TDC_PROPERTY coh.cache.name.cache1
TA_TDC_PROPERTY cache.options.encoding.cache1
TA_TDC_PROPERTY options.encoding
TA_TDC_PROPERTY options.logging
TA_TDC_PRO_UPDATEMODE delete
クライアントおよびサーバーのデータ・キャッシュを構成するには、次の手順に従います。
実行中のOracle Coherenceクラスタがない場合は、自身のクラスタを起動し、構成ファイルのパスをJavaクラス・パスに
coherence.jarよりも前に構成します。例については、
リスト2‑1を参照してください。
Oracle Tuxedo Caching Serverモジュールの構成
Oracle Tuxedoサービスの結果キャッシュの構成
Oracle Tuxedoサービスの結果キャッシュを構成するには、次の手順に従います。
また、MIBを使用してTDCに動的に変更を加えることもできます。
実行中のOracle Coherenceクラスタがない場合は、自身のクラスタを起動し、構成ファイルのパスをJavaクラス・パスに
coherence.jarよりも前に構成します。例については、
リスト2‑1を参照してください。
Oracle Tuxedo Caching Serverモジュールの構成
このサービスのキャッシュに使用するキャッシュ基準の名前として
CACHING=string_valueを指定します。
UBBCONFIGでこの
CACHINGセクションを指定します。
•
|
CACHING_CRITERIA_NAME required_parameters (必須)
|
•
|
CACHENAME=string_value (必須)
|
•
|
KEY_BUFTYPE="type1[:subtype1[,subtype2 . . . ]][;type2[:subtype3[, . . . ]]] . . ."(必須)
|
•
|
KEY="[mykey1][_$request_][mykey2]" string_value (オプション)
|
•
|
KEY_FIELD= "field1[+field2[+field3[+¡]]]" (オプション)
|
•
|
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を使用します。サービスへのリクエスト・メッセージのバッファ・タイプは、サブタイプが mystruct1の VIEW32です。サブタイプ mystruct1のフィールド nameの値をキーとして使用します。
|
•
|
Svccache5は、Oracle Tuxedoキャッシュ tc1を使用します。 FML32および VIEW32: mystruct1のバッファ・タイプには、同じ field1および field2があります(名前とデータ型は同じである必要がありますが、値は違ってもかまいません)。リクエスト・メッセージでは、 field1および field2の値をキーとして使用します。
|
リスト2-10
UBBCONFIG CACHINGセクションの構成
KEY_BUFTYPE="VIEW32:mystruct1"
KEY_BUFTYPE="FML32;VIEW32:mystruct1"
KEY_FIELD="field1+field2"
TDC結果キャッシュに動的に変更を加えるためのMIBの使用
Coherenceでサポートされている<expiry-delay>サブ要素の使用
Oracle Coherenceでは、<expiry-delay>というサブ要素を<local-scheme>に追加して、特定の期間更新されなかった場合にはキャッシュを自動的に期限切れにし、さらに期限切れになったキャッシュでエントリが無効になったときにはそれをキャッシュから削除できます。詳細情報を参照してください。
リスト2-11
エントリの期限切れがあるキャッシュの構成例
<scheme-name>local</scheme-name>
<expiry-delay>10ms</expiry-delay>
TDCでサポートされているキャッシュ・データの自動削除
Oracle Tuxedoサービスの結果キャッシュの機能として、Oracle Tuxedoではサービスに関連するすべてのキャッシュ・データを2つの方法で削除できるようになっています。
Oracle Tuxedoアプリケーション・サーバーが停止すると、Oracle Tuxedoはサーバー内のすべてのサービスを削除します。あるサービスがOracle Tuxedoアプリケーション・システムのどこにも存在しない場合、Oracle Tuxedoはそのサービスのキャッシュ・エントリに基づくすべてのキャッシュ・データを削除します。現在、Oracle Tuxedoではこの機能をトリガーするコマンドとして"
tmshutdown -s servername"のみをサポートしています。
Oracle Tuxedo Caching Serverモジュールが停止すると、Oracle TuxedoはTDCプロパティ・ファイルに構成されているすべてのキャッシュからすべてのサービス・キャッシュ・データを削除しようとし、さらにキャッシュ内でキーの接頭辞が
tdc_svc_ (内部キャッシュ・キーの接頭辞)であるすべてのエントリを削除しようとします。
Oracle Coherenceへの実行コンテキストID (ECID)の伝播の構成
Oracle Coherenceのログでは、実行コンテキストID (ECID)を使用できます。このグローバルに一意のIDをOracleコンポーネント間のリクエストにアタッチできます。ECIDを使用すると、複数のリクエストが並行して処理される場合に同じリクエストに関する複数のログ・メッセージを追跡できます。Oracle Coherence操作を呼び出す前にすでにアクティブ化されたECIDを持っている場合にのみ、Oracle CoherenceログにECIDが含まれます。ECIDは、別のコンポーネントから渡される場合や、クライアント・コードで取得される場合があります。
Oracle Tuxedo TDCは、Oracle Coherenceのクライアントとして機能するため、ECIDをOracle Coherenceに伝播できます。
Oracle Tuxedoには、ECIDを制御するためにUBBCONFIGのOPTIONSに追加できるフラグが2つあります。
ECID (実行コンテキスト識別子)作成機能が有効になります。このケースでは、境界ノード(ネイティブ、WSおよびJoltのクライアントとドメイン・ゲートウェイを含む)がECIDを生成できます。
識別子ECID_USERLOGが設定され、ECIDがNULL文字列の場合、ECIDはユーザー・ログに追加されます。
•
|
Oracle CoherenceでのECIDの有効化
|
${APPDIR}/configに
tangosol-coherence-override.xmlを準備します。具体的には次のようになります。
•
|
<destination>要素を使用して、ログ・メッセージをファイルに出力するようにパスおよびファイル名を構成します。指定されたパスは、存在している必要があります。
|
•
|
< message-format >要素にecidを追加してECIDを有効にします。
|
•
|
<severity-level>要素を使用して、ログ・レベルを変更できます。
|
<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>
<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} <{level}>(thread={thread},member={member}):{text}</message-format>