この章の内容は次のとおりです。
Coherence for C++を使用すると、データ、データ・イベント、データ処理などのCoherenceクラスタ化サービスに、Coherenceクラスタ外部からC++アプリケーションを使用してアクセスできます。Coherence for C++は通常、Coherenceキャッシュへのアクセスを必要とするデスクトップ・アプリケーションやWebアプリケーションで使用されます。C++クライアント・ディストリビューションのインストールの詳細は、『Oracle Coherenceのインストール』を参照してください。
Coherence for C++は、Coherenceクラスタ内で稼働する Coherence*Extend クラスタ化サービス・インスタンスに、高性能なTCP/IPベースの通信レイヤーを使用して接続するネイティブC++ライブラリで構成されます。このライブラリからCoherence*Extendクラスタ化サービスにすべてのクライアント・リクエストが送信され、このサービスは実際のCoherenceクラスタ化サービス(パーティション・キャッシュ・サービス、レプリケート・キャッシュ・サービスなど)に委任することで、クライアント・リクエストに応答します。
NamedCache
インスタンスは、CacheFactory::getCache(
...)
APIコールを使用して取得されます。これが取得されると、クライアントはCoherenceクラスタに組み込まれている場合と同じようにNamedCache
にアクセスします。NamedCache
の操作はリモートのクラスタ・ノードに(TCP/IPを介して)送信されますが、この処理はクライアント・アプリケーションに対して完全に透過的に行われます。
注意:
C++クライアントは、Javaクライアントのインタフェースと概念に従います。Coherence for Javaに精通していると、Coherence C++への移行が容易であることがわかります。
この項では、Coherenceを使用するためのC++アプリケーションの設定手順を説明します。この項には次のトピックが含まれます:
アプリケーションのビルド・プロセスにCoherence for C++を統合する場合は、コンパイラとリンカーのいくつかの設定を有効にすることが重要です。これらの設定の中にはオプションのものもありますが、それらも含め、有効にすることを強くお薦めします。
*MSVC (Visual Studio)*
表7-1 MSVC(Visual Studio)向けのコンパイラの設定
設定 | ビルド・タイプ | 必須? | 説明 |
---|---|---|---|
/EHsc |
All |
はい |
C++の例外のサポートを有効化 |
/GR |
All |
はい |
C++のRTTIを有効化 |
/O2 |
Release |
いいえ |
スピードの最適化を有効化 |
/MD |
Release |
はい |
マルチスレッド化したDLLに対してリンク |
/MDd |
Debug |
はい |
マルチスレッド化したデバッグDLLに対してリンク |
g++ / SunPro
表7-2 g++向けのコンパイラの設定
設定 | ビルド・タイプ | 必須 | 説明 |
---|---|---|---|
-O3 |
Release |
いいえ |
スピードの最適化を有効化 |
-m32 / -m64 |
All |
いいえ |
コンパイラを明示的に32ビット・モードまたは64ビット・モードに設定 |
Coherenceには、Coherence APIを使用し、アプリケーションとともにコンパイルする必要のある一連のヘッダー・ファイルが付属しています。このヘッダー・ファイルは、インストール先のinclude
ディレクトリにあります。使用しているコンパイラのinclude検索パスで、このinclude
ディレクトリを指定する必要があります。
Coherence for C++には、Coherenceライブラリのリリース・バージョンが付属しています。アプリケーション・コードのデバッグ・バージョンとのリンクでも、このライブラリが適しています。このライブラリは、インストール先のlib
ディレクトリにあります。リンクの際、リンカーのライブラリ・パスでこのディレクトリを指定する必要があります。
表7-3 リリース・バージョン向けおよびデバッグ・バージョン向けのリンク・ライブラリの名前
オペレーティング・システム | ライブラリ |
---|---|
Windows |
coherence.lib |
Solaris |
libcoherence.so |
Linux |
libcoherence.so |
Apple OS X |
libcoherence.dylib |
Coherence対応アプリケーションを実行しているときは、そのアプリケーションのライブラリ検索パスからCoherence for C++の共有ライブラリを利用できる必要があります。そのためには、この共有ライブラリが含まれているディレクトリを、オペレーティング・システム固有の環境変数に追加します。各ライブラリは、インストール先のlibサブディレクトリに格納されます。
表7-4 Coherence for C++のライブラリ名と環境変数
オペレーティング・システム | 環境変数 |
---|---|
Windows |
PATH |
Solaris |
LD_LIBRARY_PATH |
Linux |
LD_LIBRARY_PATH |
Apple (Mac) OS X |
DYLD_LIBRARY_PATH |
たとえば、WindowsでPATH環境変数を設定するには、次を実行します。
c:\coherence\coherence-cpp\examples> set PATH=%PATH%;c:\coherence\coherence-cpp\lib
JavaバージョンのCoherence同様、C++バージョンでも、構成のデフォルト設定より優先するシステム・プロパティの概念がサポートされています。C++で使用するシステム・プロパティは、オペレーティング・システムの標準的な環境変数を使用して設定します。使用するプロパティの名前は、Javaバージョンと同じです。coherence.cacheconfig
システム・プロパティは、キャッシュ構成ファイルの場所を指定します。この構成ファイルの場所は、アプリケーション・コードでのプログラム処理(CacheFactory
::configure()
)でも設定できますが、この例ではその方法は採用していません。
表7-5 様々なオペレーティング・システム向けのキャッシュ構成のシステム・プロパティの値
オペレーティング・システム | システム・プロパティ |
---|---|
Windows |
coherence.cacheconfig |
Linux |
CoherenceCacheConfig |
Solaris |
CoherenceCacheConfig |
Apple (Mac) OS X |
CoherenceCacheConfig |
注意:
UNIXのbash
シェルなど、一部のオペレーティング・システム・シェルでは、.
記号を含んだ環境変数をサポートしていません。この場合はキャメル・ケースを使用して、先頭の文字と各ピリオド文字(.
)の後の1文字を大文字で記述します。つまり、coherence.cacheconfig
はCoherenceCacheConfig
とします。
たとえば、Windowsでこの構成ファイルの場所を設定するには、次のコマンドを実行します。
c:\coherence\coherence-cpp\examples> set coherence.cacheconfig=config\extend-cache-config.xml
Coherence for C++には、専用のデプロイメント構成は必要ありません。アプリケーションをCoherenceライブラリとリンクするのみです。サンプル・ビルド・スクリプトおよび構成の例に関しては、Coherence例に含まれているC++の例を参照してください。例はCoherence for Javaディストリビューションの一部として含まれています。
注意:
Microsoft Windowsにデプロイする場合は、 Visual Studio 2005 SP1 C++ランタイム・ライブラリが必要です。このサンプルをビルドするには、Visual Studio 2005 SP1以降が必要です。