プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle Coherenceリモート・クライアントの開発
12c (12.2.1.3.0)
E90212-01
目次へ移動
目次

前
次

8 C++クライアントの構成と使用

Coherence C++クライアントの使用に必要な主要なステップを理解します。

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

8.1 一般的な手順

Coherence C++クライアントの作成および使用のための基本的な一連の手順をたどることができます。

一般的な手順は次のとおりです。

  1. C++アプリケーションの実装

  2. アプリケーションのコンパイルとリンク

  3. パスの構成

  4. 拡張プロキシ・サービスの定義

  5. Extendクライアントで使用するキャッシュの定義

  6. リモート・キャッシュの定義

  7. 統合オブジェクトの構築(C++)

  8. プロキシ・サーバーの起動

  9. クライアント・アプリケーションを起動します。

8.2 C++アプリケーションの実装

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の使用」を参照してください。

8.3 アプリケーションのコンパイルとリンク

C++アプリケーションのコンパイル方法を示すサンプルのWindowsビルド・ファイルを確認します。

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ファイルをリンクします。オブジェクト・ファイルを削除することによってこの処理は終了します。

8.4 パスの構成

Coherence for C++ライブラリへの構成パスを設定します。この手順では、ライブラリをポイントする環境変数を設定します。環境変数名とライブラリのファイル名は、使用しているプラットフォーム環境によって異なります。「Coherence C++クライアントの概要」を参照してください。

8.5 C++によるキャッシュ参照の取得

coherence::net::CacheFactoryクラスを使用して、構成されたキャッシュへの参照を名前で取得できます。

次に例を示します。

NamedCache::Handle hCache = CacheFactory::getCache("cache_name");

8.6 キャッシュに関連付けられたリソースのクリーンアップ

NamedCache実装は、それが不要になったときには、NamedCache::release()メソッドをコールして明示的に解放する必要があります。

特定のNamedCacheがアプリケーションの継続期間を通して使用される場合、リソースはそのアプリケーションがシャットダウンされたとき、または停止したときにクリーンアップされます。ただし、わずかの間だけ使用される場合は、使い終わった時点でアプリケーションからrelease()メソッドをコールする必要があります。

8.7 Coherence for C++クライアント・ライブラリの構成と使用

アプリケーションでCoherence for C++ライブラリを使用するには、ライブラリをアプリケーションにリンクし、キャッシュ構成ファイルを指定します。キャッシュ構成ファイルの場所は、環境変数またはプログラムで設定できます。

この項には次のトピックが含まれます:

8.7.1 環境変数による構成ファイルの場所の設定

coherence.cacheconfigシステム・プロパティは、キャッシュ構成ファイルの場所を指定します。「ランタイム・ライブラリと検索パスの設定」を参照してください。

Windowsでこの構成ファイルの場所を設定するには、次のコマンドを実行します。

c:\coherence_cpp\examples> set coherence.cacheconfig=config\extend-cache-config.xml

8.7.2 プログラム処理による構成ファイルの場所の設定

DefaultConfigurableCacheFactory::createCacheFactory::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")));
...

8.8 オペレーション構成ファイル(tangosol-coherence-override.xml)

オペレーション構成オーバーライド・ファイル(デフォルトではtangosol-coherence-override.xml)では、Oracle Coherenceで使用する操作設定とランタイム設定を制御して、そのクラスタリング、通信およびデータ管理のサービスを作成、構成および維持します。『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要素の必須のサブ要素です。

  • 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>

8.9 Loggerの構成

CoherenceのLoggerは、オペレーション構成ファイルのlogging-config要素を使用して構成します。「オペレーション構成ファイル(tangosol-coherence-override.xml)」を参照してください。この要素では次の属性を指定します。これらの属性では、ログに記録されたエラーに関する詳細情報を記録できます。
  • destination: Loggerで使用するLogOutputのタイプを指定します。有効な値は次のとおりです。

    • Console.Errorにはstderr

    • Console.Outにはstdout

    • ファイル・パス(メッセージをファイルに送信する必要がある場合)

  • severity-level: メッセージをログに記録するために満たすか、または超過する必要のあるログ・レベルを決定します。

  • message-format: ログ・メッセージの書式を決定します。

  • character-limit: ロガー・デーモンがメッセージ・キューから処理する文字の最大数を決定します。この数を超過すると、キューに残っているメッセージがすべて破棄されます。

次の例は、ロギングの構成を記述したオペレーション構成を示しています。

<?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>