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

戻る
戻る
 
次へ
次へ
 

1 CoherenceとJDeveloperのインストール

この章では、Oracle JDeveloper Studio Edition 11gおよびOracle Coherenceリリース3.6を実行するための環境をインストールおよび設定する方法について説明します。この章は次の項で構成されています。

この章は、Oracleユーザーとしてソフトウェアをインストールし、システム環境変数を設定する権限を持ち、環境変数の設定やディレクトリの作成および移動など、端末ウィンドウの使用方法を理解しているユーザーを対象としています。また、Java SE(JDK)バージョン1.6以降をインストールし、実行していると想定しています。

さらに、XP、Vista、2000、2003または2008のいずれかのMicrosoft Windowsオペレーティング・システムを実行していることを前提としています。

1.1 Coherenceのダウンロードおよびインストール

Oracle Coherenceをダウンロードしてインストールする手順は次のとおりです。

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

    Coherence(Java Edition)は、1個のzipファイル(通常はcoherence-<バージョン>.zipという名前)で提供されています。Coherenceは、次のURLで入手できます。

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

  2. zipファイルの内容を、C:\oracle\productというディレクトリに抽出します。

    このzipファイルには、次のサブディレクトリを含むcoherenceディレクトリが含まれています。

    • bin: コマンド・スクリプトを格納

    • doc: 製品のドキュメントを格納

    • lib: 必要なライブラリ・ファイルを格納

1.2 JDeveloperのダウンロードおよびインストール

Oracle JDeveloper Studio Edition 11gをダウンロードしてインストールする手順は次のとおりです。

  1. Oracle JDeveloper Studioをダウンロードします。

    JDeveloper Studio 11gは、次のURLで入手できます。

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

  2. JDeveloper Studioインストーラを実行します。

    JDeveloperの起動時にユーザー・ロールを指定するように指示されたら、「デフォルトのロール」を選択してすべてのテクノロジを有効にします。

    インストール画面の指示に従います。Middlewareホームを指定するように指示されたら、C:\oracle\productと入力します。

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

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

この演習では、Oracle Coherence(Java Edition)リリース3.6をインストール済であると想定しています(「Coherenceのダウンロードおよびインストール」を参照)。

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

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

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

224.version / version / Multicast

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

localhost/8088+/Unicast

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


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

  1. サンプル・キャッシュ・サーバー・アプリケーションの構成および実行

  2. サンプル・キャッシュ・クライアント・アプリケーションの構成および実行

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

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

1.3.1 サンプル・キャッシュ・サーバー・アプリケーションの構成および実行

次の手順に従い、サンプル・キャッシュ・サーバー・アプリケーションを設定および実行します。

  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のバージョン番号

    • 構成ファイルのロード方法に関する情報。デフォルトはJARからのロードです。Loaded operational configuration from resource "jar:file:/C:/oracle/product/coherence/lib/coherence.jar!/tangosol-coherence.xml"

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

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

    • マルチキャスト・アドレス。このアドレスは、Coherenceのバージョンごとに変わります。Coherenceリリース3.6のアドレスでは3.6.0です。Group{Address=224.3.6.0, Port=36000, 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)
     
    2010-05-26 14:00:10.531/0.891 Oracle Coherence 3.6.0.0 DPR3 <Info> (thread=main, member=n/a): Loaded operational configuration from "jar:file:/C:/oracle/product/coherence/lib/coherence.jar!/tangosol-coherence.xml"
    2010-05-26 14:00:10.546/0.906 Oracle Coherence 3.6.0.0 DPR3 <Info> (thread=main, member=n/a): Loaded operational overrides from "jar:file:/C:/oracle/product/coherence/lib/coherence.jar!/tangosol-coherence-override-dev.xml"
    2010-05-26 14:00:10.546/0.906 Oracle Coherence 3.6.0.0 DPR3 <D5> (thread=main, member=n/a): Optional configuration override "/tangosol-coherence-override.xml" is not specified
    2010-05-26 14:00:10.562/0.922 Oracle Coherence 3.6.0.0 DPR3 <D5> (thread=main, member=n/a): Optional configuration override "/custom-mbeans.xml" is not specified
     
    Oracle Coherence Version 3.6.0.0 DPR3 Build 16141
     Grid Edition: Development mode
    Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
     
    2010-05-26 14:00:11.109/1.469 Oracle Coherence GE 3.6.0.0 DPR3 <Info> (thread=main, member=n/a): Loaded cache configuration from "jar:file:/C:/oracle/
    product/coherence/lib/coherence.jar!/coherence-cache-config.xml"
    2010-05-26 14:00:11.718/2.078 Oracle Coherence GE 3.6.0.0 DPR3 <D4> (thread=main, member=n/a): SystemSocketProvider bound to port 8088
    2010-05-26 14:00:15.312/5.672 Oracle Coherence GE 3.6.0.0 DPR3 <Info> (thread=Cluster, member=n/a): Created a new cluster "cluster:0xC4DB" with Member(Id=1, Timestamp=2010-05-26 14:00:11.734, Address=130.35.99.213:8088, MachineId=49877, Location=site:us.oracle.com,machine:tpfaeffl-lap7,process:5588,
     Role=CoherenceServer, Edition=Grid Edition, Mode=Development, CpuCount=2, SocketCount=1) UID=0x822363D500000128D66A5256C2D51F98
    2010-05-26 14:00:15.328/5.688 Oracle Coherence GE 3.6.0.0 DPR3 <Info> (thread=main, member=n/a): Started cluster Name=cluster:0xC4DB
     
    Group{Address=224.3.6.0, Port=36000, TTL=4}
     
    MasterMemberSet
      (
      ThisMember=Member(Id=1, Timestamp=2010-05-26 14:00:11.734, Address=130.35.99.213:8088, MachineId=49877, Location=site:us.oracle.com,machine:tpfaeffl-lap7,process:5588, Role=CoherenceServer)
      OldestMember=Member(Id=1, Timestamp=2010-05-26 14:00:11.734, Address=130.35.99.213:8088, MachineId=49877, Location=site:us.oracle.com,machine:tpfaeffl-lap7,process:5588, Role=CoherenceServer)
      ActualMemberSet=MemberSet(Size=1, BitSetCount=2
        Member(Id=1, Timestamp=2010-05-26 14:00:11.734, Address=130.35.99.213:8088, MachineId=49877, Location=site:us.oracle.com,machine:tpfaeffl-lap7,process:5588, Role=CoherenceServer)
        )
      RecycleMillis=1200000
      RecycleSet=MemberSet(Size=0, BitSetCount=0
        )
      )
     
    TcpRing{Connections=[]}
    IpMonitor{AddressListSize=0}
     
    2010-05-26 14:00:15.437/5.797 Oracle Coherence GE 3.6.0.0 DPR3 <D5> (thread=Invocation:Management, member=1): Service Management joined the cluster with senior service member 1
    2010-05-26 14:00:15.781/6.141 Oracle Coherence GE 3.6.0.0 DPR3 <D5> (thread=DistributedCache, member=1): Service DistributedCache joined the cluster with senior service member 1
    2010-05-26 14:00:15.859/6.219 Oracle Coherence GE 3.6.0.0 DPR3 <D5> (thread=ReplicatedCache, member=1): Service ReplicatedCache joined the cluster with senior service member 1
    2010-05-26 14:00:15.859/6.219 Oracle Coherence GE 3.6.0.0 DPR3 <D5> (thread=OptimisticCache, member=1): Service OptimisticCache joined the cluster with senior service member 1
    2010-05-26 14:00:15.859/6.219 Oracle Coherence GE 3.6.0.0 DPR3 <D5> (thread=Invocation:InvocationService, member=1): Service InvocationService joined the cluster with senior service member 1
    2010-05-26 14:00:15.859/6.235 Oracle Coherence GE 3.6.0.0 DPR3 <Info> (thread=main, member=1):
    Services
      (
      ClusterService{Name=Cluster, State=(SERVICE_STARTED, STATE_JOINED), Id=0, Version=3.6, 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)
    ...
    

    Member Idが1より大きい場合は、サブネット内に複数のクラスタが形成されています。この演習では、クラスタ内のメンバーは1つのみにする必要があります。「Coherenceを自分のホストに制限」の手順に従って、Coherenceを自分のホストに制限します。

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

次の手順に従い、サンプル・キャッシュ・クライアント・アプリケーションを設定および実行します。

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

    PATH環境変数が%JAVA_HOME%\binを含むように設定されていることを確認します。PATH環境変数に%JAVA_HOME%\binが含まれていない場合は、手順1に示したように変数を設定します。

  2. \oracle\product\coherence\binディレクトリに移動します。coherence.cmdを編集し、COHERENCE_HOME変数を、Coherenceのインストール・ディレクトリを指すように設定します。

    例1-3に、COHERENCE_HOME=\oracle\product\coherenceとなっているcoherence.cmdファイルを示します。

    例1-3 COHERENCE_HOMEを編集したcoherence.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 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" com.tangosol.net.CacheFactory %1
    
    goto exit
    
    :instructions
    
    echo Usage:
    echo   ^<coherence_home^>\bin\coherence.cmd
    goto exit
    
    :exit
    endlocal
    @echo on
    
  3. coherence.cmdファイルを実行してキャッシュ・クライアントを起動します。このアプリケーションでは、Coherence内に構築されている基本的な分散キャッシュ機能が示されます。

    coherence.cmd
    

    例1-4に、キャッシュ・クライアント起動時の出力を示します。出力の次の特徴に注目してください。

    • クライアントはクラスタの2番目のメンバー(サーバーが最初のメンバー): ThisMember=Member(Id=2,...

    • 出力の最後にMap(?)プロンプトが表示される

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

    ** 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)
     
    2010-05-26 14:15:08.187/0.344 Oracle Coherence 3.6.0.0 DPR3 <Info> (thread=main, member=n/a): Loaded operational configuration from "jar:file:/C:/oracle/product/coherence/lib/coherence.jar!/tangosol-coherence.xml"
    2010-05-26 14:15:08.203/0.360 Oracle Coherence 3.6.0.0 DPR3 <Info> (thread=main, member=n/a): Loaded operational overrides from "jar:file:/C:/oracle/product/coherence/lib/coherence.jar!/tangosol-coherence-override-dev.xml"
    2010-05-26 14:15:08.203/0.360 Oracle Coherence 3.6.0.0 DPR3 <D5> (thread=main, member=n/a): Optional configuration override "/tangosol-coherence-override.xml" is not specified
    2010-05-26 14:15:08.203/0.360 Oracle Coherence 3.6.0.0 DPR3 <D5> (thread=main, member=n/a): Optional configuration override "/custom-mbeans.xml" is not specified
     
    Oracle Coherence Version 3.6.0.0 DPR3 Build 16141
     Grid Edition: Development mode
    Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
     
    2010-05-26 14:15:08.859/1.016 Oracle Coherence GE 3.6.0.0 DPR3 <D4> (thread=main, member=n/a): SystemSocketProvider bound to port 8090
    2010-05-26 14:15:10.125/2.282 Oracle Coherence GE 3.6.0.0 DPR3 <Info> (thread=Cluster, member=n/a): This Member(Id=2, Timestamp=2010-05-26 14:15:10.102, Address=130.35.99.213:8090, MachineId=49877, Location=site:us.oracle.com,machine:tpfaeffl-lap7,process:636, Role=CoherenceConsole, Edition=Grid Edition, Mode=Development, CpuCount=2, SocketCount=1) joined cluster "cluster:0xC4DB" with senior Member(Id=1, Timestamp=2010-05-26 14:00:11.734, Address=130.35.99.213:8088, MachineId=49877, Location=site:us.oracle.com,machine:tpfaeffl-lap7,process:5588, Role=CoherenceServer, Edition=Grid Edition, Mode=Development, CpuCount=2, SocketCount=1)
    2010-05-26 14:15:10.187/2.344 Oracle Coherence GE 3.6.0.0 DPR3 <D5> (thread=Cluster, member=n/a): Member 1 joined Service Cluster with senior member 1
     
    2010-05-26 14:15:10.187/2.344 Oracle Coherence GE 3.6.0.0 DPR3 <D5> (thread=Cluster, member=n/a): Member 1 joined Service Management with senior member 1
    2010-05-26 14:15:10.187/2.344 Oracle Coherence GE 3.6.0.0 DPR3 <D5> (thread=Cluster, member=n/a): Member 1 joined Service DistributedCache with senior member 1
    2010-05-26 14:15:10.187/2.344 Oracle Coherence GE 3.6.0.0 DPR3 <D5> (thread=Cluster, member=n/a): Member 1 joined Service ReplicatedCache with senior member 1
    2010-05-26 14:15:10.187/2.344 Oracle Coherence GE 3.6.0.0 DPR3 <D5> (thread=Cluster, member=n/a): Member 1 joined Service OptimisticCache with senior member 1
    2010-05-26 14:15:10.187/2.344 Oracle Coherence GE 3.6.0.0 DPR3 <D5> (thread=Cluster, member=n/a): Member 1 joined Service InvocationService with senior member 1
    2010-05-26 14:15:10.187/2.344 Oracle Coherence GE 3.6.0.0 DPR3 <Info> (thread=main, member=n/a): Started cluster Name=cluster:0xC4DB
     
    Group{Address=224.3.6.0, Port=36000, TTL=4}
     
    MasterMemberSet
      (
      ThisMember=Member(Id=2, Timestamp=2010-05-26 14:15:10.102, Address=130.35.99.213:8090, MachineId=49877, Location=site:us.oracle.com,machine:tpfaeffl-lap7,process:636, Role=CoherenceConsole)
      OldestMember=Member(Id=1, Timestamp=2010-05-26 14:00:11.734, Address=130.35.99.213:8088, MachineId=49877, Location=site:us.oracle.com,machine:tpfaeffl-lap7,process:5588, Role=CoherenceServer)
      ActualMemberSet=MemberSet(Size=2, BitSetCount=2
        Member(Id=1, Timestamp=2010-05-26 14:00:11.734, Address=130.35.99.213:8088, MachineId=49877, Location=site:us.oracle.com,machine:tpfaeffl-lap7,process:5588, Role=CoherenceServer)
        Member(Id=2, Timestamp=2010-05-26 14:15:10.102, Address=130.35.99.213:8090, MachineId=49877, Location=site:us.oracle.com,machine:tpfaeffl-lap7,process:636, Role=CoherenceConsole)
        )
      RecycleMillis=1200000
      RecycleSet=MemberSet(Size=0, BitSetCount=0
        )
      )
     
    TcpRing{Connections=[1]}
    IpMonitor{AddressListSize=0}
     
    2010-05-26 14:15:10.296/2.453 Oracle Coherence GE 3.6.0.0 DPR3 <D5> (thread=Invocation:Management, member=2): Service Management joined the cluster with senior service member 1
     
    Map (?):
    

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

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

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

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

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

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

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

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

      Map (?): cache myCache
      2010-05-26 15:00:09.296/2701.453 Oracle Coherence GE 3.6.0.0 DPR3 <Info> (thread=main, member=2): Loaded cache configuration from "jar:file:/C:/oracle/product/coherence/lib/coherence.jar!/coherence-cache-config.xml"
      2010-05-26 15:00:09.515/2701.672 Oracle Coherence GE 3.6.0.0 DPR3 <D5> (thread=DistributedCache, member=2): Service DistributedCache joined the cluster with senior service member 1
      <distributed-scheme>
        <scheme-name>example-distributed</scheme-name>
        <service-name>DistributedCache</service-name>
        <backing-map-scheme>
          <local-scheme>
            <scheme-ref>example-binary-backing-map</scheme-ref>
          </local-scheme>
        </backing-map-scheme>
        <autostart>true</autostart>
      </distributed-scheme>
       
      Map (myCache):
      
  2. キャッシュ・クライアントのMap(myCache)プロンプトで次のコマンドを実行します。これらのコマンドの定義は、付録A「Coherenceクライアント・アプリケーションのコマンド」を参照してください。

    • get message

    • put message "hello"

    • list

    • size

    • get message

    • put message "second message"

    • get message

    • remove message

    • size

    • get message

    • put message "hi"

    • bye

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

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

    Map (mycache): get message
    null
    
    Map (mycache): put message "hello"
    null
    
    Map (mycache): list
    message = hello
    
    Map (mycache): size
    1
    
    Map (mycache): get message
    hello
    
    Map (mycache): put message "second message"
    hello
    
    Map (mycache): get message
    second message
    
    Map (mycache): remove message
    second message
    
    Map (mycache): size
    0
    
    Map (mycache): get message
    null
    
    Map (mycache): put message "hi"
    null
    
    Map (myCache): bye
    2010-05-26 15:03:28.968/2901.125 Oracle Coherence GE 3.6.0.0 DPR3 <D5> (thread=Invocation:Management, member=2): Service Management left the cluster
    2010-05-26 15:03:28.984/2901.141 Oracle Coherence GE 3.6.0.0 DPR3 <D5> (thread=DistributedCache, member=2): Service DistributedCache left the cluster
    2010-05-26 15:03:29.093/2901.250 Oracle Coherence GE 3.6.0.0 DPR3 <D5> (thread=Cluster, member=2): Service Cluster left the cluster
     
    C:\oracle\product\coherence\bin>
    
  3. 端末ウィンドウをもう1つ開き、%JAVA_HOME%および%JAVA_HOME%\binを含めるようにPATH環境変数を設定します(手順4を参照)。

  4. 新しい端末ウィンドウで、coherence.cmdの2番目のインスタンスを起動します。最初のクライアントを再起動します。端末ウィンドウには、最初のクライアントが実行されている場所を示す次のようなメッセージが表示されます。member 3は2番目のクライアント、Member 4は再起動された最初のクライアントです。

    Map (myCache):
    2010-05-26 15:06:55.671/46.453 Oracle Coherence GE 3.6.0.0 DPR3 <D5> (thread=Cluster, member=3): Member 4 joined Service Management with senior member 1
    
  5. 新しい端末ウィンドウでcache myCacheコマンドを使用して、myCacheという名前のNamedCacheに接続します。様々なセッションで値の取得と入力を行うと、各クライアントが他のクライアントで行われた変更を監視できることがわかります。

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

    Map (myCache):
    2010-05-26 15:20:52.156/317.375 Oracle Coherence GE 3.6.0.0 DPR3 <D5> (thread=Cluster, member=5): MemberLeft announcement from Member(Id=3, Timestamp=2010-05-26 15:06:11.258, Address=130.35.99.213:8090, MachineId=49877, Location=site:us.oracle.com,machine:tpfaeffl-lap7,process:3708, Role=CoherenceConsole)
    2010-05-26 15:20:52.171/317.390 Oracle Coherence GE 3.6.0.0 DPR3 <D5> (thread=Cluster, member=5): Member(Id=3, Timestamp=2010-05-26 15:20:52.171, Address=130.35.99.213:8090, MachineId=49877, Location=site:us.oracle.com,machine:tpfaeffl-lap7,process:3708, Role=CoherenceConsole) left Cluster with senior member 1
    
  7. それぞれのキャッシュ・クライアントを終了し(bye)、その後再起動しても、前回のセッションのデータは引き続き使用可能です。これは、データがキャッシュ・サーバーに保持されているためです。

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

  9. coherence.cmdシェルとcache-server.cmdシェルの両方を終了します。coherence.cmdを再起動します。cache testコマンドを使用して、testという名前のNamedCacheを作成します。これまでと同様に値を入力して結果を確認します。

  10. coherence\binディレクトリからcache-server.cmdファイルを実行してキャッシュ・サーバーを起動します。再度値を入力して結果を確認します。

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

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

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

1.3.4.1 Coherenceを自分のホストに制限

cache-server.cmdの出力は、クラスタ内のメンバーが1のみかどうかを示します。メンバーIDの値は1とします。

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

メンバーIDが1より大きい場合は、サブネット内に複数のクラスタが形成されています。このドキュメントの演習では、クラスタ内のメンバーは1つのみにする必要があります。

Coherenceを自分のホストに制限する手順は次のとおりです。

  1. [Ctrl]を押しながら[C]を押してキャッシュ・サーバーを停止します。

  2. oracle\product\coherence\libの下にbackupというディレクトリを作成します。

    cd C:\oracle\product\coherence\lib
    mkdir backup
    
  3. coherence.jarを、oracle\product\coherence\libディレクトリからbackupディレクトリにコピーします。

    cp coherence.jar C:\oracle\product\coherence\lib\backup\coherence.jar
    
  4. libディレクトリの元のcoherence.jarから、tangosol-coherence.xmlを抽出します。

    jar -xvf coherence.jar tangosol-coherence.xml
    
  5. tangosol-coherence.xmlファイルを編集します。

    マルチキャスト・リスナー・ポートを一意の値(例、34408)に変更します。たとえば、ポート値34407を別のユーザーと共有している場合は、自分のポート値を34408に変更すると、もう1人のユーザーは34409に変更できます。

    例1-7に、元のポート値が34407であるtangosol-coherence.xmlmulticast-listenerフラグメントを示します。

    例1-7 tangosol-coherence.xmlファイルのmulticast-listenerフラグメント

        <multicast-listener>
          <address system-property="tangosol.coherence.clusteraddress">224.3.6.0</address>
          <port system-property="tangosol.coherence.clusterport">36000</port>
    
          <!--
          Note: For production use, this value should be set to the lowest integer
          value that works. On a single server cluster, it should work at "0"; on
          a simple switched backbone, it should work at "1"; on an advanced backbone
          with intelligent switching, it may require a value of "2" or more. Setting
          the value too high can utilize unnecessary bandwidth on other LAN segments
          and can even cause the OS or network devices to disable multicast traffic.
          -->
          <time-to-live system-property="tangosol.coherence.ttl">4</time-to-live>
    
  6. Javaのjarコマンドまたはお好みの圧縮ユーティリティを使用して、変更したtangosol-coherence.xmlファイルをcoherence.jarに追加します。

    cache-server.cmdを実行すると、変更したポートを表示できるようになります。また、クラスタが自分のホストに制限されます。メンバーIDに引き続き1以外が表示される場合は、インストールに他の問題がある可能性があります。「Coherenceを自分のホストに制限するための詳細手順」を参照してください。

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

前項の手順実行後もcache-server.cmdから返されるメンバーIDの値が1以外になる場合は、他にも解決の必要な問題がある可能性があります。

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

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

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

  • まだ問題が発生する場合は、プラグを抜くか、またはすべてのネットワークから切断します。これには、無線および有線のネットワークが含まれます。

  • 前述のオプションがすべて失敗した場合は、単一のホストで実行されるようにCoherenceを設定します。