ヘッダーをスキップ
Oracle® Coherenceクライアント・ガイド
リリース3.6.1
B61370-02
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

17 C++クライアントのサンプル・アプリケーション

ここでの指示とコマンドラインの例は、次のように、Java CoherenceのアーカイブとC++ Coherenceのアーカイブをファイル・システムに抽出済であると想定しています。

Coherence for C++のインストールの詳細は、「C++クライアント・ディストリビューションのインストール」を参照してください。


注意:

Coherence C++には、Javaインストールに対するローカル依存性がありません。この項では、サンプル・アプリケーションを実行するマシンに、JavaバージョンとC++バージョンのCoherenceが両方ともインストールされていると想定していますが、Javaバージョンをインストールするかどうかはオプションです。Javaバージョンをインストールしていない場合は、リモート・マシンでキャッシュ・サーバーを実行している必要があります。また、Javaのconsoleサンプルは利用できません。

Coherence for C++では、インストールした製品のcoherence-cpp/examplesディレクトリに、次のサンプル・アプリケーションが用意されています。

サンプル・アプリケーションをビルドおよび実行するための前提条件

サンプルを実行するための要件は次のとおりです。

Coherenceのプロキシ・サービスとキャッシュ・サーバーの起動

Coherence for C++アプリケーションは、プロキシ・サーバーを使用してCoherenceクラスタと通信します。クラスタに対してサンプルを実行するには、プロキシを起動しておく必要があります。

プロキシ・サービスとキャッシュ・サーバーを起動するサンプル・コマンドを次に示します。configディレクトリにあるextend-server-config.xmlなど、サーバーのキャッシュ構成ファイルで、このプロキシを指定しておく必要があります。たとえば、Windowsでは次のコマンドを実行します。

例17-1 プロキシ・サービスとキャッシュ・サーバーを起動するサンプル・コマンド

c:\coherence\lib> java -Dtangosol.coherence.cacheconfig=c:\coherence\coherence-cpp\examples\config\extend-server-config.xml -cp coherence.jar "com.tangosol.net.DefaultCacheServer"

注意:

contactsサンプルの場合は、examples/java/ContactCacheディレクトリにある別のPOF構成とカスタム・クラスも使用する必要があります。

サンプル・アプリケーションのビルド

Coherence for C++には、プラットフォーム固有のビルド・スクリプトが付属しています。各スクリプトはコマンドライン・パラメータを1つとりますが、このパラメータにはビルドするサンプルの名前を指定します。たとえば、Windowsでconsoleサンプルをビルドするには、新しいコマンド・プロンプト・ウィンドウを開いて次のコマンドを実行します。

c:\coherence\coherence-cpp\examples> build hellogrid

次に示す専用のexamplesサブディレクトリに、サンプルの実行可能ファイルが作成されます。

c:\coherence\coherence-cpp\examples\hellogrid\hellogrid.exe

独自に作成した簡単なアプリケーションでこのスクリプトを使用するには、examplesディレクトリの下に新しいディレクトリを作成し、そこにアプリケーションのソース・ファイルを置きます。build your_dir_nameを実行してアプリケーションをコンパイルします。

サンプル・アプリケーションの起動

構成を指定し、プロキシ・サービスとキャッシュ・サーバーを起動した後は、クライアントを起動できます。examplesディレクトリには、ビルドしたサンプルの実行に使用できるrunスクリプトがあります。このスクリプトは、基本的な作業として環境変数とライブラリ検索パスの設定を実行します。このスクリプトを使用するには、実行するサンプルの名前を1番目のパラメータとしてrunスクリプトを実行します。

たとえば、Windowsでhellogridサンプルを実行するには、examplesディレクトリから次のコマンドを実行します。

c:\coherence\coherence-cpp\examples> run hellogrid

アプリケーションに対するCoherenceのロギングは、examplesディレクトリにあるhellogrid.logに記録されます。

hellogridサンプルの実行

hellogridサンプルでは、キャッシュに様々なタイプのデータを入力し、そのデータの読取り、キャッシュの内容の出力、キャッシュの問合せなどを実行してキャッシュの機能を試します。次の手順に従い、hellogridサンプルをビルドして実行します。

C:\coherence\coherence-cpp\examples>run hellogrid
retrieved cache "dist-hello" containing 0 entries
        put: hello = grid
        get: hello = grid
        get: dummy = NULL
entire cache contents:
        34567 = 8.9
        23456 = 7.8
        12345 = 6.7
        hello = grid
updated cache contents:
        34567 = 8.9
        23456 = 7.8
        12345 = 6.7
        45678 = 9.1
filtered cache contents by coherence::util::filter::GreaterFilter: (IdentityExtr
actor, 7)
        34567 = 8.9
        23456 = 7.8
        45678 = 9.1
minimum: 6.7
increment results by 6.7
        34567 = 15.6
        23456 = 14.5
        12345 = 13.4
        45678 = 15.8
 
C:\coherence\coherence-cpp\examples>

このサンプルを実行した後は、そのコードを調べることをお薦めします。各サンプルには、examplesの下に対応するディレクトリがあります。ここには、サンプル固有のソースが含まれています。また、すべてのサンプルで使用されるソースを含む、commonディレクトリもあります。

consoleサンプルの実行

consoleサンプルでは、C++コンソールを使用してデータをキャッシュに入力してから、Javaコンソールを使用してそのデータを読み取ることができます。(run consoleを実行して)consoleサンプルを起動すると、広く使用されているMap(?):プロンプトがコンソールに表示されます。C++コンソールでは、Javaで使用できるコマンドのサブセットがサポートされています。helpと入力すると、そのコマンドのリストが表示されます。対話処理の相手とすることができるキャッシュは、extend-cache-config.xml構成ファイルで定義しますが、基本的に配慮が必要な点は、local-*キャッシュがローカルのみであること、dist-*キャッシュがリモートであり、PIF/POFを使用すること、およびnear-*キャッシュが一貫性を持ったインプロセスのニア・キャッシュにデータをプルすることのみです。

  1. cache dist-helloと入力してキャッシュに接続します。次の例に示すコマンドを入力し、キャッシュにデータを入力して表示します。

    Map(?): cache dist-hello
    
    Map(dist-hello): put hello world
    NULL
    
    Map(dist-hello): get hello
    world
    
    Map(dist-hello): size
    1
    
    Map(dist-hello): put from C++
    NULL
    
    Map(dist-hello): list
    from = C++
    hello = world
    
    Map(dist-hello):
    
    
  2. C++コンソールと対話するJavaコンソールを起動します。この起動コマンドでは、C++クライアントで使用しているキャッシュ構成を、Javaクライアント・アプリケーションでも同様に指定する必要があります。たとえば、Windowsでは新しいコマンド・プロンプト・ウィンドウを開き、次のコマンドを実行します (ここでは見やすくするために、このコマンドを2行に分けて示しています)。

    c:\coherence\lib> java -Dtangosol.coherence.cacheconfig=
      c:\coherence\coherence-cpp\examples\config\extend-cache-config.xml -jar coherence.jar
    
    
  3. C++コンソールの場合と同じコンソール構文を使用して、キャッシュにアクセスします。たとえば、Windowsでは新しいコマンド・プロンプト・ウィンドウを開き、次のコマンドを実行します。

    Map(?): cache dist-hello
    2008-04-25 09:01:02.207 Oracle Coherence GE 3.4/396 Alpha <D5> (thread=DistributedCache, member=3): Service
    DistributedCache joined the cluster with senior service member 1
    2008-04-25 09:01:02.239 Oracle Coherence GE 3.4/396 Alpha <D5> (thread=DistributedCache, member=3): Service
    DistributedCache: received ServiceConfigSync containing 259 entries
    <distributed-scheme>
      <scheme-name>example-distributed</scheme-name>
      <service-name>DistributedCache</service-name>
      <lease-granularity>member</lease-granularity>
      <backing-map-scheme>
        <local-scheme//>
      </backing-map-scheme>
      <autostart>true</autostart></distributed-scheme>
    
    2008-04-25 09:01:02.264 Oracle Coherence GE 3.4/396 Alpha <D4>
    (thread=DistributedCache, member=3): Asking member 1 for 128 out of 128 primary
     partitions 
    Map(dist-hello): list
    from = C++
    hello = world
    
    Map(dist-hello):
    
  4. このサンプルを実行した後は、そのコードを調べることをお薦めします。各サンプルには、examplesの下に対応するディレクトリがあります。ここには、サンプル固有のソースが含まれています。また、すべてのサンプルで使用されるソースを含む、commonディレクトリもあります。

contactsサンプルの実行

contactsサンプルでは、名前とアドレスをキャッシュに入力してから、そのエントリを問い合せて表示できます。このサンプルでは次のコマンドを実行できます。

次の手順に従い、contactsサンプルをビルドして実行します。

C:\coherence\coherence-cpp\examples>build contacts
building contacts\contacts.exe ...
contacts.cpp
ContactInfo.cpp
ContactInfoSerializer.cpp
Generating Code...
C:\coherence\coherence-cpp\examples>
  1. contactsサンプルを実行します。ウィンドウに、次のような出力が表示されます。

    C:\coherence\coherence-cpp\examples>run contacts
    contacts> help
    commands are:
    bye
    create
    find <street | city | state | zip | all>
    contacts>
    
  2. helpcreatefindbyeの各コマンドを入力して、サンプルの機能を試します。

    contacts> help
    commands are:
    bye
    create
    find <street | city | state | zip | all>
    
    contacts> create
    Name: Tom
    Street: Oracle Parkway
    City: Redwood Shores
    State: California
    Zip: 94065
    storing: ContactInfo(Name=Tom, Street=Oracle Parkway, City=Redwood Shores, State
    =California, Zip=94065)
    
    contacts> find
    Name: Tom
    ContactInfo(Name=Tom, Street=Oracle Parkway, City=Redwood Shores, State=California, Zip=94065)
    
    contacts> bye
    
    C:\coherence\coherence-cpp\examples>
    
  3. このサンプルを実行した後は、そのコードを調べることをお薦めします。各サンプルには、examplesの下に対応するディレクトリがあります。ここには、サンプル固有のソースが含まれています。また、すべてのサンプルで使用されるソースを含む、commonディレクトリもあります。