この章では、Oracle JDeveloper Studio Edition 11gおよびOracle Coherenceリリース3.6を実行するための環境をインストールおよび設定する方法について説明します。この章は次の項で構成されています。
この章は、Oracleユーザーとしてソフトウェアをインストールし、システム環境変数を設定する権限を持ち、環境変数の設定やディレクトリの作成および移動など、端末ウィンドウの使用方法を理解しているユーザーを対象としています。また、Java SE(JDK)バージョン1.6以降をインストールし、実行していると想定しています。
さらに、XP、Vista、2000、2003または2008のいずれかのMicrosoft Windowsオペレーティング・システムを実行していることを前提としています。
Oracle Coherenceをダウンロードしてインストールする手順は次のとおりです。
Oracle Coherenceをデスクトップにダウンロードします。
Coherence(Java Edition)は、1個のzipファイル(通常はcoherence-<
バージョン>.zip
という名前)で提供されています。Coherenceは、次のURLで入手できます。
http://www.oracle.com/technology/products/coherence/index.html
zipファイルの内容を、C:\oracle\product
というディレクトリに抽出します。
このzipファイルには、次のサブディレクトリを含むcoherenceディレクトリが含まれています。
bin
: コマンド・スクリプトを格納
doc
: 製品のドキュメントを格納
lib
: 必要なライブラリ・ファイルを格納
Oracle JDeveloper Studio Edition 11gをダウンロードしてインストールする手順は次のとおりです。
Oracle JDeveloper Studioをダウンロードします。
JDeveloper Studio 11gは、次のURLで入手できます。
JDeveloper Studioインストーラを実行します。
JDeveloperの起動時にユーザー・ロールを指定するように指示されたら、「デフォルトのロール」を選択してすべてのテクノロジを有効にします。
インストール画面の指示に従います。Middlewareホームを指定するように指示されたら、C:\oracle\product
と入力します。
この演習では、現在のCoherenceインストールでJavaの複数のプロセスをクラスタ化できるかどうかをテストします。これにより、Coherenceに付随しているCoherenceベースのアプリケーションが期待どおりに実行されることを確認できます。単一マシンでのクラスタ化ができない場合は、ネットワークおよびファイアウォールの設定を再構成する必要があります。
この演習では、Oracle Coherence(Java Edition)リリース3.6をインストール済であると想定しています(「Coherenceのダウンロードおよびインストール」を参照)。
Coherenceでは、様々なネットワーク・アドレスおよびポートを使用して、クラスタ化されたプロセス間の通信を可能にしています。これらのアドレスやポートが、他のアプリケーションで使用されているため、またはファイアウォールが原因で使用できない場合、Coherenceは信頼性がなくなったり、クラスタ化に失敗したり、まったく動作しなかったりすることがあります。デフォルトで、Coherenceでは、表1-1に示すネットワーク・アドレスおよびポートが使用可能であると想定されています。
表1-1 Coherenceで使用するネットワーク・アドレスおよびポート
アドレス/ポート/タイプ | 目的 |
---|---|
|
クラスタ・メンバーの検出およびブロードキャスト。変数versionは、Coherenceのリリース・バージョンを表します。たとえば、3.6.0.0リリースのマルチキャスト・アドレスは |
|
クラスタ・メンバー間のプロセス間通信( |
Coherenceには2つの単純なコマンドライン(シェルベース)アプリケーションが付随しており、Coherenceが正常に動作するかどうかを確認できます。
キャッシュ・サーバーは、クラスタ内の他のアプリケーションのかわりにデータをホストして管理する、単純なアプリケーションです。
キャッシュ・クライアントは、クラスタ内にキャッシュされたデータに対して、開発者がアクセス、処理および更新を行うことのできる、単純なアプリケーションです。また、クラスタに関する情報も提供されます。1つのホストまたは複数のホストでこれらのアプリケーションを実行することにより、Coherenceがローカルまたはネットワークで正常に動作しているかどうかを確認できます。
アプリケーションがCoherenceを出荷状態のまま使用すると、Coherenceのキャッシュに配置されるオブジェクトは通常、アプリケーション内でインプロセスで格納および管理されます。ただし、オブジェクトの可用性を向上させるために、Coherenceでは、インメモリーで、アプリケーション・プロセス外でオブジェクトを管理できます。これにより、(故意か偶然かにかかわらず)アプリケーションが停止した場合でも、オブジェクトは失われません。この方法でオブジェクトを管理するために、Coherenceではキャッシュ・サーバーを使用します。Coherenceのキャッシュ・サーバーの目的は、アプリケーション・プロセス外のクラスタでアプリケーションの状態を管理することです。これはデータベース・サーバーによく似ていますが、記憶域は不要です。
次の手順に従い、サンプル・キャッシュ・サーバー・アプリケーションを設定および実行します。
端末ウィンドウを開き、PATH
環境変数がJava JDK(たとえば、\oracle\product\jdk160_14_R27.6.5-32\bin
)を含むように設定されていることを確認します。PATH
環境変数にJDKの\bin
ディレクトリが含まれていない場合は、変数を次のように設定します。
JAVA_HOME
環境変数をJDKインストールのベースに設定します。
set JAVA_HOME=\oracle\product\jdk160_14_R27.6.5-32
PATH
環境変数にJAVA_HOME\bin
を含めます。
set PATH=%JAVA_HOME%\bin;%PATH%
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
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つ開きます。
PATH
環境変数が%JAVA_HOME%\bin
を含むように設定されていることを確認します。PATH
環境変数に%JAVA_HOME%\binが含まれていない場合は、手順1に示したように変数を設定します。
\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
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 (?):
様々なコマンドを入力して出力を調べることにより、キャッシュ・クライアント・アプリケーションの演習を行います。
キャッシュ・クライアントで次の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):
キャッシュ・クライアントの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>
端末ウィンドウをもう1つ開き、%JAVA_HOME
%
および%JAVA_HOME%\bin
を含めるようにPATH
環境変数を設定します(手順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
新しい端末ウィンドウでcache myCache
コマンドを使用して、myCache
という名前のNamedCache
に接続します。様々なセッションで値の取得と入力を行うと、各クライアントが他のクライアントで行われた変更を監視できることがわかります。
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
それぞれのキャッシュ・クライアントを終了し(bye
)、その後再起動しても、前回のセッションのデータは引き続き使用可能です。これは、データがキャッシュ・サーバーに保持されているためです。
別のCoherenceキャッシュ・サーバーを起動してから、([Ctrl]
+[C]
を使用するか、またはコマンド・ウィンドウを閉じて)最初に起動したキャッシュ・サーバーを終了した場合、データは引き続き使用できます。
coherence.cmd
シェルとcache-server.cmd
シェルの両方を終了します。coherence.cmd
を再起動します。cache
test
コマンドを使用して、test
という名前のNamedCache
を作成します。これまでと同様に値を入力して結果を確認します。
coherence\bin
ディレクトリからcache-server.cmd
ファイルを実行してキャッシュ・サーバーを起動します。再度値を入力して結果を確認します。
すべてのキャッシュ・サーバーを終了します。
cache-server.cmd
出力のメンバーIDの値が1以外の場合、このキャッシュ・サーバーが、Coherenceの実行を処理している1つ以上の他のキャッシュ・サーバーまたはプロセスとともにクラスタ化されていることが示されます。これらのサーバーやプロセスは、ネットワーク上で実行されている場合もあれは、同じホスト上でローカルで実行されている場合もあります。Coherenceをローカルで、またはネットワーク上で実行している他のプロセスとともにクラスタ化することはCoherenceのデフォルトの動作ですが、このチュートリアルの実行中は、Coherenceを自分のホストに制限することを強くお薦めします。
cache-server.cmd
の出力は、クラスタ内のメンバーが1のみかどうかを示します。メンバーIDの値は1とします。
...
In MasterMemberSet
ThisMember=Member(Id should be equal to 1
)
...
メンバーIDが1より大きい場合は、サブネット内に複数のクラスタが形成されています。このドキュメントの演習では、クラスタ内のメンバーは1つのみにする必要があります。
Coherenceを自分のホストに制限する手順は次のとおりです。
[Ctrl
]を押しながら[C
]を押してキャッシュ・サーバーを停止します。
oracle\product\coherence\lib
の下にbackup
というディレクトリを作成します。
cd C:\oracle\product\coherence\lib mkdir backup
coherence.jar
を、oracle\product\coherence\lib
ディレクトリからbackup
ディレクトリにコピーします。
cp coherence.jar C:\oracle\product\coherence\lib\backup\coherence.jar
lib
ディレクトリの元のcoherence.jar
から、tangosol-coherence.xml
を抽出します。
jar -xvf coherence.jar tangosol-coherence.xml
tangosol-coherence.xml
ファイルを編集します。
マルチキャスト・リスナー・ポートを一意の値(例、34408
)に変更します。たとえば、ポート値34407
を別のユーザーと共有している場合は、自分のポート値を34408
に変更すると、もう1人のユーザーは34409
に変更できます。
例1-7に、元のポート値が34407
であるtangosol-coherence.xml
のmulticast-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>
Javaのjar
コマンドまたはお好みの圧縮ユーティリティを使用して、変更したtangosol-coherence.xml
ファイルをcoherence.jar
に追加します。
cache-server.cmd
を実行すると、変更したポートを表示できるようになります。また、クラスタが自分のホストに制限されます。メンバーIDに引き続き1
以外が表示される場合は、インストールに他の問題がある可能性があります。「Coherenceを自分のホストに制限するための詳細手順」を参照してください。
前項の手順実行後もcache-server.cmd
から返されるメンバーIDの値が1以外になる場合は、他にも解決の必要な問題がある可能性があります。
ネットワークから切断するか、またはホスト上でネットワークを無効にします。キャッシュ・サーバーの起動時にエラーや例外が発生する場合は、ネットワークの設定に変更が必要な可能性があります。次の手順を1つずつ、そのたびにキャッシュ・サーバーを再起動して実行します。
VPNに接続している場合は切断します。デフォルトでは、ほとんどのVPNネットワークは、マルチキャスト・トラフィックおよび一部のユニキャスト・トラフィックを許可しないように構成されています。この環境では、Coherenceは出荷状態のままで動作しない場合があります。VPNで動作するようにCoherenceを構成することもできますが、これには高度な設定がいくつか必要です。
ファイアウォールを実行している場合は、指定したアドレスおよびポートを許可するように構成します。
まだ問題が発生する場合は、プラグを抜くか、またはすべてのネットワークから切断します。これには、無線および有線のネットワークが含まれます。
前述のオプションがすべて失敗した場合は、単一のホストで実行されるようにCoherenceを設定します。