ヘッダーをスキップ
Oracle® Coherenceチュートリアル
リリース3.7.1
B65030-01
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次
索引へ移動
索引

前
 
次
 

1 Coherenceのインストールと構成

この章では、Oracle Coherenceリリース3.7.1(Coherence)を実行するための環境をインストールおよび設定する方法について説明します。


注意:

このチュートリアルでは、Oracle Enterprise Pack for Eclipse(OEPE)11gR1(11.1.1.7)とともにEclipse Helios 3.6.2リリースを使用します。EclipseおよびOEPE for Coherenceベースのプロジェクトの構成については、第2章「EclipseおよびOEPEのインストールとCoherenceと併用するための構成」を参照してください。

このチュートリアルの例は、Coherenceの3.7リリースで実行されたものです。Coherenceのリリース3.7.1でこれらの例を実行しても、同じ結果になります。


oracleユーザーとしてソフトウェアをインストールし、システム環境変数を設定するための権限が必要なほか、環境変数の設定、ディレクトリの作成やディレクトリ間の移動など、端末ウィンドウの使用方法を理解している必要があります。Java SE(JDK)バージョン1.6以降の作業用インストールが必要です。また、Microsoft Windowsオペレーティング・システム(XP、Vista、2000、2003、2008のいずれか)を実行している必要があります。

この章では次の項について説明します。

1.1 Coherenceのインストール

Coherenceをダウンロードしてインストールするには:

  1. Coherenceをデスクトップにダウンロードします。

    Coherence(Java Edition)は、1つのzipファイル(通常はcoherence-<バージョン>.zip)として提供されています。次のURLからCoherenceをダウンロードできます。

    http://www.oracle.com/technology/products/coherence/index.html

  2. zipファイルの内容をC:\oracle\productというフォルダに抽出します。

    zipファイルのcoherenceフォルダに次のサブフォルダが含まれています。

    • bin: コマンド・スクリプトが格納されています。

    • doc: 製品ドキュメントが格納されています。

    • lib: 必要なライブラリ・ファイルが格納されています。

1.2 Coherenceインストールのテスト

この演習では、現在のCoherenceインストールでJavaプロセスをクラスタ化できるかどうかをテストします。これにより、Coherenceに付属しているCoherenceベースのアプリケーションが予期したとおりに稼働することを確認できます。1 つのマシンでクラスタ化できない場合は、ネットワークとファイアウォールの設定を再構成する必要があります。

この演習を実行するには、Oracle Coherence(Java Edition)リリース3.7.1がインストールされている必要があります。詳細は、「Coherenceのインストール」を参照してください。

Coherenceでは、クラスタ化されたプロセス間の通信を可能するために、様々なネットワーク・アドレスおよびポートを使用します。他のアプリケーションで使用されているため、またはファイアウォールが原因でこれらのアドレスやポートを使用できない場合、Coherenceは信頼性がなくなったり、クラスタ化に失敗したり、まったく動作しなかったりすることがあります。Coherenceではデフォルトで、表1-1に記載されているネットワーク・アドレスおよびポートが使用可能であると想定しています。

表1-1 Coherenceで使用されるネットワーク・アドレスおよびポート

アドレス/ポート/タイプ 目的

224.version/version/マルチキャスト

クラスタ・メンバーの検出およびブロードキャスト。変数versionは、Coherenceのリリース・バージョンを表します。たとえば、3.7.0.0リリースのマルチキャスト・アドレスは224.3.7.0です。ポート番号にもリリース・バージョンが反映されます。たとえば、3.7.0.0リリースの場合、ポート番号は37000です。アドレスをこのように設計することによって、デフォルトで、異なるバージョンのCoherenceが相互にクラスタ化されることがなくなります。

localhost/8088+/ユニキャスト

クラスタ・メンバー間のプロセス間通信(localhostはローカルIPアドレスであり、ループバック・アドレスではありません)。


Coherenceには単純なコマンドライン(シェルベース)アプリケーションが2つ付属しており、これらを使用して、Coherenceが正しく動作するかどうかを確認できます。

1.2.2 サンプル・キャッシュ・サーバー・アプリケーションの構成と実行

サンプル・キャッシュ・サーバー・アプリケーションを設定および実行するには:

  1. 端末ウィンドウを開き、PATH環境変数がJava JDK(例: \oracle\product\jdk160_14_R27.6.5-32\bin)を含むように設定されていることを確認します。PATH環境変数にJDKの\binフォルダが含まれていない場合は、次のように設定してください。

    1. JAVA_HOME環境変数をJDKインストールのベースに設定します。

      set JAVA_HOME=\oracle\product\jdk160_14_R27.6.5-32
      
    2. PATH環境変数にJAVA_HOME\binを含めます。

      set PATH=%JAVA_HOME%\bin;%PATH%
      
  2. Coherenceがインストールされているフォルダに移動します。cache-server.cmdファイルを編集し、COHERENCE_HOME変数を、Coherenceのインストール・フォルダを指すように設定します。

    cd C:\oracle\product\coherence\bin
    

    cache-server.cmdファイルで、COHERENCE_HOME環境変数を次のように設定します。

    COHERENCE_HOME=C:\oracle\product\coherence
    

    例1-1に、COHERENCE_HOME環境変数の値を編集したcache-server.cmdファイルを示します。

    例1-1 COHERENCE_HOMEを編集したcache-server.cmdファイル

    @echo off
    @
    @rem This will start a cache server
    @
    setlocal
    
    :config
    @rem specify the Coherence installation directory
    set coherence_home=c:\oracle\product\coherence
    
    @rem specify the JVM heap size
    set memory=512m
    
    :start
    if not exist "%coherence_home%\lib\coherence.jar" goto instructions
    
    if "%java_home%"=="" (set java_exec=java) else (set java_exec=%java_home%\bin\java)
    
    :launch
    
    set java_opts="-Xms%memory% -Xmx%memory%"
    
    "%java_exec%" -server -showversion "%java_opts%" -cp "%coherence_home%\lib\coherence.jar" com.tangosol.net.DefaultCacheServer %1
    
    goto exit
    
    :instructions
    
    echo Usage:
    echo   ^<coherence_home^>\bin\cache-server.cmd
    goto exit
    
    :exit
    endlocal
    @echo on
    
  3. coherence\binフォルダにあるキャッシュ・サーバー・アプリケーションを実行します。

    C:\oracle\product\coherence\bin>cache-server.cmd
    

    最初のキャッシュ・サーバーを起動するときには、キャッシュ・サーバーが既存のクラスタを探すため、多少の遅延があります。キャッシュ・サーバーは参加するクラスタがないと判断すると、クラスタを1つ起動します。起動時に、キャッシュ・サーバーでは例1-2のテキストのような出力が生成されます。

    この例では、次のような重要な機能が強調表示されています。

    • Java JDKのバージョン番号

    • 構成ファイルのロード方法に関する情報。デフォルトでは、coherence.jarファイルからロードされます。

      Loaded operational configuration from resource "jar:file:/C:/oracle/product/coherence/lib/coherence.jar!/tangosol-coherence.xml"

    • Coherenceのリリース番号: Oracle Coherence 3.7.0.0...

    • Coherenceのエディション: Grid Edition: Development mode

    • マルチキャスト・アドレス。このアドレスはCoherenceのバージョンごとに変わります。Coherenceリリース3.7.1の場合、アドレスでは3.7.0です。Group{Address=224.3.7.0, Port=37000, TTL=4}

    • メンバーIDは、クラスタ内のメンバーの数を示します。この演習では、値が1である必要があります。ThisMember=Member(Id=1...

    例1-2 Coherenceのキャッシュ・サーバー起動時の出力

    C:\oracle\product\coherence\bin>cache-server.cmd
    java version "1.6.0_14"
    Java(TM) SE Runtime Environment (build 1.6.0_14-b08)
    Java HotSpot(TM) Server VM (build 14.0-b16, mixed mode)
    
    2011-03-14 16:16:30.998/1.531 Oracle Coherence 3.7.0.0 <Info> (thread=main, member=n/a): Loaded operational configuration from "jar:file:/C:/oracle/product/coherence/lib/coherence.jar!/tangosol-coherence.xml"
    2011-03-14 16:16:31.342/1.875 Oracle Coherence 3.7.0.0 <Info> (thread=main, member=n/a): Loaded operational overrides from "jar:file:/C:/oracl
    e/product/coherence/lib/coherence.jar!/tangosol-coherence-override-dev.xml"
    2011-03-14 16:16:31.357/1.890 Oracle Coherence 3.7.0.0 <D5> (thread=main, member=n/a): Optional configuration override "/tangosol-coherence-override.xml" is not specified
    2011-03-14 16:16:31.373/1.906 Oracle Coherence 3.7.0.0 <D5> (thread=main, member=n/a): Optional configuration override "/custom-mbeans.xml" is not specified
    
    Oracle Coherence Version 3.7.0.0 Build 22913
     Grid Edition: Development mode
    Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
    
    2011-03-14 16:16:32.638/3.171 Oracle Coherence GE 3.7.0.0 <Info> (thread=main, member=n/a): Loaded cache configuration from "jar:file:/C:/oracle/product/coherence/lib/coherence.jar!/coherence-cache-config.xml"
    2011-03-14 16:16:33.295/3.828 Oracle Coherence GE 3.7.0.0 <D4> (thread=main, member=n/a): TCMP bound to /130.35.99.213:8088 using SystemSocketProvider
    2011-03-14 16:16:36.873/7.406 Oracle Coherence GE 3.7.0.0 <Info> (thread=Cluster, member=n/a): Created a new cluster "cluster:0x96AB" with Member(Id=1, Timestamp=2011-03-14 16:16:33.295, Address=130.35.99.213:8088, MachineId=49877, Location=site:us.oracle.com,machine:tpfaeffl-lap7,process:1920, Role=CoherenceServer, Edition=Grid Edition, Mode=Development, CpuCount=2, SocketCount=1) UID=0x822363D50000012E4FDFD80FC2D51F98
    2011-03-14 16:16:36.873/7.406 Oracle Coherence GE 3.7.0.0 <Info> (thread=main, member=n/a): Started cluster Name=cluster:0x96AB
    
    Group{Address=224.3.7.0, Port=37000, TTL=4}
    
    MasterMemberSet
      (
      ThisMember=Member(Id=1, Timestamp=2011-03-14 16:16:33.295, Address=130.35.99.213:8088, MachineId=49877, Location=site:us.oracle.com,machine:tpfaeffl-lap7,process:1920, Role=CoherenceServer)
      OldestMember=Member(Id=1, Timestamp=2011-03-14 16:16:33.295, Address=130.35.99.213:8088, MachineId=49877, Location=site:us.oracle.com,machine:tpfaeffl-lap7,process:1920, Role=CoherenceServer)
      ActualMemberSet=MemberSet(Size=1, BitSetCount=2
        Member(Id=1, Timestamp=2011-03-14 16:16:33.295, Address=130.35.99.213:8088, MachineId=49877, Location=site:us.oracle.com,machine:tpfaeffl-lap7,process:1920, Role=CoherenceServer)    )
      RecycleMillis=1200000
      RecycleSet=MemberSet(Size=0, BitSetCount=0
        )
      )
    
    TcpRing{Connections=[]}
    IpMonitor{AddressListSize=0}
    
    2011-03-14 16:16:36.935/7.468 Oracle Coherence GE 3.7.0.0 <D5> (thread=Invocation:Management, member=1): Service Management joined the cluster with senior service member 1
    2011-03-14 16:16:37.217/7.750 Oracle Coherence GE 3.7.0.0 <D5> (thread=DistributedCache, member=1): Service DistributedCache joined the cluster with senior service member 1
    2011-03-14 16:16:37.295/7.828 Oracle Coherence GE 3.7.0.0 <D5> (thread=ReplicatedCache, member=1): Service ReplicatedCache joined the cluster with senior service member 1
    2011-03-14 16:16:37.310/7.843 Oracle Coherence GE 3.7.0.0 <D5> (thread=OptimisticCache, member=1): Service OptimisticCache joined the cluster with senior service member 1
    2011-03-14 16:16:37.310/7.843 Oracle Coherence GE 3.7.0.0 <D5> (thread=Invocation:InvocationService, member=1): Service InvocationService joined the cluster with senior service member 1
    2011-03-14 16:16:37.326/7.859 Oracle Coherence GE 3.7.0.0 <Info> (thread=main, member=1):
    Services
      (
      ClusterService{Name=Cluster, State=(SERVICE_STARTED, STATE_JOINED), Id=0, Version=3.7, OldestMemberId=1}
      InvocationService{Name=Management, State=(SERVICE_STARTED), Id=1, Version=3.1, OldestMemberId=1}
      PartitionedCache{Name=DistributedCache, State=(SERVICE_STARTED), LocalStorage=enabled, PartitionCount=257, BackupCount=1, AssignedPartitions=257, BackupPartitions=0}
      ReplicatedCache{Name=ReplicatedCache, State=(SERVICE_STARTED), Id=3, Version=3.0, OldestMemberId=1}
      Optimistic{Name=OptimisticCache, State=(SERVICE_STARTED), Id=4, Version=3.0, OldestMemberId=1}
      InvocationService{Name=InvocationService, State=(SERVICE_STARTED), Id=5, Version=3.1, OldestMemberId=1}
      )
    
    Started DefaultCacheServer...
    

    注意:

    Coherenceはデフォルトで、マルチキャストを使用してクラスタに参加したり、クラスタ・イベントを配布するように構成されます。マルチキャストを使用すると、クラスタ内の複数のノードにメッセージを効率的に配布することもできます。マルチキャストを使用しないようにCoherenceを構成することもできます。

    cache-server.cmdファイルの出力は、クラスタ内のメンバーが1つであるか複数であるかを示します。Member Idの値は1である必要があります。

    ...
    In MasterMemberSet
    ThisMember=Member(Id should be equal to 1)
    ...
    

    ThisMemberIdが1より大きい場合、キャッシュ・サーバーがネットワーク内の既存のクラスタに参加していることを意味します。この演習では、クラスタのメンバーは1つのみである必要があります。「Coherenceを自分のホストに制限する」の手順に従って、Coherenceを自分のホストに制限してください。

1.2.3 サンプル・キャッシュ・クライアント・アプリケーションの構成と実行

サンプル・キャッシュ・クライアント・アプリケーションを設定および実行するには:

  1. キャッシュ・クライアントを起動するために、別の端末ウィンドウを開きます。

    PATH環境変数が%JAVA_HOME%\binフォルダを含むように設定されていることを確認します。PATH環境変数に%JAVA_HOME%\binフォルダが含まれていない場合は、「サンプル・キャッシュ・サーバー・アプリケーションの構成と実行」の説明に従って変数を設定してください。

  2. \oracle\product\coherence\binフォルダに移動します。query.cmdファイルを編集して、COHERENCE_HOME変数を、Coherenceのインストール・フォルダを指すように設定します。

    query.cmdファイルには、JLine JARファイル(jline.jar)への参照が含まれています。JLineは、コンソール・コマンドの操作を簡素化するJavaライブラリです。

    例1-3に、COHERENCE_HOME=\oracle\product\coherenceと設定したquery.cmdファイルを示します。JLINE_HOME%jline_home%\libに設定されています。

    例1-3 COHERENCE_HOMEを編集したquery.cmdファイル

    @echo off
    @
    @rem This will start a console application
    @rem demonstrating the functionality of the Coherence(tm) API
    @
    setlocal
     
    :config
    @rem specify the Coherence installation directory
    set coherence_home=c:\oracle\product\coherence 
     
    @rem specify the jline installation directory
    set jline_home=%coherence_home%\lib
     
    @rem specify if the console will also act as a server
    set storage_enabled=false
     
    @rem specify the JVM heap size
    set memory=64m
     
     
    :start
    if not exist "%coherence_home%\lib\coherence.jar" goto instructions
     
    if "%java_home%"=="" (set java_exec=java) else (set java_exec=%java_home%\bin\java)
     
     
    :launch
     
    if "%storage_enabled%"=="true" (echo ** Starting storage enabled console **) else (echo ** Starting storage disabled console **)
     
    set java_opts="-Xms%memory% -Xmx%memory% -Dtangosol.coherence.distributed.localstorage=%storage_enabled%"
     
    "%java_exec%" -server -showversion "%java_opts%" -cp "%coherence_home%\lib\coherence.jar;%jline_home%\jline.jar" com.tangosol.coherence.dslquery.QueryPlus %*
     
    goto exit
     
    :instructions
     
    echo Usage:
    echo   ^<coherence_home^>\bin\query.cmd
    goto exit
     
    :exit
    endlocal
    @echo on
    
  3. query.cmdファイルを実行して、キャッシュ・クライアントを起動します。

    query.cmd
    

    キャッシュ・クライアント起動時の出力(例1-4を参照)には、Coherence内に構築されている基本的な分散キャッシュ機能が表示されます。出力の最後には、CohQL>プロンプトが表示されます。

    例1-4 Coherenceのキャッシュ・クライアント起動時の出力

    C:\coherence360\coherence\bin>query.cmd
    ** Starting storage disabled console **
    java version "1.6.0_14"
    Java(TM) SE Runtime Environment (build 1.6.0_14-b08)
    Java HotSpot(TM) Server VM (build 14.0-b16, mixed mode)
     
    Coherence Command Line Tool
     
    CohQL>
    

1.2.4 サンプル・キャッシュ・クライアント・アプリケーションの演習

様々なコマンドを入力し、出力を調べることによって、キャッシュ・クライアント・アプリケーションの演習を行います。

  1. キャッシュ・クライアントで次のCoherenceコマンドを実行します。

    • helpと入力して、使用可能なコマンドのリストを表示します。

    • create cache "products"と入力して、productsという名前のキャッシュを作成します。

      キャッシュproductsは、com.tangosol.net.NamedCacheインタフェースを実装します。1つのクラスタに複数の名前付きキャッシュを含めることができます。

      例1-5は、指定したcoherence.jarファイル内のデフォルトの構成ファイル(coherence-cache-config.xml)を使用すると、分散スキームを使用してproductsという名前のNamedCacheが作成されることを示しています。

      例1-5 Coherenceのキャッシュ起動時の出力

      CohQL> create cache "products"
      2011-03-14 16:49:09.217/109.469 Oracle Coherence 3.7.0.0 <Info> (thread=main, member=n/a): Loaded operational configuration from "jar:file:/C:/oracle/product/coherence/lib/coherence.jar!/tangosol-coherence.xml"2011-03-14 16:49:09.482/109.734 Oracle Coherence 3.7.0.0 <Info> (thread=main, member=n/a): Loaded operational overrides from "jar:file:/C:/oracle/product/coherence/lib/coherence.jar!/tangosol-coherence-override-dev.xml"
      2011-03-14 16:49:09.482/109.734 Oracle Coherence 3.7.0.0 <D5> (thread=main, member=n/a): Optional configuration override "/tangosol-coherence-override.xml" is not specified
      2011-03-14 16:49:09.482/109.734 Oracle Coherence 3.7.0.0 <D5> (thread=main, member=n/a): Optional configuration override "/custom-mbeans.xml" is not specified
      
      Oracle Coherence Version 3.7.0.0 Build 22913
       Grid Edition: Development mode
      Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
      
      2011-03-14 16:49:10.498/110.750 Oracle Coherence GE 3.7.0.0 <Info> (thread=main, member=n/a): Loaded cache configuration from "jar:file:/C:/oracle/product/coherence/lib/coherence.jar!/coherence-cache-config.xml"
      2011-03-14 16:49:11.185/111.437 Oracle Coherence GE 3.7.0.0 <D4> (thread=main, member=n/a): TCMP bound to /130.35.99.213:8090 using SystemSocketProvider
      2011-03-14 16:49:11.701/111.953 Oracle Coherence GE 3.7.0.0 <Info> (thread=Cluster, member=n/a): This Member(Id=2, Timestamp=2011-03-14 16:49:11.645, Address=130.35.99.213:8090, MachineId=49877, Location=site:us.oracle.com,machine:tpfaeffl-lap7,process:4900, Role=TangosolCoherenceQueryPlus,Edition=Grid Edition, Mode=Development, CpuCount=2, SocketCount=1) joined cluster "cluster:0x96AB" with senior Member(Id=1, Timestamp=2011-03-14 16:16:33.295, Address=130.35.99.213:8088, MachineId=49877, Location=site:us.oracle.com,machine:tpfaeffllap7,process:1920, Role=CoherenceServer, Edition=Grid Edition, Mode=Development, CpuCount=2, SocketCount=1)
      2011-03-14 16:49:11.732/111.984 Oracle Coherence GE 3.7.0.0 <D5> (thread=Cluster, member=n/a): Member 1 joined Service Cluster with senior member 1
      2011-03-14 16:49:11.732/111.984 Oracle Coherence GE 3.7.0.0 <D5> (thread=Cluster, member=n/a): Member 1 joined Service Management with senior member 1
      2011-03-14 16:49:11.732/111.984 Oracle Coherence GE 3.7.0.0 <D5> (thread=Cluster, member=n/a): Member 1 joined Service DistributedCache with senior member 1
      2011-03-14 16:49:11.732/111.984 Oracle Coherence GE 3.7.0.0 <D5> (thread=Cluster, member=n/a): Member 1 joined Service ReplicatedCache with senior member 1
      2011-03-14 16:49:11.732/111.984 Oracle Coherence GE 3.7.0.0 <D5> (thread=Cluster, member=n/a): Member 1 joined Service OptimisticCache with senior member 1
      2011-03-14 16:49:11.732/111.984 Oracle Coherence GE 3.7.0.0 <D5> (thread=Cluster, member=n/a): Member 1 joined Service InvocationService with senior member 12011-03-14 16:49:11.732/111.984 Oracle Coherence GE 3.7.0.0 <Info> (thread=main, member=n/a): Started cluster Name=cluster:0x96AB
      
      Group{Address=224.3.7.0, Port=37000, TTL=4}
      
      MasterMemberSet
        (
        ThisMember=Member(Id=2, Timestamp=2011-03-14 16:49:11.645, Address=130.35.99.213:8090, MachineId=49877, Location=site:us.oracle.com,machine:tpfaeffl-lap7,process:4900, Role=TangosolCoherenceQueryPlus)
        OldestMember=Member(Id=1, Timestamp=2011-03-14 16:16:33.295, Address=130.35.99.213:8088, MachineId=49877, Location=site:us.oracle.com,machine:tpfaeffl-lap7,process:1920, Role=CoherenceServer)
        ActualMemberSet=MemberSet(Size=2, BitSetCount=2
          Member(Id=1, Timestamp=2011-03-14 16:16:33.295, Address=130.35.99.213:8088, MachineId=49877, Location=site:us.oracle.com,machine:tpfaeffl-lap7,process:1920, Role=CoherenceServer)
          Member(Id=2, Timestamp=2011-03-14 16:49:11.645, Address=130.35.99.213:8090, MachineId=49877, Location=site:us.oracle.com,machine:tpfaeffl-lap7,process:4900, Role=TangosolCoherenceQueryPlus)
          )
        RecycleMillis=1200000
        RecycleSet=MemberSet(Size=0, BitSetCount=0
          )
        )
      
      TcpRing{Connections=[1]}
      IpMonitor{AddressListSize=0}
      
      2011-03-14 16:49:11.779/112.031 Oracle Coherence GE 3.7.0.0 <D5> (thread=Invocation:Management, member=2): Service Management joined the cluster with senior service member 1
      2011-03-14 16:49:12.060/112.312 Oracle Coherence GE 3.7.0.0 <D5> (thread=DistributedCache, member=2): Service DistributedCache joined the cluster with senior service member 1
      
      CohQL>
      
  2. キャッシュ・クライアントのCohQL>プロンプトで次のコマンドを実行します。これらのコマンドの定義は、『Oracle Coherence開発者ガイド』のCoherence問合せ言語の使用に関する項を参照してください。

    • productsという名前のキャッシュを作成します。

      create cache "products"  
      
    • エントリ(キーと値のペア)をキャッシュに挿入します。

      insert into "products" key "television" value "ID-5070"
      
    • キーの値を変更します。

      update "products" set value() = "ID-5080" where key() like "television
      
    • キャッシュ内の値を取得します。

      select * from "products" 
      
    • 存在しないキーの値を取得します。空の結果セットが返されます。

      select key(), value() from "products" where key() is "radio" 
      
    • キャッシュ内の既存のキーを削除します。空の結果セットが返されます。

      delete from "products" where key() = "television"
      
    • productsキャッシュの内容を削除します。空の結果セットが返されます。

      delete from "products"
      
    • productsキャッシュを破棄します。

      drop cache "products" 
      
    • productsキャッシュを再作成します。

      create cache "products" 
      
    • さらに多くのエントリをキャッシュに挿入します。

      insert into "products" key "television" value "ID-5080"
      insert into "products" key "radio" value "ID-5090"
      insert into "products" key "MP3 Player" value "ID-5100"
      insert into "products" key "laptop" value "ID-5110"
      
    • productsキャッシュ内のキーと値を取得します。

      select key(), value() from "products" 
      
    • キャッシュのシリアライズされた形式をファイルに保存します。

      backup cache "products" to "products.bkup"
      
    • キャッシュからキーを削除します。

      delete from "products" where key() = "television"  
      
    • キャッシュの内容を再度取得し、削除されたキーと値が存在しないことを確認します。

      select key(), value() from "products" 
      
    • キャッシュの内容を削除します。

      delete from "products" 
      
    • キャッシュの内容を取得します。空の結果セットが返されます。

      select * from "products"  
      
    • バックアップ・ファイルからキャッシュの内容をリストアします。

      restore cache "products" from file "products.bkup" 
      
    • キャッシュの内容を取得します。すべてのエントリがリストアされ、返されることを確認します。

      select key(), value() from "products" 
      
    • productsキャッシュを破棄します。

      drop cache "products" 
      
    • コマンドライン・ツールを終了します。

      bye 
      

    例1-6に、これらの各コマンドの出力を示します。

    例1-6 Coherenceコマンドの演習

    CohQL> create cache "products"
     
    CohQL> insert into "products" key "television" value "ID-5070"
     
    CohQL> update "products" set value() = "ID-5080" where key() like "television
    Results
    television: true
     
    CohQL> select * from "products"
    Results
    ID-5080
     
    CohQL> select key(), value() from "products" where key() is "radio"
    Results
     
    CohQL> delete from "products" where key() = "television"
    Results
     
    CohQL> delete from "products"
    Results
     
    CohQL> drop cache "products"
     
    CohQL> create cache "products"
     
    CohQL> insert into "products" key "television" value "ID-5080"
     
    CohQL> insert into "products" key "radio" value "ID-5090"
     
    CohQL> insert into "products" key "MP3 Player" value "ID-5100"
     
    CohQL> insert into "products" key "laptop" value "ID-5110"
    
    CohQL> select key(), value() from "products"
    Results
    "television", "ID-5080"
    "radio", "ID-5090"
    "MP3 Player", "ID-5100"
    "laptop", "ID-5110"
     
    CohQL> backup cache "products" to "products.bkup"
    WARNING: The backup command should not be used on active data set,
    as it makes no provisions that ensure data consistency during the backup.
    Please see the documentation for more detailed information.
     
    CohQL> delete from "products" where key() = "television"
    Results
     
    CohQL> select key(), value() from "products"
    Results
    "radio", "ID-5090"
    "MP3 Player", "ID-5100"
    "laptop", "ID-5110"
     
    CohQL> delete from "products"
    Results
     
    CohQL> select * from "products"
    Results
     
    CohQL> restore cache "products" from file "products.bkup"
     
    CohQL> select key(), value() from "products"
    Results
    "television", "ID-5080"
    "radio", "ID-5090"
    "MP3 Player", "ID-5100"
    "laptop", "ID-5110"
     
    CohQL> drop cache "products"
     
    CohQL> bye
    
    2011-03-14 16:54:41.638/441.890 Oracle Coherence GE 3.7.0.0 <D5> (thread=Invocation:Management, member=2): Service Management left the cluster
    2011-03-14 16:54:41.638/441.890 Oracle Coherence GE 3.7.0.0 <D5> (thread=DistributedCache, member=2): Service DistributedCache left the cluster
    2011-03-14 16:54:41.654/441.906 Oracle Coherence GE 3.7.0.0 <D5> (thread=Cluster, member=2): Service Cluster left the cluster
    
    C:\oracle\product\coherence\bin>
    
  3. 別の端末ウィンドウを開き、PATH環境変数を、%JAVA_HOME%および%JAVA_HOME%\binを含むように設定します。新しい端末ウィンドウでquery.cmdコマンドを入力して、キャッシュ・クライアントのインスタンスを起動します。

  4. query.cmdコマンドを使用して最初のクライアントを再起動します。create cache "products"コマンドを入力します。端末ウィンドウに、最初のクライアントが実行されている場所を示す、次のようなメッセージが表示されます。member 1はキャッシュ・サーバー、member 3は再起動された最初のクライアントです。

    2011-03-14 17:51:26.701/17.688 Oracle Coherence GE 3.7.0.0 <D5> (thread=Invocation:Management, member=3): Service Management joined the cluster with senior service member 1
    2011-03-14 17:51:27.138/18.125 Oracle Coherence GE 3.7.0.0 <D5> (thread=DistributedCache, member=3): Service DistributedCache joined the cluster with senior service member 1
     
    CohQL> 
    
  5. 新しい端末ウィンドウでcreate cache "products"コマンドを入力して、productsキャッシュに接続します。様々なセッションで値の取得や挿入を行ってみてください。各クライアントは、もう一方のクライアントで行われた変更を監視できます。

  6. query.cmdシェルの一方を終了します(bye)。メンバーがクラスタから離脱したことを示すメッセージがもう一方のシェルに表示されます。次に例を示します。

    2011-03-14 17:56:22.920/313.907 Oracle Coherence GE 3.7.0.0 <D5> (thread=Cluster, member=2): Member 3 left service Management with senior member 1
    2011-03-14 17:56:22.935/313.922 Oracle Coherence GE 3.7.0.0 <D5> (thread=Cluster, member=2): Member 3 left service DistributedCache with senior member 1
    2011-03-14 17:56:22.967/313.954 Oracle Coherence GE 3.7.0.0 <D5> (thread=Cluster, member=2): TcpRing disconnected from Member(Id=3, Timestamp=2011-03-14 17:55:21.803, Address=130.35.99.213:8092, MachineId=49877, Location=site:us.oracle.com,machine:tpfaeffl-lap7,process:1008, Role=TangosolCoherenceQueryPlus) due to a peer departure; removing the member.
    2011-03-14 17:56:22.982/313.969 Oracle Coherence GE 3.7.0.0 <D5> (thread=Cluster, member=2): Member(Id=3, Timestamp=2011-03-14 17:56:22.982, Address=130.35.99.213:8092, MachineId=49877, Location=site:us.oracle.com,machine:tpfaeffl-lap7,process:1008, Role=TangosolCoherenceQueryPlus) left Cluster with senior member 1
    
  7. それぞれのキャッシュ・クライアントを終了し(bye)、再起動しても、前のセッションのデータは引き続き使用可能です。これは、データがキャッシュ・サーバーに保持されているためです。

  8. 別のCoherenceキャッシュ・サーバーを起動し、起動されている最初のサーバーを終了しても([Ctrl]+[C]キーを使用するか、コマンド・ウィンドウを閉じる)、データは引き続き使用可能です。

  9. query.cmdシェルとcache-server.cmdシェルの両方を終了します。query.cmdを再起動します。コマンドcreate cache testを使用して、testという名前のキャッシュを作成します。これまでと同様に、値をキャッシュに挿入してみてください。キャッシュ・クライアントは記憶域無効モードで起動するように構成されているため、次のようなメッセージが表示されます。

    com.tangosol.net.RequestPolicyException: No storage-enabled nodes exist for service DistributedCache
    
  10. cache-server.cmdファイルを実行して、キャッシュ・サーバーを起動します。もう一度、値を挿入してみてください。今度は値が受け付けられます。

  11. すべてのキャッシュ・サーバーを終了します。

1.2.5 キャッシュ・サーバーのクラスタ化のトラブルシューティング

cache-server.cmdの出力のメンバーIDの値が1以外の場合、キャッシュ・サーバーが、Coherenceを実行している1つ以上の他のキャッシュ・サーバーまたはプロセスとともにクラスタ化されていることを示します。これらのサーバーまたはプロセスは、ネットワーク上で実行されている場合もあれば、自分のホスト上でローカルで実行されている場合もあります。Coherenceをローカルまたはネットワークで実行している他のプロセスとともにクラスタ化することはCoherenceのデフォルトの動作ですが、このチュートリアルを実施している間は、Coherenceを自分のホストに制限することを強くお薦めします。


注意:

Coherenceを1 つのホストに制限するために、このチュートリアルで使用するキャッシュ・サーバーおよびキャッシュ・クライアントの実行可能ファイルでは、3155に設定されたtangosol.coherence.clusterportコマンドライン・プロパティを使用します。

1.2.5.1 Coherenceを自分のホストに制限する

cache-server.cmdキャッシュ・サーバー・コマンドの出力におけるメンバーIDの値は、クラスタ内のメンバーが1つであるか複数であるかを示します。このチュートリアルでは、メンバーIDの値は1である必要があります。

...
In MasterMemberSet
ThisMember=Member(Id should be equal to 1)
...

メンバーIDの値が1より大きい場合、サブネット内に複数のクラスタが形成されていることを意味します。

Coherenceを自分のホストに制限するには、いくつかの方法があります。最も簡単な方法は、tangosol.coherence.clusterportシステム・プロパティを使用して、キャッシュ・サーバーの起動ファイルで一意のクラスタ・ポート値を宣言する方法です。たとえば、cache-server.cmdファイルに次のJavaオプションを追加します。このシステム・プロパティに割り当てる値には、電話番号の下4桁など、任意の一意の値を使用できます。

-Dtangosol.coherence.clusterport=3155

1.2.5.2 Coherenceを自分のホストに制限するための詳細な手順

Coherenceを自分のホストに制限する」の手順を実行しても、cache-server.cmdコマンドから返されるメンバーIDの値が1でない場合は、解決の必要な問題が他にもある可能性があります。

ネットワークから切断するか、ホスト上でネットワークを無効にします。キャッシュ・サーバーの起動時にエラーや例外が発生する場合は、ネットワークの設定の変更が必要である可能性があります。次の手順をそれぞれ1つずつ試し、それぞれの手順が終わるたびにキャッシュ・サーバーを再起動してください。

  • 仮想プライベート・ネットワーク(VPN)に接続している場合は切断します。デフォルトでは、ほとんどのVPNはマルチキャスト・トラフィックおよび一部のユニキャスト・トラフィックを許可しないように構成されています。この環境では、出荷時の構成のままではCoherenceが動作しない場合があります。VPN経由で稼働するようにCoherenceを構成することもできますが、それにはいくつかの高度な設定が必要です。

  • ファイアウォールを実行している場合は、指定したアドレスおよびポートを使用できるように構成します。

  • 引き続き問題が発生する場合は、すべてのネットワークから切断します。これには、無線ネットワークと有線ネットワークが含まれます。

  • 前述のオプションがすべて失敗した場合は、1つのホストで稼働するようにCoherenceを設定します。