この章では、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と併用するための構成」を参照してください。 |
この章には次の項が含まれます:
oracle
ユーザーとしてソフトウェアをインストールし、システム環境変数を設定するための権限が必要な他、環境変数の設定、ディレクトリの作成やディレクトリ間の移動など、端末ウィンドウの使用方法を理解している必要があります。
Oracle JDKまたはJRE(バージョン7以上)の作業用インストールが必要です。このチュートリアルでは、Oracle JDK 1.7.0_25を使用します。
また、Microsoft Windowsオペレーティング・システム(XP、Vista、2000、2003、2008、Windows 7のいずれか)を実行している必要があります。
Oracle Coherenceのインストールの詳細は、『Oracle Fusion Middleware Oracle Coherenceでのアプリケーションの開発』のOracle Coherence for Javaのインストールに関する項を参照してください。この章では、Oracle Universal Installerを使用したOracle Coherenceのインストール手順について説明します。このインストーラは、グラフィック・モードとサイレント・モードの両方をサポートします。また、Coherence Quick Installerを使用して、オプションなしでサイレント・インストールを実行するように選択することもできます。
注意: このチュートリアルでは、Oracle Universal Installerのグラフィカル・インタフェースを使用して、 |
Oracle_Home
の下に表示されるcoherence
フォルダには次のサブフォルダが含まれます。
bin
: コマンド・スクリプトが格納されています。
doc
: 製品ドキュメントが格納されています。
examples
: Java、.NETおよびC++プラットフォームのコード例が格納されています。
lib
: 必要なライブラリ・ファイルが格納されています。
plugins
には、CoherenceをMavenビルド・プロセスの一部として統合するために使用されるMavenプラグインが含まれます。
この演習では、現在のCoherenceインストールでJavaプロセスをクラスタ化できるかどうかをテストします。これにより、Coherenceに付属しているCoherenceベースのアプリケーションが予期したとおりに稼働することを確認できます。1 つのマシンでクラスタリングできない場合は、ネットワークとファイアウォールの設定を再構成する必要があります。
この演習を実行するには、Coherence (Java Edition) 12c (12.1.3)がインストールされている必要があります。詳細は、「Coherenceのインストール」を参照してください。
Coherenceでは、クラスタ化されたプロセス間の通信を可能するために、様々なネットワーク・アドレスおよびポートを使用します。他のアプリケーションで使用されているため、またはファイアウォールが原因でこれらのアドレスやポートを使用できない場合、Coherenceは信頼性がなくなったり、クラスタ化に失敗したり、まったく動作しなかったりすることがあります。Coherenceではデフォルトで、表1-1に記載されているネットワーク・アドレスおよびポートが使用可能であると想定しています。
表1-1 Coherenceで使用されるネットワーク・アドレスおよびポート
アドレス/ポート/タイプ | 目的 |
---|---|
|
クラスタ・メンバーの検出およびブロードキャスト。変数versionは、Coherenceのリリース・バージョンを表します。たとえば、12.1.3リリースのマルチキャスト・アドレスは |
|
クラスタ・メンバー間のプロセス間通信。( |
|
ユニキャスト通信に使用される追加ポート。デフォルトでは、先頭のユニキャスト・ポートの次に使用可能なポートとしてこのポートを割り当てます。 |
|
クラスタ・メンバーのハードウェア障害の検出に使用されるIpMonitorコンポーネントのデフォルト・ポートは7です。 |
Coherenceには単純なコマンド行(シェルベース)アプリケーションが2つ付属しており、これらを使用して、Coherenceが正しく動作するかどうかを確認できます。
キャッシュ・サーバーは、クラスタ内の他のアプリケーションのかわりにデータをホストして管理する、単純なアプリケーションです。
キャッシュ・クライアントは、開発者がクラスタ内のキャッシュ・データにアクセスし、処理および更新するための単純なアプリケーションです。また、クラスタに関する情報も提供します。1つのホストまたは複数のホストでこれらのアプリケーションを実行することによって、Coherenceがローカルまたはネットワークで正しく動作しているかどうかを確認できます。
アプリケーションがCoherenceを出荷時の状態で使用すると、Coherenceのキャッシュに格納されたオブジェクトは通常、アプリケーション内でインプロセスで格納および管理されます。ただし、オブジェクトの可用性を向上させるために、Coherenceでは、インメモリーで、アプリケーション・プロセス外でオブジェクトを管理できます。これにより、(故意であるか偶然であるかにかかわらず)アプリケーションが停止した場合でもオブジェクトが失われることはありません。オブジェクトをこのように管理するために、Coherenceではキャッシュ・サーバーを使用します。Coherenceのキャッシュ・サーバーの目的は、アプリケーション・プロセス外のクラスタでアプリケーションの状態を管理することです。これはデータベース・サーバーと同様ですが、記憶域は必要ありません。
サンプル・キャッシュ・サーバー・アプリケーションを設定および実行するには:
端末ウィンドウを開き、PATH
環境変数がJava JDKまたはJRE(例: C:\Oracle\Middleware\Oracle_Home\jdk1.7.0_25\bin
)を含むように設定されていることを確認します。PATH
環境変数にJDKまたはJREの\bin
フォルダが含まれていない場合は、次のように設定してください。
JAVA_HOME
環境変数をJDKまたはJREインストールのベースに設定します。
set JAVA_HOME=\Oracle\Middleware\Oracle_Home\jdk1.7.0_25
PATH
環境変数にJAVA_HOME\bin
を含めます。
set PATH=%JAVA_HOME%\bin;%PATH%
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
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.cmdjava 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 specifiedOracle 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:0x47DBGroup{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
)
...
ThisMember
のId
が1より大きい場合、キャッシュ・サーバーがネットワーク内の既存のクラスタに参加していることを意味します。この演習では、クラスタのメンバーは1つのみである必要があります。「Coherenceを自分のホストに制限する」の手順に従って、Coherenceを自分のホストに制限してください。
サンプル・キャッシュ・クライアント・アプリケーションを設定および実行するには:
キャッシュ・クライアントを起動するために、別の端末ウィンドウを開きます。
PATH
環境変数が%JAVA_HOME%\bin
フォルダを含むように設定されていることを確認します。PATH
環境変数に%JAVA_HOME%\bin
フォルダが含まれていない場合は、「サンプル・キャッシュ・サーバー・アプリケーションの構成と実行」の説明に従って変数を設定してください。
\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 directoryset coherence_home=C:\oracle\Middleware\Oracle_Home\coherence
@rem specify the jline installation directoryset 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
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>
様々なコマンドを入力し、出力を調べることによって、キャッシュ・クライアント・アプリケーションの演習を行います。
キャッシュ・クライアントで次の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>
キャッシュ・クライアントの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
別の端末ウィンドウを開き、PATH
環境変数を、%JAVA_HOME
%
および%JAVA_HOME%\bin
を含むように設定します。新しい端末ウィンドウでquery.cmd
コマンドを入力して、キャッシュ・クライアントのインスタンスを起動します。
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>
新しい端末ウィンドウでcreate
cache
"products"
コマンドを入力して、products
キャッシュに接続します。ここでは、クラスタがMember
4
と入力されています。様々なセッションで値の取得や挿入を行ってみてください。各クライアントは、もう一方のクライアントで行われた変更を監視できます。
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
それぞれのキャッシュ・クライアントを終了し(bye
)、再起動しても、前のセッションのデータは引き続き使用可能です。これは、データがキャッシュ・サーバーに保持されているためです。
別のCoherenceキャッシュ・サーバーを起動し、起動されている最初のサーバーを終了しても([Ctrl]+[C]
キーを使用するか、コマンド・ウィンドウを閉じる)、データは引き続き使用可能です。
query.cmd
シェルとcache-server.cmd
シェルの両方を終了します。query.cmd
を再起動します。コマンドcreate
cache
"test"
を使用して、test
という名前のキャッシュを作成します。これまでと同様に、値をキャッシュに挿入してみてください。キャッシュ・クライアントは記憶域無効モードで起動するように構成されているため、次のようなメッセージが表示されます。
com.tangosol.net.RequestPolicyException: No storage-enabled nodes exist for service DistributedCache
cache-server.cmd
ファイルを実行して、キャッシュ・サーバーを起動します。もう一度、値を挿入してみてください。今度は値が受け付けられます。
すべてのキャッシュ・サーバーを終了します。
cache-server.cmd
の出力のメンバーIDの値が1以外の場合、キャッシュ・サーバーが、Coherenceを実行している1つ以上の他のキャッシュ・サーバーまたはプロセスとともにクラスタ化されていることを示します。これらのサーバーまたはプロセスは、ネットワーク上で実行されている場合もあれば、自分のホスト上でローカルで実行されている場合もあります。Coherenceをローカルまたはネットワークで実行している他のプロセスとともにクラスタ化することはCoherenceのデフォルトの動作ですが、このチュートリアルを実施している間は、Coherenceを自分のホストに制限することを強くお薦めします。
注意: Coherenceを1 つのホストに制限するために、このチュートリアルで使用するキャッシュ・サーバーおよびキャッシュ・クライアントの実行可能ファイルでは、 |
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
「Coherenceを自分のホストに制限する」の手順を実行しても、cache-server.cmd
コマンドから返されるメンバーIDの値が1でない場合は、解決の必要な問題が他にもある可能性があります。
ネットワークから切断するか、ホスト上でネットワークを無効にします。キャッシュ・サーバーの起動時にエラーや例外が発生する場合は、ネットワークの設定の変更が必要である可能性があります。次の手順をそれぞれ1つずつ試し、それぞれの手順が終わるたびにキャッシュ・サーバーを再起動してください。
仮想プライベート・ネットワーク(VPN)に接続している場合は切断します。デフォルトでは、ほとんどのVPNはマルチキャスト・トラフィックおよび一部のユニキャスト・トラフィックを許可しないように構成されています。この環境では、出荷時の構成のままではCoherenceが動作しない場合があります。VPN経由で稼働するようにCoherenceを構成することもできますが、それにはいくつかの高度な設定が必要です。
ファイアウォールを実行している場合は、指定したアドレスおよびポートを使用できるように構成します。
引き続き問題が発生する場合は、すべてのネットワークから切断します。これには、無線ネットワークと有線ネットワークが含まれます。
前述のオプションがすべて失敗した場合は、1つのホストで稼働するようにCoherenceを設定します。
Coherenceディストリビューションは、このチュートリアルにある多くのサンプルを含むexamples.zip
ファイルを提供しています。それによって、Coherenceの多くのキャッシュ・アクセス、処理およびセキュリティ機能が示されます。サンプルは、コマンド行からビルドおよび実行するよう設計されています。サンプルの出力は、標準出力(stdout
)に送られます。
付録A「examples.zipファイル内のCoherenceのサンプル」は、サンプルのビルドおよび実行について説明しています。また、examples.zip
ファイル内のコードについての最低限必要なドキュメントも提供します。コードの詳細は、個別のコード・ファイル内にコメントとして埋め込まれています。
examples.zip
ファイル内のサンプルとこのチュートリアルのサンプルには、多くの違いがあります。
examples.zip
のサンプルは、コマンド行からビルドおよび実行する必要があります。このチュートリアルでは、コードのコンパイルおよび実行にIDEを使用しています。
examples.zip
ファイルのサンプルは、サポートされている全言語(Java、.NETおよびC++)での基本的なCoherenceの機能およびセキュリティの機能の使用方法のデモです。チュートリアルは、Javaの実装のみをカバーしています。
examples.zip
ファイル内のJavaのサンプルは、チュートリアルで説明されているJavaのサンプルのサブセットに過ぎません。
examples.zip
ファイル内のJavaファイルは、このチュートリアルで使用されているファイルと類似しています。多くのインスタンスでは、チュートリアルのコードはデモ用に簡略化されています。
coherence_
version.jar
またはwls_
version.jar
ファイルでCoherenceの完全なインストールを実行することによって、examples.zip
ファイルを入手できます。
すでにサンプルなしでCoherenceをインストールしている場合は、coherence_quick_supp_
version.jar
サプリメンタル・インストーラ・ファイルを実行することでexamples.zip
ファイルを入手できます。サプリメンタル・インストーラには、APIのドキュメントおよびサンプルのみが含まれます。
coherence_quick_
version.jar
クイック・インストーラはサンプルをインストールしないことに注意してください。