ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Coherenceチュートリアル
12c (12.1.2)
B70747-02
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

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

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


注意:

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


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

この章には次の項が含まれます:

1.1 Coherenceのインストール

Oracle Coherenceのインストールの詳細は、『Oracle Fusion Middleware Oracle Coherenceでのアプリケーションの開発』のOracle Coherence for Javaのインストールに関する項を参照してください。この章では、Oracle Universal Installerを使用したOracle Coherenceのインストール手順について説明します。このインストーラは、グラフィック・モードとサイレント・モードの両方をサポートします。また、Coherence Quick Installerを使用して、オプションなしでサイレント・インストールを実行するように選択することもできます。


注意:

このチュートリアルでは、Oracle Universal Installerのグラフィカル・インタフェースを使用して、C:\oracle\Middleware\Oracle_HomeにOracle Coherenceがインストールされていることを前提としています。


Oracle_Homeの下に表示されるcoherenceフォルダには次のサブフォルダが含まれます。

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

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

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

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

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

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

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

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

localhost/8088+/ユニキャスト

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

localhost / 8089 / Unicast

ユニキャスト通信に使用される追加ポート。デフォルトでは、先頭のユニキャスト・ポートの次に使用可能なポートとしてこのポートを割り当てます。

localhost / 7 / Unicast

クラスタ・メンバーのハードウェア障害の検出に使用されるIpMonitorコンポーネントのデフォルト・ポートは7です。


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

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

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

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

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

      set JAVA_HOME=\oracle\Middleware\jdk170
      
    2. PATH環境変数にJAVA_HOME\binを含めます。

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

    cd C:\oracle\Middleware\Oracle_Home\coherence\bin
    

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

    COHERENCE_HOME=C:\oracle\Middleware\Oracle_Home\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
     
    if "%1"=="-jmx" (
       set jmxproperties=-Dtangosol.coherence.management=all -Dtangosol.coherence.management.remote=true
       shift  
    )       
     
    set java_opts=-Xms%memory% -Xmx%memory% %jmxproperties%
     
    %java_exec% -server -showversion %java_opts% -cp "%coherence_home%\lib\coherence.jar" -Dtangosol.coherence.clusterport=3155 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 12.1.0.0...

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

    • マルチキャスト・アドレス。このアドレスはCoherenceのバージョンごとに変わります。Coherence 12c (12.1.2)のアドレス内には次のように12.1.0が含まれます。Group{Address=224.12.1.0, Port=12100, TTL=4}

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

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

    java version "1.7.0"
    Java(TM) SE Runtime Environment (build 1.7.0-b147)
    Java HotSpot(TM) Server VM (build 21.0-b17, mixed mode)
     
    2012-08-14 15:29:26.171/0.656 Oracle Coherence 12.1.2.0 <Info> (thread=main, member=n/a): Loaded operational configuration from "jar:file:/C:/oracle/Middleware/Oracle_Home/coherence/lib/coherence.jar!/tangosol-coherence.xml"
    2012-08-14 15:29:26.453/0.938 Oracle Coherence 12.1.2.0 <Info> (thread=main, member=n/a): Loaded operational overrides from "jar:file:/C:/oracle/Middleware/Oracle_Home/coherence/lib/coherence.jar!/tangosol-coherence-override-dev.xml"
    2012-08-14 15:29:26.453/0.938 Oracle Coherence 12.1.2.0 <D5> (thread=main, member=n/a): Optional configuration override "/tangosol-coherence-override.xml" is not specified
    2012-08-14 15:29:26.453/0.938 Oracle Coherence 12.1.2.0 <D5> (thread=main, member=n/a): Optional configuration override "cache-factory-config.xml" is not specified
    2012-08-14 15:29:26.468/0.953 Oracle Coherence 12.1.2.0 <D5> (thread=main, member=n/a): Optional configuration override "cache-factory-builder-config.xml" is not specified
    2012-08-14 15:29:26.468/0.953 Oracle Coherence 12.1.2.0 <D5> (thread=main, member=n/a): Optional configuration override "/custom-mbeans.xml" is not specified
     
    Oracle Coherence Version 12.1.2.0 Build 36845
     Grid Edition: Development mode
    Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
     
    2012-08-14 15:29:27.015/1.500 Oracle Coherence GE 12.1.2.0 <Info> (thread=main, member=n/a): Loaded cache configuration from "jar:file:/C:/oracle/Middleware/Oracle_Home/coherence/lib/coherence.jar!/coherence-cache-config.xml"
    2012-08-14 15:29:27.203/1.688 Oracle Coherence GE 12.1.2.0 <Info> (thread=main, member=n/a): Loaded cache configuration from "jar:file:/C:/oracle/Middleware/Oracle_Home/coherence/lib/coherence.jar!/internal-txn-cache-config.xml"
    2012-08-14 15:29:27.781/2.266 Oracle Coherence GE 12.1.2.0 <Info> (thread=main, member=n/a): Created cache factory com.tangosol.net.ExtensibleConfigurableCacheFactory
    2012-08-14 15:29:28.265/2.750 Oracle Coherence GE 12.1.2.0 <D4> (thread=main, member=n/a): TCMP bound to /130.35.99.202:8088 using SystemDatagramSocketProvider
    2012-08-14 15:29:31.687/6.172 Oracle Coherence GE 12.1.2.0 <Info> (thread=Cluster, member=n/a): Created a new cluster "cluster:0x47DB" with Member(Id=1, Timestamp=2012-08-14 15:29:28.39, Address=130.35.99.202:8088, MachineId=18578, Location=site:,machine:tpfaeffl-lap7,process:5044, Role=CoherenceServer, Edition=Grid Edition, Mode=Development, CpuCount=2, SocketCount=1)
    2012-08-14 15:29:31.703/6.188 Oracle Coherence GE 12.1.2.0 <Info> (thread=main, member=n/a): Started cluster Name=cluster:0x47DB
     
    Group{Address=224.12.1.0, Port=12100, TTL=4}
     
    MasterMemberSet(
      ThisMember=Member(Id=1, Timestamp=2012-08-14 15:29:28.39, Address=130.35.99.202:8088, MachineId=18578, Location=site:,machine:tpfaeffl-lap7,process:
    5044, Role=CoherenceServer)
      OldestMember=Member(Id=1, Timestamp=2012-08-14 15:29:28.39, Address=130.35.99.202:8088, MachineId=18578, Location=site:,machine:tpfaeffl-lap7,proces
    s:5044, Role=CoherenceServer)
      ActualMemberSet=MemberSet(Size=1
        Member(Id=1, Timestamp=2012-08-14 15:29:28.39, Address=130.35.99.202:8088, MachineId=18578, Location=site:,machine:tpfaeffl-lap7,process:5044, Rol
    e=CoherenceServer)
        )
      MemberId|ServiceVersion|ServiceJoined|MemberState
        1|12.1.2|2012-08-14 15:29:28.39|JOINED
      RecycleMillis=1200000
      RecycleSet=MemberSet(Size=0
        )
      )
     
    TcpRing{Connections=[]}
    IpMonitor{Addresses=0}
     
    2012-08-14 15:29:32.031/6.516 Oracle Coherence GE 12.1.2.0 <D5> (thread=Invocation:Management, member=1): Service Management joined the cluster with senior service member 1
    2012-08-14 15:29:32.203/6.688 Oracle Coherence GE 12.1.2.0 <Info> (thread=main, member=1): Loaded Reporter configuration from "jar:file:/C:/oracle/Middleware/Oracle_Home/coherence/lib/coherence.jar!/reports/report-group.xml"
    2012-08-14 15:29:32.625/7.110 Oracle Coherence GE 12.1.2.0 <D5> (thread=DistributedCache, member=1): Service DistributedCache joined the cluster with senior service member 1
    2012-08-14 15:29:32.718/7.203 Oracle Coherence GE 12.1.2.0 <D5> (thread=ReplicatedCache, member=1): Service ReplicatedCache joined the cluster with senior service member 1
    2012-08-14 15:29:32.718/7.203 Oracle Coherence GE 12.1.2.0 <D5> (thread=OptimisticCache, member=1): Service OptimisticCache joined the cluster with senior service member 1
    2012-08-14 15:29:32.734/7.219 Oracle Coherence GE 12.1.2.0 <D5> (thread=Invocation:InvocationService, member=1): Service InvocationService joined the cluster with senior service member 1
    2012-08-14 15:29:32.734/7.219 Oracle Coherence GE 12.1.2.0 <Info> (thread=main, member=1):
    Services
      (
      ClusterService{Name=Cluster, State=(SERVICE_STARTED, STATE_JOINED), Id=0, Version=12.1.2, OldestMemberId=1}
      InvocationService{Name=Management, State=(SERVICE_STARTED), Id=1, Version=12.1.2, OldestMemberId=1}
      PartitionedCache{Name=DistributedCache, State=(SERVICE_STARTED), LocalStorage=enabled, PartitionCount=257, BackupCount=1, AssignedPartitions=257, Ba
    ckupPartitions=0}
      ReplicatedCache{Name=ReplicatedCache, State=(SERVICE_STARTED), Id=3, Version=12.1.2, OldestMemberId=1}
      Optimistic{Name=OptimisticCache, State=(SERVICE_STARTED), Id=4, Version=12.1.2, OldestMemberId=1}
      InvocationService{Name=InvocationService, State=(SERVICE_STARTED), Id=5, Version=12.1.2, 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\Middleware\Oracle_Home\coherence\binフォルダに移動します。query.cmdファイルを編集して、COHERENCE_HOME変数を、Coherenceのインストール・フォルダを指すように設定します。

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

    例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\Middleware\Oracle_Home\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:\oracle\Middleware\Oracle_Home\coherence\bin>query.cmd
    ** Starting storage disabled console **
    java version "1.7.0"
    Java(TM) SE Runtime Environment (build 1.7.0-b147)
    Java HotSpot(TM) Server VM (build 21.0-b17, 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のキャッシュ・クライアント起動時の出力

      2012-08-14 16:15:28.828/26.485 Oracle Coherence 12.1.2.0 <Info> (thread=main, member=n/a): Loaded operational configuration from "jar:file:/C:/oracle/
      Middleware/Oracle_Home/coherence/lib/coherence.jar!/tangosol-coherence.xml"
      2012-08-14 16:15:29.062/26.719 Oracle Coherence 12.1.2.0 <Info> (thread=main, member=n/a): Loaded operational overrides from "jar:file:/C:/oracle/Midd
      leware/Oracle_Home/coherence/lib/coherence.jar!/tangosol-coherence-override-dev.xml"
      2012-08-14 16:15:29.062/26.719 Oracle Coherence 12.1.2.0 <D5> (thread=main, member=n/a): Optional configuration override "/tangosol-coherence-override
      .xml" is not specified
      2012-08-14 16:15:29.062/26.719 Oracle Coherence 12.1.2.0 <D5> (thread=main, member=n/a): Optional configuration override "cache-factory-config.xml" is
       not specified
      2012-08-14 16:15:29.062/26.719 Oracle Coherence 12.1.2.0 <D5> (thread=main, member=n/a): Optional configuration override "cache-factory-builder-config
      .xml" is not specified
      2012-08-14 16:15:29.062/26.719 Oracle Coherence 12.1.2.0 <D5> (thread=main, member=n/a): Optional configuration override "/custom-mbeans.xml" is not s
      pecified
       
      Oracle Coherence Version 12.1.2.0 Build 36845
       Grid Edition: Development mode
      Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
       
      2012-08-14 16:15:31.296/28.953 Oracle Coherence GE 12.1.2.0 <Info> (thread=main, member=n/a): Loaded cache configuration from "jar:file:/C:/oracle/Mid
      dleware/Oracle_Home/coherence/lib/coherence.jar!/coherence-cache-config.xml"
      2012-08-14 16:15:31.984/29.641 Oracle Coherence GE 12.1.2.0 <Info> (thread=main, member=n/a): Loaded cache configuration from "jar:file:/C:/oracle/Mid
      dleware/Oracle_Home/coherence/lib/coherence.jar!/internal-txn-cache-config.xml"
      2012-08-14 16:15:35.484/33.141 Oracle Coherence GE 12.1.2.0 <Info> (thread=main, member=n/a): Created cache factory com.tangosol.net.ExtensibleConfigu
      rableCacheFactory
      2012-08-14 16:15:37.125/34.782 Oracle Coherence GE 12.1.2.0 <D4> (thread=main, member=n/a): TCMP bound to /130.35.99.202:8090 using SystemDatagramSock
      etProvider
      2012-08-14 16:15:37.703/35.360 Oracle Coherence GE 12.1.2.0 <Info> (thread=Cluster, member=n/a): This Member(Id=2, Timestamp=2012-08-14 16:15:37.687,
      Address=130.35.99.202:8090, MachineId=18578, Location=site:,machine:tpfaeffl-lap7,process:3796, Role=TangosolCoherenceQueryPlus, Edition=Grid Edition,
       Mode=Development, CpuCount=2, SocketCount=1) joined cluster "cluster:0x47DB" with senior Member(Id=1, Timestamp=2012-08-14 15:29:28.39, Address=130.3
      5.99.202:8088, MachineId=18578, Location=site:,machine:tpfaeffl-lap7,process:5044, Role=CoherenceServer, Edition=Grid Edition, Mode=Development, CpuCo
      unt=2, SocketCount=1)
      2012-08-14 16:15:37.828/35.485 Oracle Coherence GE 12.1.2.0 <D5> (thread=Cluster, member=n/a): Member 1 joined Service Management with senior member 1
       
      2012-08-14 16:15:37.828/35.485 Oracle Coherence GE 12.1.2.0 <D5> (thread=Cluster, member=n/a): Member 1 joined Service DistributedCache with senior me
      mber 1
      2012-08-14 16:15:37.828/35.485 Oracle Coherence GE 12.1.2.0 <D5> (thread=Cluster, member=n/a): Member 1 joined Service ReplicatedCache with senior mem
      ber 1
      2012-08-14 16:15:37.828/35.485 Oracle Coherence GE 12.1.2.0 <D5> (thread=Cluster, member=n/a): Member 1 joined Service OptimisticCache with senior mem
      ber 1
      2012-08-14 16:15:37.828/35.485 Oracle Coherence GE 12.1.2.0 <D5> (thread=Cluster, member=n/a): Member 1 joined Service InvocationService with senior m
      ember 1
      2012-08-14 16:15:37.828/35.485 Oracle Coherence GE 12.1.2.0 <Info> (thread=main, member=n/a): Started cluster Name=cluster:0x47DB
       
      Group{Address=224.12.1.0, Port=3155, TTL=4}
       
      MasterMemberSet(
        ThisMember=Member(Id=2, Timestamp=2012-08-14 16:15:37.687, Address=130.35.99.202:8090, MachineId=18578, Location=site:,machine:tpfaeffl-lap7,process
      :3796, Role=TangosolCoherenceQueryPlus)
        OldestMember=Member(Id=1, Timestamp=2012-08-14 15:29:28.39, Address=130.35.99.202:8088, MachineId=18578, Location=site:,machine:tpfaeffl-lap7,proces
      s:5044, Role=CoherenceServer)
        ActualMemberSet=MemberSet(Size=2
          Member(Id=1, Timestamp=2012-08-14 15:29:28.39, Address=130.35.99.202:8088, MachineId=18578, Location=site:,machine:tpfaeffl-lap7,process:5044, Rol
      e=CoherenceServer)
          Member(Id=2, Timestamp=2012-08-14 16:15:37.687, Address=130.35.99.202:8090, MachineId=18578, Location=site:,machine:tpfaeffl-lap7,process:3796, Ro
      le=TangosolCoherenceQueryPlus)
          )
        MemberId|ServiceVersion|ServiceJoined|MemberState
          1|12.1.2|2012-08-14 15:29:28.39|JOINED,
          2|12.1.2|2012-08-14 16:15:37.687|JOINED
        RecycleMillis=1200000
        RecycleSet=MemberSet(Size=0
          )
        )
       
      TcpRing{Connections=[1]}
      IpMonitor{Addresses=0}
       
      2012-08-14 16:15:38.125/35.782 Oracle Coherence GE 12.1.2.0 <D5> (thread=Invocation:Management, member=2): Service Management joined the cluster with
      senior service member 1
      2012-08-14 16:15:38.640/36.297 Oracle Coherence GE 12.1.2.0 <Info> (thread=main, member=2): Loaded Reporter configuration from "jar:file:/C:/oracle/Mi
      ddleware/Oracle_Home/coherence/lib/coherence.jar!/reports/report-group.xml"
      2012-08-14 16:15:40.593/38.250 Oracle Coherence GE 12.1.2.0 <D5> (thread=DistributedCache, member=2): Service DistributedCache joined the cluster with
       senior service member 1
       
      CohQL>
      
  2. キャッシュ・クライアントのCohQLプロンプトで次のコマンドを実行します。これらのコマンドの定義は、『Oracle Fusion Middleware Oracle Coherenceでのアプリケーションの開発』のCoherence問合せ言語に関する項を参照してください。

    • エントリ(キーと値のペア)を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
    
    

    キャッシュ・サーバー・ウィンドウでは、クライアント(member 2)がクラスタから離脱したことを示す、次のようなレスポンスが表示されます。

    2012-08-14 16:57:54.953/5309.438 Oracle Coherence GE 12.1.2.0 <D5> (thread=Cluster, member=1): TcpRing disconnected from Member(Id=2, Timestamp=2012-08-14 16:15:37.687, Address=130.35.99.202:8090, MachineId=18578, Location=site:,machine:tpfaeffl-lap7,process:3796, Role=TangosolCoherenceQueryPlus) due to a peer departure; removing the member.
    2012-08-14 16:57:54.953/5309.438 Oracle Coherence GE 12.1.2.0 <D5> (thread=Cluster, member=1): Member 2 left service Management with senior member 1
    2012-08-14 16:57:54.953/5309.438 Oracle Coherence GE 12.1.2.0 <D5> (thread=Cluster, member=1): Member 2 left service DistributedCache with senior member 1
    2012-08-14 16:57:54.953/5309.438 Oracle Coherence GE 12.1.2.0 <D5> (thread=Cluster, member=1): Member(Id=2, Timestamp=2012-08-14 16:57:54.953, Address=130.35.99.202:8090, MachineId=18578, Location=site:,machine:tpfaeffl-lap7,process:3796, Role=TangosolCoherenceQueryPlus) left Cluster with senior member 1
    
  3. 別の端末ウィンドウを開き、PATH環境変数を、%JAVA_HOME%および%JAVA_HOME%\binを含むように設定します。新しい端末ウィンドウでquery.cmdコマンドを入力して、キャッシュ・クライアントのインスタンスを起動します。

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

    2012-08-14 16:58:01.990/1562.468 Oracle Coherence GE 12.1.2.0 <D5> (thread=Cluster, member=1): Member(Id=3, Timestamp=2012-08-14 16:48:01.85, Address=130.35.99.165:8090, MachineId=18578, Location=site:,machine:tpfaeffl-lap7,process:2804, Role=TangosolCoherenceQueryPlus) joined Cluster with senior member 12012-08-14 16:58:02.256/1562.734 Oracle Coherence GE 12.1.2.0 <D5> (thread=Cluster, member=1): Member 3 joined Service Management with senior member 12012-08-14 16:58:02.740/1563.218 Oracle Coherence GE 12.1.2.0 <D5> (thread=Cluster, member=1): Member 3 joined Service DistributedCache with senior member 1 
    
    CohQL> 
    
  5. 新しい端末ウィンドウでcreate cache "products"コマンドを入力して、productsキャッシュに接続します。ここでは、クラスタがMember 4と入力されています。様々なセッションで値の取得や挿入を行ってみてください。各クライアントは、もう一方のクライアントで行われた変更を監視できます。

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

    CohQL> 2012-08-14 16:56:43.912/714.109 Oracle Coherence GE 12.1.2.0 <D5> (thread=Cluster, member=3): TcpRing disconnected from Member(Id=4, Timestamp=2012-08-14 16:53:08.709, Address=130.35.99.165:8092, MachineId=18578, Location=site:,machine:tpfaeffl-lap7,process:4656, Role=TangosolCoherenceQueryPlus) due to a peer departure; removing the member.2012-08-14 16:56:43.912/714.109 Oracle Coherence GE 12.1.2.0 <D5> (thread=Cluster, member=3): Member 4 left service Management with senior member 12012-08-14 16:56:43.912/714.109 Oracle Coherence GE 12.1.2.0 <D5> (thread=Cluster, member=3): Member 4 left service DistributedCache with senior member 12012-08-14 16:56:43.912/714.109 Oracle Coherence GE 12.1.2.0 <D5> (thread=Cluster, member=3): Member(Id=4, Timestamp=2012-08-14 16:56:43.912, Address=130.35.99.165:8092, MachineId=18578, Location=site:,machine:tpfaeffl-lap7,process:4656, 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を設定します。