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

前
 
次
 

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

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


注意:

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


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

1.1 前提条件

1.2 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.3 Coherenceインストールのテスト

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

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

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

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

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

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

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

localhost/8088+/ユニキャスト

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

localhost / 8089 / Unicast

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

localhost / 7 / Unicast

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


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

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

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

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

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

      set JAVA_HOME=\Oracle\Middleware\Oracle_Home\jdk1.7.0_25
      
    2. PATH環境変数にJAVA_HOME\binを含めます。

      set PATH=%JAVA_HOME%\bin;%PATH%
      
  2. Coherenceがインストールされているフォルダに移動します。

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

    cache-server.cmdファイルを編集して、COHERENCE_HOME環境変数を、Coherenceのインストール・フォルダを指すように設定します。

    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 "jar:file:/C:/Oracle/Middleware/Oracle_Home/coherence/lib/coherence.jar!/tangosol-coherence.xml"

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

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

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

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

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

    C:\Oracle\Middleware\Oracle_Home\coherence\bin>cache-server.cmd
    java version "1.7.0_25"
    Java(TM) SE Runtime Environment (build 1.7.0_25-b17)
    Java HotSpot(TM) 64-Bit Server VM (build 23.25-b01, mixed mode)
    
    2013-11-13 13:34:39.298/1.062 Oracle Coherence 12.1.3.0.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"
    2013-11-13 13:34:39.398/1.162 Oracle Coherence 12.1.3.0.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"
    2013-11-13 13:34:39.398/1.162 Oracle Coherence 12.1.3.0.0 <D5> (thread=main, member=n/a): Optional configuration override "/tangosol-coherence-override.xml" is not specified
    2013-11-13 13:34:39.408/1.172 Oracle Coherence 12.1.3.0.0 <D5> (thread=main, member=n/a): Optional configuration override "cache-factory-config.xml" is not specified
    2013-11-13 13:34:39.408/1.172 Oracle Coherence 12.1.3.0.0 <D5> (thread=main, member=n/a): Optional configuration override "cache-factory-builder-config.xml" is not specified
    2013-11-13 13:34:39.408/1.172 Oracle Coherence 12.1.3.0.0 <D5> (thread=main, member=n/a): Optional configuration override "/custom-mbeans.xml" is not specified
    
    Oracle Coherence Version 12.1.3.0.0 Build 48392
     Grid Edition: Development mode
    Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
    
    2013-11-13 13:34:39.738/1.502 Oracle Coherence GE 12.1.3.0.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"
    2013-11-13 13:34:40.155/1.919 Oracle Coherence GE 12.1.3.0.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"
    2013-11-13 13:34:40.900/2.664 Oracle Coherence GE 12.1.3.0.0 <Info> (thread=main, member=n/a): Created cache factory com.tangosol.net.ExtensibleConfigurableCacheFactory
    2013-11-13 13:34:42.310/4.074 Oracle Coherence GE 12.1.3.0.0 <D4> (thread=main, member=n/a): TCMP bound to /130.35.99.13:8088 using SystemDatagramSocketProvider
    2013-11-13 13:34:46.310/8.074 Oracle Coherence GE 12.1.3.0.0 <Info> (thread=Cluster, member=n/a): Created a new cluster"cluster:0x47DB" with Member(Id=1, Timestamp=2013-11-13 13:34:42.73, Address=130.35.99.13:8088, MachineId=47251, Location=site:,machine:TPFAEFFL-LAP,process:3224, Role=CoherenceServer, Edition=Grid Edition, Mode=Development, CpuCount=4, SocketCount=4)
    2013-11-13 13:34:46.310/8.074 Oracle Coherence GE 12.1.3.0.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=2013-11-13 13:34:42.73, Address=130.35.99.13:8088, MachineId=47251, Location=site:,machine:TPFAEFFL-LAP,process:3224, Role=CoherenceServer)
      OldestMember=Member(Id=1, Timestamp=2013-11-13 13:34:42.73, Address=130.35.99.13:8088, MachineId=47251, Location=site:,machine:TPFAEFFL-LAP,process:3224, Role=CoherenceServer)  ActualMemberSet=MemberSet(Size=1
        Member(Id=1, Timestamp=2013-11-13 13:34:42.73, Address=130.35.99.13:8088, MachineId=47251, Location=site:,machine:TPFAEFFL-LAP,process:3224, Role=CoherenceServer)
        )
      MemberId|ServiceVersion|ServiceJoined|MemberState
        1|12.1.3|2013-11-13 13:34:42.73|JOINED
      RecycleMillis=1200000
      RecycleSet=MemberSet(Size=0
        )
      )
    
    TcpRing{Connections=[]}
    IpMonitor{Addresses=0}
    
    2013-11-13 13:34:46.420/8.184 Oracle Coherence GE 12.1.3.0.0 <D5> (thread=Invocation:Management, member=1): Service Management joined the cluster with senior service member 1
    2013-11-13 13:34:46.520/8.284 Oracle Coherence GE 12.1.3.0.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"
    2013-11-13 13:34:47.052/8.816 Oracle Coherence GE 12.1.3.0.0 <Info> (thread=NameService:TcpAcceptor, member=1): TcpAcceptor now listening for connections on 130.35.99.13:8088.3
    2013-11-13 13:34:47.572/9.336 Oracle Coherence GE 12.1.3.0.0 <D5> (thread=DistributedCache, member=1): Service DistributedCache joined the cluster with senior service member 1
    2013-11-13 13:34:47.612/9.376 Oracle Coherence GE 12.1.3.0.0 <D5> (thread=DistributedCache, member=1): This member has become the distribution coordinator for MemberSet(Size=1
      Member(Id=1, Timestamp=2013-11-13 13:34:42.73, Address=130.35.99.13:8088, MachineId=47251, Location=site:,machine:TPFAEFFL-LAP,process:3224, Role=CoherenceServer)
      )
    
    2013-11-13 13:34:47.652/9.416 Oracle Coherence GE 12.1.3.0.0 <D5> (thread=ReplicatedCache, member=1): Service ReplicatedCache joined the cluster with senior service member 1
    2013-11-13 13:34:47.662/9.426 Oracle Coherence GE 12.1.3.0.0 <D5> (thread=OptimisticCache, member=1): Service OptimisticCache joined the cluster with senior service member 1
    2013-11-13 13:34:47.672/9.436 Oracle Coherence GE 12.1.3.0.0 <D5>(thread=Invocation:InvocationService, member=1): Service InvocationService joined the cluster with senior service member 1
    2013-11-13 13:34:47.672/9.436 Oracle Coherence GE 12.1.3.0.0 <Info> (thread=main, member=1):
    Services
      (
      ClusterService{Name=Cluster, State=(SERVICE_STARTED, STATE_JOINED), Id=0, Version=12.1.3, OldestMemberId=1}
      InvocationService{Name=Management, State=(SERVICE_STARTED), Id=2, Version=12.1.3, 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=4, Version=12.1.3, OldestMemberId=1}
      Optimistic{Name=OptimisticCache, State=(SERVICE_STARTED), Id=5, Version=12.1.3, OldestMemberId=1}
      InvocationService{Name=InvocationService, State=(SERVICE_STARTED), Id=6, Version=12.1.3, 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.3.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_25"
    Java(TM) SE Runtime Environment (build 1.7.0_25-b17)
    Java HotSpot(TM) 64-Bit Server VM (build 23.25-b01, mixed mode)
     
    Coherence Command Line Tool
     
    CohQL>
    

1.3.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"
      2013-11-13 14:00:40.286/219.229 Oracle Coherence 12.1.3.0.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"
      2013-11-13 14:00:40.348/219.291 Oracle Coherence 12.1.3.0.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"
      2013-11-13 14:00:40.348/219.291 Oracle Coherence 12.1.3.0.0 <D5> (thread=main, member=n/a): Optional configuration override "/tangosol-coherence-override.xml" is not specified
      2013-11-13 14:00:40.364/219.307 Oracle Coherence 12.1.3.0.0 <D5> (thread=main, member=n/a): Optional configuration override "cache-factory-config.xml" is not specified
      2013-11-13 14:00:40.364/219.307 Oracle Coherence 12.1.3.0.0 <D5> (thread=main, member=n/a): Optional configuration override "cache-factory-builder-config.xml" is not specified
      2013-11-13 14:00:40.364/219.307 Oracle Coherence 12.1.3.0.0 <D5> (thread=main, member=n/a): Optional configuration override "/custom-mbeans.xml" is not specified
       
      Oracle Coherence Version 12.1.3.0.0 Build 48392
       Grid Edition: Development mode
      Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
       
      2013-11-13 14:00:40.723/219.666 Oracle Coherence GE 12.1.3.0.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"
      2013-11-13 14:00:41.050/219.993 Oracle Coherence GE 12.1.3.0.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"
      2013-11-13 14:00:41.768/220.711 Oracle Coherence GE 12.1.3.0.0 <Info> (thread=main, member=n/a): Created cache factory com.tangosol.net.ExtensibleConfigurableCacheFactory
      2013-11-13 14:00:43.063/222.006 Oracle Coherence GE 12.1.3.0.0 <D4> (thread=main, member=n/a): TCMP bound to /130.35.99.13:8090 using SystemDatagramSocketProvider
      2013-11-13 14:00:43.671/222.614 Oracle Coherence GE 12.1.3.0.0 <Info> (thread=Cluster, member=n/a): Failed to satisfy the variance: allowed=16, actual=31
      2013-11-13 14:00:43.671/222.614 Oracle Coherence GE 12.1.3.0.0 <Info> (thread=Cluster, member=n/a): Increasing allowable variance to 17
      2013-11-13 14:00:44.014/222.957 Oracle Coherence GE 12.1.3.0.0 <D5> (thread=Cluster, member=n/a): Member(Id=1, Timestamp=2013-11-13 13:34:42.73, Address=130.35.99.13:8088, MachineId=47251, Location=site:,machine:TPFAEFFL-LAP,process:3224, Role=CoherenceServer) joined Cluster with senior member 1
      2013-11-13 14:00:44.030/222.989 Oracle Coherence GE 12.1.3.0.0 <Info> (thread=Cluster, member=n/a): This Member(Id=2, Timestamp=2013-11-13 14:00:43.812, Address=130.35.99.13:8090, MachineId=47251, Location=site:,machine:TPFAEFFL-LAP,process:3896, Role=TangosolCoherenceQueryPlus, Edition=Grid Edition, Mode=Development, CpuCount=4, SocketCount=4) joined cluster "cluster:0x47DB" with senior Member(Id=1, Timestamp=2013-11-13 13:34:42.73, Address=130.35.99.13:8088, MachineId=47251, Location=site:,machine:TPFAEFFL-LAP,process:3224, Role=CoherenceServer, Edition=Grid Edition, Mode=Development, CpuCount=4, SocketCount=4)
      2013-11-13 14:00:44.186/223.129 Oracle Coherence GE 12.1.3.0.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=2013-11-13 14:00:43.812, Address=130.35.99.13:8090, MachineId=47251, Location=site:,machine:TPFAEFFL-LAP,process:3896, Role=TangosolCoherenceQueryPlus)
        OldestMember=Member(Id=1, Timestamp=2013-11-13 13:34:42.73, Address=130.35.99.13:8088, MachineId=47251, Location=site:,machine:TPFAEFFL-LAP,process:3224, Role=CoherenceServer)
        ActualMemberSet=MemberSet(Size=2
          Member(Id=1, Timestamp=2013-11-13 13:34:42.73, Address=130.35.99.13:8088, MachineId=47251, Location=site:,machine:TPFAEFFL-LAP,process:3224, Role=CoherenceServer)
          Member(Id=2, Timestamp=2013-11-13 14:00:43.812, Address=130.35.99.13:8090, MachineId=47251, Location=site:,machine:TPFAEFFL-LAP,process:3896, Role=TangosolCoherenceQueryPlus)
          )
        MemberId|ServiceVersion|ServiceJoined|MemberState
          1|12.1.3|2013-11-13 13:34:42.73|JOINED,
          2|12.1.3|2013-11-13 14:00:43.812|JOINED
        RecycleMillis=1200000
        RecycleSet=MemberSet(Size=0
          )
        )
       
      TcpRing{Connections=[1]}
      IpMonitor{Addresses=0}
      
      2013-11-13 14:00:44.248/223.191 Oracle Coherence GE 12.1.3.0.0 <D5> (thread=Invocation:Management, member=2): Service Management joined the cluster with senior service member 12013-11-13 14:00:44.264/223.207 Oracle Coherence GE 12.1.3.0.0 <Info> (thread=main, member=2): Loaded Reporter configuration from "jar:file:/C:/Oracle/Middleware/Oracle_Home/coherence/lib/coherence.jar!/reports/report-group.xml"2013-11-13 14:00:44.685/223.628 Oracle Coherence GE 12.1.3.0.0 <Info> (thread=NameService:TcpAcceptor, member=2): TcpAcceptor now listening for connections on 130.35.99.13:8090.32013-11-13 14:00:45.138/224.081 Oracle Coherence GE 12.1.3.0.0 <D5> (thread=DistributedCache, member=2): Service DistributedCache joined the cluster with senior service member 1CohQL>
      
  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)がクラスタから離脱したことを示す、次のようなレスポンスが表示されます。

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

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

    2013-11-13 14:15:24.217/27.307 Oracle Coherence GE 12.1.3.0.0 <D5> (thread=Invocation:Management, member=3): Service Management joined the cluster with senior service member 1
    2013-11-13 14:15:24.248/27.338 Oracle Coherence GE 12.1.3.0.0 <Info> (thread=main, member=3): Loaded Reporter configuration from "jar:file:/C:/Oracle/Middleware/Oracle_Home/coherence/lib/coherence.jar!/reports/report-group.xml"
    2013-11-13 14:15:24.654/27.744 Oracle Coherence GE 12.1.3.0.0 <Info> (thread=NameService:TcpAcceptor, member=3): TcpAcceptor now listening for connections on 130.35.99.13:8090.3
    2013-11-13 14:15:25.106/28.196 Oracle Coherence GE 12.1.3.0.0 <D5> (thread=DistributedCache, member=3): Service DistributedCache joined the cluster with senior service member 1
    
    CohQL> 
    
  5. 新しい端末ウィンドウでcreate cache "products"コマンドを入力して、productsキャッシュに接続します。ここでは、クラスタがMember 4と入力されています。様々なセッションで値の取得や挿入を行ってみてください。各クライアントは、もう一方のクライアントで行われた変更を監視できます。

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

    2013-11-13 14:23:54.085/537.175 Oracle Coherence GE 12.1.3.0.0 <D5> (thread=Cluster, member=3): TcpRing disconnected from Member(Id=4, Timestamp=2013-11-13 14:22:39.583, Address=130.35.99.13:8092, MachineId=47251, Location=site:,machine:TPFAEFFL-LAP,process:5540, Role=TangosolCoherenceQueryPlus) due to a peer departure; removing the member.
    2013-11-13 14:23:54.085/537.175 Oracle Coherence GE 12.1.3.0.0 <D5> (thread=Cluster, member=3): Member(Id=4, Timestamp=2013-11-13 14:23:54.085, Address=130.35.99.13:8092, MachineId=47251, Location=site:,machine:TPFAEFFL-LAP,process:5540, Role=TangosolCoherenceQueryPlus) left Cluster with senior member 1
    2013-11-13 14:23:54.085/537.175 Oracle Coherence GE 12.1.3.0.0 <D5> (thread=Invocation:Management, member=3): Member 4 left service Management with senior member 1
    2013-11-13 14:23:54.085/537.175 Oracle Coherence GE 12.1.3.0.0 <D5> (thread=DistributedCache, member=3): Member 4 left service DistributedCache 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.3.5 キャッシュ・サーバーのクラスタリングのトラブルシューティング

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


注意:

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


1.3.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.3.5.2 Coherenceを自分のホストに制限するための詳細な手順

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

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

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

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

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

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

1.4 Coherenceのexamples.zipファイルの概要

Coherenceディストリビューションは、このチュートリアルにある多くのサンプルを含むexamples.zipファイルを提供しています。それによって、Coherenceの多くのキャッシュ・アクセス、処理およびセキュリティ機能が示されます。サンプルは、コマンド行からビルドおよび実行するよう設計されています。サンプルの出力は、標準出力(stdout)に送られます。

付録A「examples.zipファイル内のCoherenceのサンプル」は、サンプルのビルドおよび実行について説明しています。また、examples.zipファイル内のコードについての最低限必要なドキュメントも提供します。コードの詳細は、個別のコード・ファイル内にコメントとして埋め込まれています。

examples.zipファイル内のサンプルとこのチュートリアルのサンプルには、多くの違いがあります。

coherence_version.jarまたはwls_version.jarファイルでCoherenceの完全なインストールを実行することによって、examples.zipファイルを入手できます。

すでにサンプルなしでCoherenceをインストールしている場合は、coherence_quick_supp_version.jarサプリメンタル・インストーラ・ファイルを実行することでexamples.zipファイルを入手できます。サプリメンタル・インストーラには、APIのドキュメントおよびサンプルのみが含まれます。

coherence_quick_version.jarクイック・インストーラはサンプルをインストールしないことに注意してください。