この章の内容は次のとおりです。
Coherence for C++を構成して使用するには、次の手順が必要です。
統合オブジェクトの構築(C++) (『Oracle Coherenceでのアプリケーションの開発』も参照)
クライアント・アプリケーションを起動します。
Coherence for C++に用意されているAPIを使用すると、データ、データ・イベント、データ処理などのCoherenceクラスタ化サービスに、Coherenceクラスタ外部からC++アプリケーションを使用してアクセスできます。
Coherence for C++ APIは、次のもので構成されています。
一連のC++パブリック・ヘッダー・ファイル
サポートされているすべてのC++コンパイラでビルドした、各バージョンの静的ライブラリ
いくつかのサンプル
このライブラリを使用したC++アプリケーションは、Coherenceクラスタ内で稼働するCoherence*Extendのクラスタ化サービス・インスタンスに、高性能なTCP/IPベースの通信レイヤーを使用して接続できます。このライブラリからCoherence*Extendクラスタ化サービスにすべてのクライアント・リクエストが送信され、このサービスは実際のCoherenceクラスタ化サービス(パーティション・キャッシュ・サービス、レプリケート・キャッシュ・サービスなど)に委任することで、クライアント・リクエストに応答します。
「Coherence for C++クライアントAPIの使用」では、APIのキー・クラスの概要を説明します。これらのクラスの詳細は、Coherence for C++のdoc
ディレクトリにあるAPIそのものを参照してください。
Coherence for C++を採用したアプリケーションをコンパイルできるプラットフォームのリストは、サポートされているプラットフォームとオペレーティング・システムに関するトピックを参照してください。
たとえば、次に示すWindows 32ビット・プラットフォーム用build.cmd
ファイルは、Coherence for C++のデモのファイルをビルド、コンパイルおよびリンクします。
@echo off setlocal set EXAMPLE=%1% if "%EXAMPLE%"=="" ( echo You must supply the name of an example to build. goto exit ) set OPT=/c /nologo /EHsc /Zi /RTC1 /MD /GR /DWIN32 set LOPT=/NOLOGO /SUBSYSTEM:CONSOLE /INCREMENTAL:NO set INC=/I%EXAMPLE% /Icommon /I..\include set SRC=%EXAMPLE%\*.cpp common\*.cpp set OUT=%EXAMPLE%\%EXAMPLE%.exe set LIBPATH=..\lib set LIBS=%LIBPATH%\coherence.lib echo building %OUT% ... cl %OPT% %INC% %SRC% link %LOPT% %LIBS% *.obj /OUT:%OUT% del *.obj echo To run this example execute 'run %EXAMPLE%' :exit
このファイルにある各変数の意味は次のとおりです。
OPT
およびLOPT
は、コンパイラのオプションをポイントします。
INC
は、includeディレクトリにあるCoherence for C++ APIのファイルをポイントします。
SRC
は、commonディレクトリにあるC++のヘッダー・ファイルとコード・ファイルをポイントします。
OUT
は、コードのコンパイルが完了したときにコンパイラやリンカーで生成する必要のあるファイルをポイントします。
LIBPATH
は、libraryディレクトリをポイントします。
LIBS
は、Coherence for C++の共有ライブラリ・ファイルをポイントします。
このファイルは、これらの環境変数を設定した後、C++のコード・ファイルとヘッダー・ファイル、APIファイルおよびOPTファイルをコンパイルし、LOPT
、Coherence for C++の共有ライブラリ、生成されたオブジェクト・ファイルおよびOUT
ファイルをリンクします。オブジェクト・ファイルを削除することによってこの処理は終了します。
Coherence for C++ライブラリへの構成パスを設定します。この手順では、ライブラリをポイントする環境変数を設定します。環境変数名とライブラリのファイル名は、使用しているプラットフォーム環境によって異なります。プラットフォームごとの環境変数とライブラリ名のリストは、「Coherence C++クライアントの概要」を参照してください。
次のようにcoherence::net::CacheFactory
クラスを使用することによって、構成済キャッシュへの参照を名前によって取得できます。
NamedCache::Handle hCache = CacheFactory::getCache("cache_name");
すべてのNamedCache
実装のインスタンスは、不要になった時点でNamedCache::release()
メソッドをコールして明示的に解放し、インスタンスで保持されているリソースをすべて解放する必要があります。
特定のNamedCache
がアプリケーションの継続期間を通して使用される場合、リソースはそのアプリケーションがシャットダウンされたとき、または停止したときにクリーンアップされます。ただし、わずかの間だけ使用される場合は、使い終わった時点でアプリケーションからrelease()
メソッドをコールする必要があります。
C++アプリケーションでCoherence for C++ライブラリを使用するには、そのアプリケーションにCoherence for C++ライブラリをリンクし、Coherence for C++のキャッシュ構成と場所を指定する必要があります。
キャッシュ構成ファイルの場所は、サンプル・アプリケーションの項で指定した環境変数、またはプログラム上の処理で設定できます。
「ランタイム・ライブラリと検索パスの設定」の説明のとおり、coherence.cacheconfig
システム・プロパティは、キャッシュ構成ファイルの場所を指定します。Windowsでこの構成ファイルの場所を設定するには、次のコマンドを実行します。
c:\coherence_cpp\examples> set coherence.cacheconfig=config\extend-cache-config.xml
DefaultConfigurableCacheFactory::create
とCacheFactory::configure
(必要に応じてCacheFactory::loadXmlFile
ヘルパー・メソッドを使用)のいずれかを使用して、プログラム処理で構成ファイルの場所を設定できます。
DefaultConfigurableCacheFactory
クラスのcreate
メソッドで、新しいCoherence cache
ファクトリを作成します。vsFile
パラメータで、ロードするCoherenceの構成ファイルの名前と場所を指定します。次に例を示します。
static Handle coherence::net::DefaultConfigurableCacheFactory::create (String::View vsFile = String::NULL_STRING)
configure
メソッドで、CacheFactory
とローカル・メンバーを構成します。coherence-cache-config.xsd
に対応するXML要素をvXmlCache
パラメータで指定し、coherence-operational-config.xsd
に対応するXML要素をvXmlCoherence
パラメータで指定します。次に例を示します。
static void coherence::net::CacheFactory::configure (XmlElement::View vXmlCache, XmlElement::View vXmlCoherence = NULL)
loadXmlFile
メソッドで、指定されたファイルからXmlElement
を読み取ります。このメソッドでは、CacheFactory
を構成しませんが、configure
メソッドに対して指定できる構成を取得します。パラメータvsFile
で、読込み元であるファイルの名前を指定します。次に例を示します。
static XmlElement::Handle coherence::net::CacheFactory::loadXmlFile (String::View vsFile)
CacheFactory::configure
メソッドを使用して、サーバー/クラスタのキャッシュ構成ファイル(coherence-extend-config.xml
)の場所およびC++クライアントのキャッシュ構成ファイル(tangosol-operation-config.xml
)の場所を設定します。次に例を示します。
... // Configure the cache CacheFactory::configure(CacheFactory::loadXmlFile(String::create( "C:\coherence-extend-config.xml")), CacheFactory::loadXmlFile(String::create( "C:\tangosol-operation-config.xml"))); ...
オペレーション構成オーバーライド・ファイル(デフォルトではtangosol-coherence-override.xml
)では、Oracle Coherenceで使用する操作設定とランタイム設定を制御して、そのクラスタリング、通信およびデータ管理のサービスを作成、構成および維持します。Javaクライアント同様、C++クライアントでもこのファイルの使用はオプションです。オペレーション構成オーバーライド・ファイルの詳細は、『Oracle Coherenceでのアプリケーションの開発』を参照してください。
C++クライアントの場合、このファイルによって、具体的にキャッシングに関連していないCoherenceアプリケーションの一般的な操作設定を指定するかオーバーライドできます。C++クライアントの場合の主要な要素は、ロギング、Coherence製品のエディション、および特定のクラスタ・メンバーの場所とロールの割当てのためのものです。
オペレーション構成は、プログラム上の処理またはtangosol-coherence-override.xml
ファイルで構成できます。プログラム上の処理でオペレーション構成を構成するには、CacheFactory::configure
メソッド(coherence::net::CacheFactory::configure
(View vXmlCache, View vXmlCoherence)
)のvXmlCoherence
パラメータに要素が記述され、coherence-operational-config.xsd
スキーマに従ったXMLファイルを指定します。
license-config
: license-config
要素には、Coherenceのエディションと操作モードの構成を可能にするサブ要素を記述します。edition-nameサブ要素は、メンバーが使用する製品エディション(Grid Edition、Enterprise Edition、Real Time Clientなど)を指定します。この方法では、使用するエディションをメンバーごとに指定することによって、同じくクラスタの中で複数の製品エディションを使用できます。Coherence for C++クライアントの場合は、RTC(リアルタイム・クライアント)およびDC(データ・クライアント)の各値のみを認識できます。license-config
は、coherence
要素のオプションのサブ要素で、デフォルト値はRTCです。
logging-config
: logging-config
要素は、システムにメッセージのログを記録する方法の構成を可能にするサブ要素を記述します。この要素を使用して、ログ・メッセージの保存先、重大度および書式を指定できます。logging-config
は、coherence
要素の必須のサブ要素です。ロギングの詳細は、「Loggerの構成」を参照してください。
member-identity
: member-identity
要素は、クラスタ・メンバーの場所とロールの定義に役立つ詳細な識別情報を指定します。この要素は、メンバーが属するクラスタ、ラック、サイト、コンピュータ名、ロールなどを指定するために使用できます。member-identity
は、cluster-config
要素のオプションのサブ要素です。
次の例は、サンプル・ファイルtangosol-coherence.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> <site-name>extend site</site-name> <rack-name>rack 1</rack-name> <machine-name>computer 1</machine-name> </member-identity> </cluster-config> <logging-config> <destination>stderr</destination> <severity-level>5</severity-level> <message-format>(thread={thread}): {text}</message-format> <character-limit>8192</character-limit> </logging-config> <license-config> <edition-name>RTC</edition-name> <license-mode>prod</license-mode> </license-config> </coherence>
Loggerは、オペレーション構成ファイルのlogging-config
要素を使用して構成します。この要素では次の属性を指定します。これらの属性では、ログに記録されたエラーに関する詳細情報を記録できます。
destination
: Loggerで使用するLogOutput
のタイプを指定します。有効な値は次のとおりです。
stderr
(Console.Error
の場合)
stdout
(Console.Out
の場合)
ファイル・パス(メッセージをファイルに送信する必要がある場合)
severity-level
: メッセージをログに記録するために満たすか、または超過する必要のあるログ・レベルを決定します。
message-format
: ログ・メッセージの書式を決定します。
character-limit
: ロガー・デーモンがメッセージ・キューから処理する文字の最大数を決定します。この数を超過すると、キューに残っているメッセージがすべて破棄されます。
次の例は、ロギングの構成を記述したオペレーション構成を示しています。オペレーション構成の詳細は、「オペレーション構成ファイル(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"> <logging-config> <destination>stderr</destination> <severity-level>5</severity-level> <message-format>(thread={thread}): {text}</message-format> <character-limit>8192</character-limit> </logging-config> </coherence>