6 Coherenceのサンプルの実行
この章の内容は次のとおりです。
- Coherenceのサンプルの概要
Coherenceのサンプルは機能セットにグループ化されます。各機能セットには、主な機能を説明する複数のサンプルが含まれます。 - サンプルの取得
Coherenceのサンプルはcoherence_
version.jar
またはwls_
version.jar
インストーラ・ファイルに含まれます。 - サンプルのビルド方法
Coherenceのサンプルのソース・ファイルは、examples
ディレクトリ内のスクリプトを使用してビルドする必要があります。Java、C++および.NET (C#)プログラム言語のスクリプトが提供されます。 - サンプルの実行方法
Coherenceのサンプルはexamples
ディレクトリ内のスクリプトを使用して実行します。Java、C++および.NET (C#)プログラム言語のスクリプトが提供されます。 - Coherenceの基本機能のサンプル
Coherenceの基本機能のサンプルは、単純化された連絡先情報を追跡するアプリケーションを使用してCoherenceの基本機能の使用方法を説明するサンプルのコレクションです。 - Coherenceのセキュリティのサンプル
Coherenceのセキュリティのサンプルは、Coherenceのセキュリティ機能を使用してアクセス制御を提供する方法を説明するサンプルのコレクションです。 - Coherenceのライブ・イベントのサンプル
Coherenceのライブ・イベントのサンプルは、EntryEvents
、EntryProcessorEvents
およびTransferEvents
を含むCoherenceライブ・イベントの様々なイベント・タイプおよびそれらがどのように処理されるかを示しています。 - Coherence Java 8機能のサンプル
Coherence Java 8機能のサンプルは、Java 8で使用可能な機能を使用したCoherenceの使用方法を示します。サンプルは、Map
インタフェースで導入されたストリーム、ラムダおよびデフォルト・メソッドの使用方法を示します。 - Coherenceの非同期機能のサンプル
これらの非同期サンプルは、AsyncNamedCache
APIを使用して非同期データ・グリッドを実行する方法を示します。 - Coherenceのフェデレーテッド・キャッシュのサンプル
フェデレーテッド・キャッシュのサンプルは、2つのクラスタ、ClusterAおよびClusterBを起動します。クラスタは、フェデレーション・トポロジに構成され、キャッシュされたデータは2つのクラスタ間でアクティブに同期されます。 - Coherence Persistence Example
永続性のサンプルは、キャッシュ・データからディスクへの保存およびリカバリの方法を示します。 - Coherence RESTのサンプル
Coherence RESTサンプルは、Coherence REST APIを使用する基本的な単一のWebベースのアプリケーションの作成方法を示します。サンプルは、Grizzly HTTPサーバーを使用して、クライアントHTTPリクエストを受信します。
Coherenceのサンプルの概要
Coherenceのサンプルは機能セットにグループ化されます。各機能セットには、主な機能を説明する複数のサンプルが含まれます。
基本機能
Coherenceの基本機能のサンプルには、次のものが含まれています。
表6-1 Coherenceの基本機能のサンプル
サンプル名 | 説明 |
---|---|
基本データ・アクセス |
Coherenceデータ・グリッドからデータを取得、挿入および削除します。基本データ・アクセスのサンプルを参照してください。 |
データのロード |
Coherenceデータ・グリッドにサンプル・データをロードします。「ローダーのサンプル」を参照してください。 |
パラレル問合せ |
Coherenceデータ・グリッドの問合せを行います(索引の使用を含む)。「問合せの例」を参照してください。 |
Observable |
Coherenceデータ・グリッド内のデータの変化をリスニングします。「オブザーバのサンプル」を参照してください。 |
処理 |
データ自身がCoherenceデータ・グリッドにある共存データを処理します。「プロセッサのサンプル」を参照してください。 |
問合せ言語 |
Coherenceの問合せ言語の使用方法です。「問合せの例」を参照してください。 |
セキュリティ機能
Coherenceのセキュリティのサンプルには、次のものが含まれています。
表6-2 Coherenceのセキュリティのサンプル
サンプル名 | 説明 |
---|---|
パスワードのサンプル |
Coherenceへのアクセスにパスワードを要求します。「パスワードのサンプル」を参照してください。 |
アクセス制御のサンプル |
簡略化されたロール・ベースのアクセス制御です。アクセス制御のサンプルを参照してください。 |
パスワードIDトランスフォーマ |
必要なパスワードを含むカスタム・セキュリティ・トークンを作成し、プリンシパル名のリストを追加します。パスワードIDトランスフォーマを参照してください。 |
パスワード・アイデンティティ・アサータ |
セキュリティ・トークンに必要なパスワードが含まれることをアサートし、プリンシパル名のリストに基づいてサブジェクトを構成します。パスワード・アイデンティティ・アサータを参照してください。 |
資格が付与されるキャッシュ・サービス |
アクセス制御用にキャッシュ・サービスをラップします。資格が付与されるキャッシュ・サービスを参照してください。 |
資格が付与される起動サービス |
アクセス制御用に起動サービスをラップします。資格が付与される起動サービスを参照してください。 |
資格が付与される名前付きキャッシュ |
アクセス制御用に名前付きキャッシュをラップします。資格が付与される名前付きキャッシュを参照してください。 |
ライブ・イベント
Coherenceのライブ・イベントのサンプルは、Javaプラットフォームのみで使用できます。これには次の機能が含まれます。
表6-3 Coherenceのライブ・イベントのサンプル
サンプル名 | 説明 |
---|---|
EventsExamples |
イベント・タイプで分割された平均経過時間、イベント後と比較したイベント前の例外スローの異なるセマンティクス、および有効になった際のパーティション移動のロギングなどを提供するライブ・イベントの様々な機能を示しています。「EventsExamples」を参照してください。 |
TimedTraceInterceptor |
異なるタイプのイベントに対して、コミット前イベントとコミット後イベントの間のタイミングを提供します。「TimedTraceInterceptor」を参照してください。 |
CantankerousInterceptor |
挿入されるキーに基づいて、コミット前時間またはコミット後時間のどちらかにランタイム例外で応答します。「CantankerousInterceptor」を参照してください。 |
RedistributionInterceptor |
有効化された場合にパーティション・イベントをログに記録します。「RedistributionInterceptor」を参照してください。 |
RedistributionInvocable |
クラスタの様々なメンバーで実行されるアクション可能な3つの状態を定義します。状態とは、RedistributionInterceptorによるロギングの有効化、ロギングの無効化、またはinvocable (RedistributionInvocable)が実行されているJVMの終了です。「RedistributionInvocable」を参照してください。 |
LazyProcessor |
イベントの処理間の実体のない遅延を作成します。「LazyProcessor」を参照してください。 |
Java 8機能
Coherence Java 8のサンプルは、Java 8で導入された機能を使用したCoherenceの使用方法を示します。このサンプルは、Javaプラットフォームのみで使用できます。これには次の機能が含まれます。
表6-4 Coherence Java 8のサンプル
サンプル名 | 説明 |
---|---|
StreamsExample |
|
LambdaExample |
ラムダ式を使用してキャッシュ操作を実行します。「ラムダ」を参照してください。 |
MapDefaultMethodExample |
|
非同期機能
Coherenceの非同期のサンプルは、AsyncNamedCache
インタフェースを使用した非同期処理の使用方法を示します。このサンプルは、Javaプラットフォームのみで使用できます。これには次の機能が含まれます。
表6-5 Coherenceの非同期のサンプル
サンプル名 | 説明 |
---|---|
DataAccessExample |
キャッシュ操作を非同期で実行します。非同期のデータ・アクセスを参照してください。 |
ProcessorExample |
キャッシュ・エントリを非同期で処理します。非同期のエントリ・プロセッサを参照してください。 |
AggregatorExample |
キャッシュ・エントリを非同期で集計します。「非同期のアグリゲータ」を参照してください。 |
フェデレーテッド・キャッシュ
Coherenceのフェデレーテッド・キャッシュのサンプルは、フェデレーテッド・キャッシュの構成方法および使用方法を示します。2つのクラスタが起動し、アクティブ/アクティブ型レプリケーションを使用するように構成されます。これにより、データは一方のクラスタから他方のクラスタにレプリケートできます。クラスタにはGUIが含まれ、クラスタへのデータの挿入またはキャッシュのクリアが可能です。フェデレーテッド・キャッシュのサンプルには、クラスタ参加間のSSLを構成するステップも含まれます。このサンプルは、Javaプラットフォームのみで使用できます。
永続性
Coherenceの永続性のサンプルは、キャッシュからディスクへのコンテンツの保存およびリストアの方法を示します。このサンプルは、Javaプラットフォームのみで使用できます。これには次の機能が含まれます。
表6-6 Coherenceの永続性のサンプル
サンプル名 | 説明 |
---|---|
基本的なスナップショット操作 |
キャッシュからディスクへのコンタクトを持続します。キャッシュを破壊し、ディスクからキャッシュを再ロードします。基本的なスナップショット操作を参照してください。 |
永続性のある通知 |
永続的な通知をサブスクライブして、永続性操作の期間を決定します。「永続性のある通知」を参照してください。 |
パラレルの永続性操作 |
複数のサービスにまたがって、永続性操作をパラレルに実行します。パラレルの永続性操作を参照してください。 |
SFTPアーカイバ |
SFTPを使用してスナップショットを格納および取得するカスタムのスナップショット・アーカイバを作成します。カスタム・アーカイバのスナップショットのアーカイブを参照してください。 |
REST
Coherence RESTのサンプルは、アプリケーションとCoherenceのキャッシュとのHTTPプロトコルを介した相互作用を示します。サンプルでは、Coherenceの機能を実行する単一のwebベースのアプリケーションを使用します。サンプルは、Javaプラットフォームで使用可能で、クライアント側のアプリケーションはJavaScriptを使用して書き込まれます。これには次の機能が含まれます。
表6-7 Coherence RESTのサンプル
サンプル名 | 説明 |
---|---|
製品のサンプル |
キャッシュからのエントリを挿入、編集および削除し、エントリ・プロセッサを使用してエントリを更新します。「「製品」ページ」を参照してください。 |
部門のサンプル |
キャッシュからのエントリを挿入、編集および削除します。「「部門」ページ」を参照してください。 |
連絡先のサンプル |
キャッシュからのエントリを挿入、編集および削除します。キャッシュ内のエントリの問合せ。「「連絡先」ページ」を参照してください。 |
Server-Sent Events |
製品、部門および連絡先のキャッシュにリスナーを追加し、イベントをモニターします。「Server-Sent Events」を参照してください。 |
親トピック: Coherenceのサンプルの実行
サンプルの取得
Coherenceのサンプルはcoherence_
version.jar
またはwls_
version.jar
インストーラ・ファイルに含まれます。
Coherenceのサンプルは、Oracle Universal Installerのインストール・オプションとして表示され、COHERENCE_HOME
/examples
にインストールされます。
coherence_quick_
version.jar
を使用してCoherenceをインストールした場合は、coherence_quick_supp_
version.jar
サプリメンタル・インストーラ・ファイルを実行することでサンプルを入手できます。サプリメンタル・インストーラには、APIのドキュメントおよびサンプルのみが含まれます。coherence_quick_
version.jar
クイック・インストーラ・ファイルはサンプルやAPIのドキュメントをインストールしないことに注意してください。
親トピック: Coherenceのサンプルの実行
サンプルのビルド方法
examples
ディレクトリ内のスクリプトを使用してビルドする必要があります。Java、C++および.NET (C#)プログラム言語のスクリプトが提供されます。
ノート:
C++および.NET用であっても、Javaのサンプルをビルドおよび実行する必要があります。これは、キャッシュ・サーバーはJavaで実行されているためです。
この項では、次の項目について説明します。
Javaサンプルのビルド方法
この項では、次の項目について説明します。
Javaでの前提条件
サンプルをビルドするには、CoherenceおよびJava Development Kit (JDK) 1.8以上が必要です。次の環境変数が設定されていることを確認します。
環境変数 | 説明 |
---|---|
|
|
|
サンプルをビルドする前に、 |
親トピック: Javaサンプルのビルド方法
Javaでのディレクトリ構造
次で説明するディレクトリ構造は、examples
ディレクトリを基準としたものです。
表6-8 Javaでのディレクトリ構造
ディレクトリ名 | 説明 |
---|---|
|
サンプルをビルドおよび実行するスクリプトです。2セットのスクリプトがあります。ファイルの拡張子がないスクリプトは、bashスクリプトです。ファイルの拡張子が
|
|
すべてのサンプルのソースです。サンプルは、 |
|
ビルドによって出力されるクラス・ファイルです。このディレクトリは、ビルド・スクリプトを実行するまで存在しません。 |
|
サンプルに必須の共通Coherence構成ファイルです。 |
|
サンプルが共通構成のかわりとなる構成を必要とする場合、それは自身のディレクトリにあります。セキュリティのサンプルは、 |
|
サンプルのコンパイルおよび実行に使用されるCoherenceライブラリです。 |
親トピック: Javaサンプルのビルド方法
Javaでのビルド手順
サンプル・コレクションの名前を使用してビルド・スクリプトを実行します。
-
bin/build
contacts
-
bin/build
security
-
bin/build
events
-
bin/build java8
-
bin/build async
-
bin/build federation
-
bin/build persistence
スクリプトによってPOFパッケージ・ファイルがビルドされ、次に特定のサンプルのファイルがビルドされます。contacts
サンプルは、他のサンプルで必須で、常に最初にビルドする必要があります。
Windowsでは、ディレクトリを/bin
ディレクトリに変更してからスクリプトを実行します。
親トピック: Javaサンプルのビルド方法
.NETサンプルのビルド方法
この項では、次の項目について説明します。
.NETでの前提条件
サンプルをビルドするには、Coherence for .NETおよびVisual Studio 2008以上またはVisual Studio 2008 Express以上が必要です。「前提条件」を参照してください。
サンプルを実行するには、CoherenceのJavaバージョンおよびJava Development Kit (JDK) 1.8以上が必要です。Coherence*Extendプロキシおよびキャッシュ・サーバーにはJavaが必要であるため、Javaバージョンが必要になります。また、サンプルはプロキシおよびキャッシュ・サーバーを実行する前にビルドする必要があるJavaサンプル・クラスに依存しています。ビルドおよび実行方法の手順は、Javaサンプルのreadme.txt
ファイルを参照してください。
親トピック: .NETサンプルのビルド方法
.NETでのディレクトリ構造
次で説明するディレクトリ構造は、examples
ディレクトリを基準としたものです。
表6-9 .NETでのディレクトリ構造
ディレクトリ名 | 説明 |
---|---|
dotnet\src |
すべてのサンプルのソースです。サンプルは、 サンプルは、Visual Studio 2008のサンプル・ソリューションの中にあります。 サンプルに必須のCoherence構成ファイルです。 |
|
サンプルに必須の共通Coherence構成ファイルです。 |
|
サンプルが共通構成のかわりとなる構成を必要とする場合、それは自身のディレクトリにあります。セキュリティのサンプルは、 |
親トピック: .NETサンプルのビルド方法
.NETでのビルド手順
Visual Studioでexamples\dotnet\src\contacts.csproj
ディレクトリからサンプル・プロジェクトを開く
.NET Framework用のCoherence をインストールする際に、インストーラがアセンブリ・レジストリにcoherence.dll
ライブラリを登録します。含まれているVisual Studioプロジェクトは、デフォルトの場所にあるcoherence.dll
を参照しています。別のバージョンのライブラリが必要な場合、またはデフォルトの場所にインストールされていない場合は、参照を構成する際にCoherence参照がオーバーライドされる可能性があります。local
copy
属性をtrue
に設定していることを確認してください。この設定によって、bin\debug
ディレクトリにある正しいcoherence.dll
がコピーされて登録されます。
Coherence for .NETが構成された後、Visual Studioでメニューから「Build」→「Build Solution」を選択するか、「Build Solution」 (F6)などを選択してソリューションをビルドします。
contacts
サンプルをビルドすると、resource\contacts.csv
がビルド出力ディレクトリ(examples\dotnet\src\bin\Debug
)にコピーされます。
親トピック: .NETサンプルのビルド方法
C++サンプルのビルド方法
この項では、次の項目について説明します。
C++での前提条件
サンプルを実行するには、CoherenceのJavaバージョンおよびJava Development Kit (JDK) 1.8以上が必要です。Coherence*Extendプロキシおよびキャッシュ・サーバーにはJavaが必要であるため、Javaバージョンが必要になります。また、サンプルはプロキシおよびキャッシュ・サーバーを実行する前にビルドする必要があるJavaサンプル・クラスに依存しています。ビルドおよび実行方法の手順は、Javaサンプルのreadme.txt
を参照してください。
次の環境変数が設定されていることを確認します。
環境変数 | 説明 |
---|---|
|
|
|
サンプルをビルドする前に、 |
|
|
親トピック: C++サンプルのビルド方法
C++でのディレクトリ構造
次で説明するディレクトリ構造は、examples
ディレクトリを基準としたものです。
表6-10 C++でのディレクトリ構造
ディレクトリ名 | 説明 |
---|---|
|
サンプルをビルドおよび実行するスクリプトです。ファイルの拡張子がないスクリプトは、bashスクリプトです。ファイルの拡張子が |
|
|
|
|
|
|
|
データ・モデルはこのディレクトリ内に加え、シリアライズされるクラスで表されます。これは、既存のデータ・モデルの使用方法を示し、Coherence内で公開するためです。モデル・クラスにはいかなるCoherence固有のコードも含まれていないことが、この点を立証しています。ただし、各モデル・タイプに関連付けられているシリアライザがあります。たとえば 生成される出力は、動的ライブラリ形式です。 |
|
サンプルに必須の共通Coherence構成ファイルです。 |
|
サンプルが共通構成のかわりとなる構成を必要とする場合、それは自身のディレクトリにあります。セキュリティのサンプルは、 |
|
ビルドによって出力されるオブジェクト・ファイルです。このディレクトリは、ビルド・スクリプトを実行するまで存在しません。 |
|
Coherenceのヘッダー・ファイルが含まれています。 |
|
Coherenceのライブラリが含まれています。 |
親トピック: C++サンプルのビルド方法
C++でのビルド手順
この項の内容は次のとおりです。
WindowsでのC++のビルド手順
開発環境のコマンド・プロンプトを開きます。これは、Visual StudioまたはプラットフォームSDKとともにインストールされているはずです。C++ examples
ディレクトリに移動し、bin\build.cmd <
example name
>
と入力します。これによって、pof
(モデル)およびexample
実行可能ファイルの両方がビルドされます。たとえば、bin\build.cmd
contacts
またはbin\build.cmd
security
と入力します。
モデルは、pof.lib
およびpof.dll
ファイルをcpp\pof\out
の下に配置します。これらは、contacts
およびsecurity
サンプルのビルドおよび実行に必要です。
実行可能ファイルcontacts.exe
は、cpp\contacts\out
ディレクトリに生成されます。実行可能ファイルsecurity.exe
は、cpp\security\out
ディレクトリに生成されます。
contacts
サンプルを実行するには、プロキシ・サーバー、およびキャッシュ・サーバーbin/run-cache-server
を起動してから、bin\run.cmd contacts
と入力します。キャッシュ・サーバーは、プロキシ・サービスを実行し、Coherence*Extendクライアントからの接続が可能になります。
また、任意のコマンド・ウィンドウよりcd
でC++ bin
ディレクトリに移動し、サンプルをビルドする前にvcvars32.bat
を実行することもできます。デフォルトのVisual Studioのインストールでは、bin
ディレクトリはC:\Program Files\Mircorsoft
Visual
Studio
9.0\vc\bin
です。前の手順に従い、build
スクリプトを実行します。
Linux/MacおよびSolarisでのC++のビルド手順
コマンド・シェルを開きます。C++ examples
ディレクトリに移動し、bin/build <
example name
>
と入力します。これによって、pof
(モデル)およびcontacts
サンプル実行可能ファイルの両方がビルドされます。
モデルの動的ライブラリおよびlib
ファイルがcpp/pof/out
に配置されます。これらは、contacts
およびsecurity
サンプルのビルドおよび実行に必要です。
実行可能ファイルであるcontactsが、cpp/contacts/out
またはcpp/security/out
に生成されます。
親トピック: C++サンプルのビルド方法
サンプルの実行方法
Coherenceのサンプルはexamples
ディレクトリ内のスクリプトを使用して実行します。Java、C++および.NET (C#)プログラム言語のスクリプトが提供されます。
ノート:
Coherenceのサンプルはソースとして配布されるため、まずビルドする必要があります。サンプルのビルド方法を参照してください。
この項では、次の項目について説明します。
Javaサンプルの実行方法
この項では、次の項目について説明します。
Javaでの前提条件
サンプルを実行するには、Coherenceをインストールし、現在サポートされているJDKを使用します。「システム要件」を参照してください。
環境変数 | 説明 |
---|---|
|
|
|
サンプルをビルドする前に、 |
親トピック: Javaサンプルの実行方法
Javaでのディレクトリ構造
次で説明するディレクトリ構造は、サンプルを解凍したexamples
ディレクトリを基準としたものです。
表6-11 Javaでのディレクトリ構造
ディレクトリ名 | 説明 |
---|---|
|
サンプルをビルドおよび実行するスクリプトです。2セットのスクリプトがあります。ファイルの拡張子がないスクリプトは、bashスクリプトです。ファイルの拡張子が
|
|
ビルドによって出力されるクラス・ファイルです。このディレクトリは、ビルド・スクリプトを実行するまで存在しません。 |
|
サンプルに必須の共通Coherence構成ファイルです。 |
|
サンプルが共通構成のかわりとなる構成を必要とする場合、それは自身のディレクトリにあります。 |
|
サンプルのコンパイルおよび実行に使用されるCoherenceのライブラリです。 |
|
連絡先サンプルの |
親トピック: Javaサンプルの実行方法
Javaでの手順
run
スクリプトを各サンプルで実行します。
連絡先のサンプル
-
bin/run-cache-server
で1つ以上のキャッシュ・サーバーを起動します。実行するたびにキャッシュ・サーバー・クラスタ・ノードが起動します。ノードを追加するには、新しいコマンド・シェルでコマンドを実行します。 -
新しいコマンド・シェルで、サンプルの名前を使用して
bin/run contacts
を実行します。Driver.main
メソッドがサンプルの機能を実行し、出力はコマンド・ウィンドウ(stdout
)に送られます。
Coherence 12.1.2以上では、新しい問合せ言語機能のサンプルが追加されています。このサンプルは、Coherence InvocationService
を使用する簡単なヘルパー・クラスFilterFactory
の構成および使用方法を示しています。
セキュリティのサンプル
security
サンプルには、プロキシを使用するCoherence*Extendが必要です。
-
bin/run-cache-server security
で1つ以上のキャッシュ・サーバーを起動します。キャッシュ・サーバーは、プロキシ・サービスを実行し、Coherence*Extendクライアントからの接続が可能になります。 -
新しいコマンド・シェルで、サンプルの名前を使用して
bin/run security
を実行します。Driver.main
メソッドがサンプルの機能を実行し、出力はコマンド・ウィンドウ(stdout
)に送られます。
ライブ・イベントのサンプル
-
bin/run-cache-server events
で少なくとも2つのキャッシュ・サーバーを起動します。実行するたびにキャッシュ・サーバー・クラスタ・ノードが起動します。ノードを追加するには、新しいコマンド・シェルでコマンドを実行します。 -
新しいコマンド・シェルで、サンプルの名前を使用して
bin/run events
を実行します。Driver.main
メソッドがサンプルの機能を実行し、出力はコマンド・ウィンドウ(stdout
)に送られます。
Java 8機能のサンプル
-
キャッシュ・サーバー、
bin/run-cache-server
を起動します。 -
新しいコマンド・シェルで、サンプルの名前を使用して
bin/run java8
を実行します。Driver.main
メソッドがサンプルの機能を実行し、出力はコマンド・ウィンドウ(stdout
)に送られます。出力を検証し、src/com/tangosol/examples/java8
のコードを参照します。
非同期機能のサンプル
-
キャッシュ・サーバー、
bin/run-cache-server
を起動します。 -
新しいコマンド・シェルで、サンプルの名前を使用して
bin/run async
を実行します。Driver.main
メソッドがサンプルの機能を実行し、出力はコマンド・ウィンドウ(stdout
)に送られます。出力を検証し、src/com/tangosol/examples/async
のコードを参照します。
フェデレーテッド・キャッシュのサンプル
-
bin/run-cache-server federation ClusterA
を使用して、ClusterAを起動します。 -
新しいコマンド・シェルで、
bin/run-cache-server federation ClusterB
を使用してClusterBを起動します。 -
bin/run federation ClusterA
を実行して、GUIを起動し、ClusterAに接続します。cohql
またはconsole
引数を使用して、CohQLまたはGUIのかわりにコンソールを使用します。 -
bin/run federation ClusterB
を実行して、GUIを起動し、ClusterBに接続します。cohql
またはconsole
引数を使用して、CohQLまたはGUIのかわりにコンソールを使用します。 -
クラスタにオブジェクトを追加し、オブジェクトが別のクラスタにレプリケートされていることを確認します。
-
クラスタからオブジェクトを削除し、オブジェクトが別のクラスタから削除されていることを確認します。
前述のサンプルでは、クラスタ間で標準TCP接続を使用します。サンプルを構成してSSLを使用することもできます。SSLにより、クラスタ間の接続が暗号化され、認証されたクラスタのみが双方向認証を使用して情報を交換できるようになります。
ノート:
SSL構成は、自己署名証明書およびわかりやすいパスワードを使用します。セキュリティのベスト・プラクティスに従って、Coherenceセキュリティ・ドキュメントを参照して本番環境のために構成する必要があります。
SSL構成の要件:
-
各クラスタのキーストアの生成
-
各クラスタのSSL証明書の作成
-
認証されたメンバーのみの接続を許可するトラストストアへの証明書のインポート。
ノート:
Windows環境では、%JAVA_HOME%\bin\keytool
を使用します。
SSLをフェデレーションのサンプルに構成するには:
-
ClusterAおよびClusterBのキーストアを生成します
cd $COHERENCE_HOME/examples/java/classes $JAVA_HOME/bin/keytool -genkeypair -dname "cn=ClusterA, ou=Coherence, o=Oracle, c=US" -alias ClusterA -keypass password -keystore ClusterA-keystore.jks -storepass password $JAVA_HOME/bin/keytool -genkeypair -dname "cn=ClusterB, ou=Coherence, o=Oracle, c=US" -alias ClusterB -keypass password -keystore ClusterB-keystore.jks -storepass password
-
次のようにして、各ストアから証明書をエクスポートします。
$JAVA_HOME/bin/keytool -export -alias ClusterA -storepass password -file ClusterA.cer -keystore ClusterA-keystore.jks $JAVA_HOME/bin/keytool -export -alias ClusterB -storepass password -file ClusterB.cer -keystore ClusterB-keystore.jks
-
両方の証明書を、どのクラスタを接続するかを定義するトラストストアにインポートします。
$JAVA_HOME/bin/keytool -import -v -trustcacerts -alias ClusterA -file ClusterA.cer -keystore trust.jks -storepass password $JAVA_HOME/bin/keytool -import -v -trustcacerts -alias ClusterB -file ClusterB.cer -keystore trust.jks -storepass password
前述の2つに「yes」を入力し、証明書をインポートします。
-
次を使用して、トラストストア内のエントリを検証します。
$JAVA_HOME/bin/keytool -list -keystore trust.jks -storepass password
前述の手順が完了すると、次がclasses
ディレクトリに含まれます。
-
trust.jks
– ClusterAおよびClusterB証明書を含むキーストア -
ClusterA.jks
– ClusterAのプライベート・キーを含キーストア -
ClusterB.jks
– ClusterBのプライベート・キーを含キーストア
サンプルを再実行し、SSL環境変数をコマンド・プロンプト・ウィンドウで設定します。
SET SSL=true
(Windows)
export SSL=true
(Unix)
キャッシュ・サーバー・ログ・ファイルで、接続がtmbs
(TCP Message Bus over SSL)であることを確認します。
Connecting to service FederatedPartitionedPofCache at participant ClusterB with address tmbs://127.0.0.1:56217.39550
ノート:
トラスト・ストアから証明書を削除すると、そのメンバーへの通信が無効化され、無許可の通信がシミュレートされます。
別のサンプルを実行する場合、SSLでのフェデレーションのサンプルの実行が完了したら、SSL環境変数の設定を解除します。
永続性のサンプル
-
bin/run-cache-server persistence
で1つ以上のキャッシュ・サーバーを起動します -
新しいコマンド・シェルで、
bin/run persistence
を使用して、永続性のサンプルを実行します。Driver.main
メソッドがサンプルの機能を実行し、出力はコマンド・ウィンドウ(stdout)に送られます。 -
bin/run persistence notifications
を使用して、通知リスナーを起動します。 -
bin/run persistence
を使用して、永続性のサンプルを実行します。出力に、永続性操作が完了したことが示されます -
CTRL+Cを使用して、通知リスナーを中断します。
-
bin/run persistence parallel
を使用して、永続性パラレルのサンプルを実行します。Driver.main
メソッドがサンプルの機能を実行し、出力はコマンド・ウィンドウ(stdout)に送られます。 -
JSchライブラリ、
jsch-0.1.51.jar
以上をダウンロードし、コンテンツをクラス・ディレクトリに抽出します。 -
bin/build archiver
を使用して、アーカイバのサンプルをビルドします。 -
resource/archiver/tangosol-coherence-override.xml
ファイルを更新し、3番目のパラメータをカスタム・アーカイバに変更して、username
、password
およびpath
をSSHを実行しているマシンの場所に置き換えます。マシンに対してssh等価設定がある場合、パスワードを省略できます。システム・プロパティを使用して、必要に応じ、パスワードを非表示にすることもできます。 -
bin/run archiver
を使用して、アーカイブのサンプルを実行します。 -
リモートのSFTPマシンを検証し、アーカイブ・ディレクトリを確認します。
親トピック: Javaサンプルの実行方法
.NETサンプルの実行方法
この項では、次の項目について説明します。
.NETでの前提条件
サンプルを実行するには、Coherence for .NETおよびVisual Studio 2008以上が必要です。サンプルを実行するには、Javaサンプルをビルドする必要もあります。Coherence*Extendプロキシおよびキャッシュ・サーバーにはJavaが必要であるため、Javaバージョンが必要になります。
また、サンプルはプロキシおよびキャッシュ・サーバーを実行する前にビルドする必要があるJavaサンプル・クラスに依存しています。
親トピック: .NETサンプルの実行方法
.NETでのディレクトリ構造
次で説明するディレクトリ構造は、「examples
」ディレクトリを基準としたものです。
表6-12 .NETでのディレクトリ構造
ディレクトリ名 | 説明 |
---|---|
|
連絡先サンプルの |
親トピック: .NETサンプルの実行方法
.NETでの手順
次の項には、contacts
およびsecurity
サンプルの実行手順が含まれています。
contacts
-
bin/run-cache-server
で1つ以上のキャッシュ・サーバーを起動します。キャッシュ・サーバーは、プロキシ・サービスを実行し、Coherence*Extendクライアントからの接続が可能になります。 -
Visual Studioから
contacts
プロジェクトをデバッグなしで起動するか、コマンド・シェルのビルドで生成されたcontacts.exe
を実行します。Driver.Main
メソッドがサンプルの機能を実行し、出力はコマンド・ウィンドウ(stdout)に送られます。
Coherence 12.1.2以上では、新しい問合せ言語機能の新しいサンプルが統合されました。このサンプルは、Coherence InvocationService
を使用する簡単なヘルパー・クラス「FilterFactory
」の構成および使用方法を示しています。
security
-
java readme.txtの手順に従って、
bin/run-cache-server security
で1つ以上のキャッシュ・サーバーを起動します。キャッシュ・サーバーは、プロキシ・サービスを実行し、Coherence*Extendクライアントからの接続が可能になります。 -
Visual Studioからsecurityプロジェクトをデバッグなしで起動するか、コマンド・シェルのビルドで生成された
contacts.exe
を実行します。Driver.Main
メソッドがサンプルの機能を実行し、出力はコマンド・ウィンドウ(stdout)に送られます。
親トピック: .NETサンプルの実行方法
C++サンプルの実行方法
この項では、次の項目について説明します。
親トピック: サンプルの実行方法
C++での前提条件
サンプルをビルドするには、Coherenceの適切なC++ライブラリが必要です。また、C++開発環境も必要です。サンプルを実行するには、Javaサンプルをビルドする必要もあります。Coherence*Extendプロキシおよびキャッシュ・サーバーにはJavaが必要であるため、Javaバージョンが必要になります。また、サンプルはプロキシおよびキャッシュ・サーバーを実行する前にビルドする必要があるJavaサンプル・クラスに依存しています。
環境変数 | 説明 |
---|---|
|
|
サポートされているC++コンパイラ:
-
Windows—Microsoft Visual C++ Express/Studio 2008以上または同等のプラットフォームSDK
-
Linux—g++ 4.0
-
Mac—g++ 4.0
親トピック: C++サンプルの実行方法
C++でのディレクトリ構造
次で説明するディレクトリ構造は、examples
ディレクトリを基準としたものです。
表6-13 C++でのディレクトリ構造
ディレクトリ名 | 説明 |
---|---|
|
サンプルをビルドおよび実行するスクリプトです。ファイルの拡張子がないスクリプトは、bashスクリプトです。ファイルの拡張子が
|
|
|
|
ビルドによって出力されるオブジェクト・ファイルです。このディレクトリは、ビルド・スクリプトを実行するまで存在しません。 |
|
contactsのLoaderExampleに使用するデータ・ファイルcontacts.csvです。 |
|
|
|
|
|
|
|
Coherenceのヘッダー・ファイルが含まれています。 |
|
Coherenceのライブラリが含まれています。 |
親トピック: C++サンプルの実行方法
C++での手順
run
スクリプトを実行します。サンプルの実行は、2つの部分から構成されています。新しいコマンド・シェルから次を実行します。
連絡先のサンプル
-
bin/run-cache-server
で1つ以上のキャッシュ・サーバーを起動します。キャッシュ・サーバーは、プロキシ・サービスを実行し、Coherence*Extendクライアントからの接続が可能になります。 -
新しいコマンド・シェルで、runにサンプルの名前を付けて実行します。
連絡先サンプルをWindowsで実行する場合:
bin\run.cmd
contacts
と入力連絡先サンプルをLinux/MacおよびSolarisで実行する場合:
bin/run
contacts
と入力Driver.main
メソッドがサンプルの機能を実行し、出力はコマンド・ウィンドウ(stdout
)に送られます。
Coherence 12.1.2以上では、新しい問合せ言語機能のサンプルが追加されています。このサンプルは、Coherence InvocationService
を使用する簡単なヘルパー・クラスFilterFactory
の構成および使用方法を示しています。
セキュリティのサンプル
-
bin/run-cache-server security
で1つ以上のキャッシュ・サーバーを起動します。キャッシュ・サーバーは、プロキシ・サービスを実行し、Coherence*Extendクライアントからの接続が可能になります。 -
新しいコマンド・シェルで、
run
にサンプルの名前を付けて実行します。セキュリティ・サンプルをWindowsで実行する場合:
bin\run.cmd
security
と入力セキュリティ・サンプルをLinux/MacおよびSolarisで実行する場合:
bin/run
security
と入力Driver.main
メソッドがサンプルの機能を実行し、出力はコマンド・ウィンドウ(stdout
)に送られます。
親トピック: C++サンプルの実行方法
Coherenceの基本機能のサンプル
Coherenceの基本機能のサンプルは、単純化された連絡先情報を追跡するアプリケーションを使用してCoherenceの基本機能の使用方法を説明するサンプルのコレクションです。
この項には次のトピックが含まれます:
- 基本機能のサンプルの概要
- サンプル・セットの実行
- 機能ドライバ・ファイルの理解
- 基本データ・アクセスのサンプル
- ローダーのサンプル
- 問合せの例
- オブザーバのサンプル
- プロセッサのサンプル
- 問合せ言語
- データ・ジェネレータ
親トピック: Coherenceのサンプルの実行
基本機能のサンプルの概要
Coherenceの基本機能のサンプルには、次のものが含まれています。
-
基本データ・アクセスのサンプル—Coherenceデータ・グリッドからデータを取得、挿入および削除します。
-
ローダーのサンプル—Coherenceデータ・グリッドへサンプル・データをロードします。
-
問合せの例—Coherenceデータ・グリッドの問合せを行います(索引の使用を含む)。
-
オブザーバのサンプル—Coherenceデータ・グリッドのデータへの変更をリスニングします。参照してください。
-
プロセッサのサンプル—データ自身がCoherenceデータ・グリッドにある共存データを処理します。
-
問合せ言語—新しい3.6 Coherenceの問合せ言語の使用方法です。
このサンプル・セットは、これらのデータ・モデル・クラスで表されるサンプル・データを使用します。
表6-14 機能サンプル用のデータ・モデル・クラス
名前 | 説明 |
---|---|
|
アドレス情報 |
|
連絡先情報(住所および電話番号を含む) |
|
連絡先情報へのキー(連絡先名) |
|
電話番号 |
このサンプル・セットには、サンプルのContacts
情報を含むカンマ区切り値のファイルであるcontacts.csv
ファイルも付属しています。
親トピック: Coherenceの基本機能のサンプル
機能ドライバ・ファイルの理解
ドライバ・ファイルには、すべての連絡先サンプルを次の順番で実行するstaticメソッドmain
があります。
-
LoaderExample
-
QueryExample
-
QueryLanguageExample
-
ObserverExample
-
BasicExample
-
ProcessorExample
ドライバ・ファイルは、Coherenceをサポートしている3つのプログラミング言語のそれぞれで実装されています。
言語 | 実装クラス |
---|---|
Java |
|
.NET |
|
C++ |
|
親トピック: Coherenceの基本機能のサンプル
基本データ・アクセスのサンプル
このサンプルは、データの取得、挿入および削除を含むCoherenceの最も基本的なデータ・アクセス機能を示しています。
Java
実装クラス: java/src
内のcom.tangosol.examples.contacts.BasicExample
-
キャッシュでの
ContactId
のContact
との関連付け:cache.put(contactId, contact);
-
ContactId
と関連付けられたContact
をキャッシュから取得:contact = (Contact) cache.get(contactId);
-
ContactId
からContact
へのマッピングをキャッシュから削除:cache.remove(contactId);
.NET
実装クラス: dotnet/src/contacts
のTangosol.Examples.Contacts
ネームスペース内にあるBasicExample
-
キャッシュでの
ContactId
のContact
との関連付け:cache.Add(contactId, contact);
-
ContactId
と関連付けられたContact
をキャッシュから取得:contact = (Contact)cache[contactId];
-
ContactId
からContact
へのマッピングをキャッシュから削除:cache.Remove(contactId);
C++
実装クラス: cpp/contacts
のcoherence::examples
ネームスペース内にあるBasicExample
-
キャッシュでの
ContactId
のContact
との関連付け:hCache->put(vContactId, vContact);
-
ContactId
と関連付けられたContact
をキャッシュから取得:vContact = cast<Managed<Contact>::View>(hCache->get(vContactId));
-
ContactId
からContact
へのマッピングをキャッシュから削除:hCache->remove(vContactId);
出力例
出力例(オブザーバのサンプルによる):
例6-1 基本データ・アクセスのサンプルの出力例
entry inserted:
John Nocyefqgqo
Addresses
Home: 1500 Boylston St.
null
Obopnof, NM 88824
US
Work: 8 Yawkey Way
null
Ssedhvmdeq, OR 84217
US
Phone Numbers
work: +11 0 707 3776578
Birth Date: 1971-12-31
entry deleted:
John Nocyefqgqo
Addresses
Home: 1500 Boylston St.
null
Obopnof, NM 88824
US
Work: 8 Yawkey Way
null
Ssedhvmdeq, OR 84217
US
Phone Numbers
work: +11 0 707 3776578
Birth Date: 1971-12-31
親トピック: Coherenceの基本機能のサンプル
ローダーのサンプル
このサンプルは、ファイルまたはストリームからキャッシュに連絡先をロードします。
ここでは、バルク挿入を使用する最も効率的なキャッシュへのデータの挿入方法を示します。これによって、アプリケーションとキャッシュの間のネットワーク・ラウンドトリップの数が最小化されます。
Java
実装クラス: java/src
内のcom.tangosol.examples.contacts.LoaderExample
cache.putAll(mapBatch);
.NET
実装クラス: dotnet/src/contacts
のTangosol.Examples.Contacts
ネームスペース内にあるLoaderExample
cache.InsertAll(dictBatch);
C++
実装クラス: cpp/contacts
のcoherence::examples
ネームスペース内にあるLoaderExample
hCache->putAll(hMapBatch);
出力例
例6-2 出力例
.........Added 10000 entries to cache
親トピック: Coherenceの基本機能のサンプル
問合せの例
QueryExample
は連絡先を問い合せるサンプルを実行します。
このサンプルの目的は、キャッシュ・データ上にExtractors
を作成する方法およびキャッシュ・キー用のKeyExtractor
を作成する方法を説明することです。また、索引を使用してデータセットをフィルタし、効率的に一致セットを作成する方法も示します。最後に、いくつかの内蔵キャッシュ・アグリゲータを使用してキャッシュ・データに対して簡単な計算タスクを行う方法についても示します。コードのサブセットを次に示します。
Java
実装クラス: java/src
内のcom.tangosol.examples.contacts.QueryExample
-
問合せをさらに効率化する索引を追加
cache.addIndex(new ChainedExtractor("getHomeAddress.getState"), /*fOrdered*/ false, /*comparator*/ null);
-
すべてのMassachusettsに住む人の連絡先を検索
Set setResults = cache.entrySet(new EqualsFilter("getHomeAddress.getState", "MA"));
-
キャッシュ・データセット全体で
nAge
よりも年齢が高い人の連絡先をカウントSystem.out.println("count > " + nAge + ": " + cache.aggregate(new GreaterFilter("getAge", nAge), new Count()));
.NET
実装クラス: dotnet/src/contacts
のTangosol.Examples.Contacts
ネームスペース内にあるQueryExample
-
問合せをさらに効率化する索引を追加
cache.AddIndex(new ChainedExtractor("getHomeAddress.getState"),/*fOrdered*/ false, /*comparator*/ null);
-
すべてのMassachusettsに住む人の連絡先を検索
ICacheEntry[] aCacheEntry = cache.GetEntries(new EqualsFilter("getHomeAddress.getState", "MA"));
-
キャッシュ・データセット全体で
nAge
よりも年齢が高い人の連絡先をカウントConsole.WriteLine("count > " + nAge + ": "+ cache.Aggregate(new GreaterFilter("getAge", nAge), new Count()));
C++
実装クラス: cpp/contacts
のcoherence::examples
ネームスペース内にあるQueryExample
-
問合せをさらに効率化する索引を追加
ValueExtractor::View vHomeStateExtractor = ChainedExtractor::create( ChainedExtractor::createExtractors("getHomeAddress.getState"));
-
すべてのMassachusettsに住む人の連絡先を検索
Object::View voStateName = String::create("MA"); Set::View setResults = hCache->entrySet( EqualsFilter::create(vHomeStateExtractor, voStateName));
-
キャッシュ・データセット全体で
nAge
よりも年齢が高い人の連絡先をカウントInteger32::View nAge = Integer32::valueOf(58); Object::View vResult = hCache->aggregate( (Filter::View) GreaterFilter::create(vAgeExtractor, nAge), Count::create()); std::cout << "count > " << nAge->getValue() << ": " << vResult << std::endl;
出力例
10,000件の連絡先および複数の問合せがあるため、出力例は大きくなります。次は、Massachusetts居住者の問合せのサンプルです。
例6-3 問合せのサンプルの出力例
MA Residents
ConverterEntry{Key="John Scqngqda", Value="John Scqngqda
Addresses
Home: 265 Beacon St.
Oaskxm, MA 88259
US
Work: Yoyodyne Propulsion Systems
330 Lectroid Rd.
Grover's Mill, OK 95744
US
Phone Numbers
work: +11 88 903 8991283
home: +11 98 553 5878221
Birth Date: 1960-01-03"}
親トピック: Coherenceの基本機能のサンプル
オブザーバのサンプル
ObserverExample
は、MapListener
を使用してキャッシュ・データの挿入、更新および削除などのキャッシュ・イベントをモニターする方法を示します。このサンプルを実行しても、即座に出力はされません。エントリが挿入、更新および削除されると、登録されたリスナーによってそれが出力されます。更新の場合、古い値および新しい値の両方が出力されます。基本データ・アクセスのサンプルおよびプロセッサのサンプルを実行すると、エントリが変更されて出力が発生します。
コードのサブセットを次に示します。
Java
実装クラス: java/src
内のcom.tangosol.examples.contacts.ObserverExample
-
ContactChangeListener
はMapListener
インタフェースを実装するクラスcache.addMapListener(new ContactChangeListener());
.NET
実装クラス: dotnet/src/contacts
のTangosol.Examples.Contacts
ネームスペース内にあるObserverExample
-
ContactChangeListener
はICacheListener
インタフェースを実装するクラスcache.AddCacheListener(new ContactChangeListener());
C++
実装クラス: cpp/contacts
のcoherence::examples
ネームスペース内にあるObserverExample
-
ContactChangeListener
はMapListener
インタフェースを実装するクラスで、Coherenceimplements
を使用します。ContactChangeListener::Handle hListener = ContactChangeListener::create(); hCache->addFilterListener(hListener);
-
ContactChangeListener
の定義:class ContactChangeListener : public class_spec<ContactChangeListener, extends<Object>, implements <MapListener> >
親トピック: Coherenceの基本機能のサンプル
プロセッサのサンプル
ProcessorExample
は、プロセッサを使用してキャッシュ内のデータ・セットを変更する方法を示します。次のコード・サンプルでは、MAに住むすべての人の連絡先の勤務先アドレスが更新されます。
Java
実装クラス: java/src
内のcom.tangosol.examples.contacts.ProcessorExample
ヘルパー・クラス: java/src
内のcom.tangosol.examples.contacts.OfficeUpdater
-
MAに住むすべての人の連絡先に
OfficeUpdater
を適用。OfficeUpdater
は、AbstractProcessor
を拡張することによってInvocableMap.EntryProcessor
インタフェースを実装しているクラスcache.invokeAll(new EqualsFilter("getHomeAddress.getState", "MA"), new OfficeUpdater(addrWork));
.NET
実装クラス: dotnet/src/contacts
のTangosol.Examples.Contacts
ネームスペース内にあるProcessorExample
ヘルパー・クラス: dotnet/src/contacts
のTangosol.Examples.Contacts
ネームスペース内にあるOfficeUpdater
-
MAに住むすべての人の連絡先に
OfficeUpdater
を適用。OfficeUpdater
は、AbstractProcessor
を拡張することによってIEntryProcessor
インタフェースを実装しているクラスcache.InvokeAll(new EqualsFilter("getHomeAddress.getState", "MA"), new OfficeUpdater(addrWork));
C++
実装クラス: cpp/contacts
のcoherence::examples
ネームスペース内にあるProcessorExample
ヘルパー・クラス: cpp/contacts
のcoherence::examples
ネームスペース内にあるOfficeUpdater
-
OfficeUpdater
はUpdaterProcessor
型を拡張したクラスclass OfficeUpdater : public class_spec<OfficeUpdater, extends<UpdaterProcessor>, implements<PortableObject> >
-
MAに住むすべての人の連絡先に
OfficeUpdater
を適用。Filter::View vEqualsFilter = EqualsFilter::create( ChainedExtractor::create(ChainedExtractor::createExtractors( "getHomeAddress.getState")), String::create("MA")); InvocableMap::EntryProcessor::Handle hOffice = OfficeUpdater::create(addrWork); Map::View vMap = hCache->invokeAll(vEqualsFilter, hOffice);
出力例
出力例(「オブザーバのサンプル」による)は、連絡先の件数が多いため大きくなります。次のように出力されます。
例6-4 プロセッサのサンプルの出力例
entry updated
old value:
John Keau
Addresses
Home: 443 Beacon St.
Ophvowvw, MA 06539
US
Work: Yoyodyne Propulsion Systems
330 Lectroid Rd.
Grover's Mill, FL 86812
US
Phone Numbers
work: +11 8 919 9456102
home: +11 25 759 588823
Birth Date: 1968-12-31
new value:
John Keau
Addresses
Home: 443 Beacon St.
Ophvowvw, MA 06539
US
Work: 200 Newbury St.
Yoyodyne, Ltd.
Boston, MA 02116
US
Phone Numbers
work: +11 8 919 9456102
home: +11 25 759 588823
entry updated
old value:
John Lbggblkd
Addresses
Home: 929 Beacon St.
Trwylbmf, MA 50358
US
Work: Yoyodyne Propulsion Systems
330 Lectroid Rd.
Grover's Mill, AZ 19164
US
Phone Numbers
work: +11 60 699 203810
home: +11 34 149 5018157
Birth Date: 1964-01-02
new value:
John Lbggblkd
Addresses
Home: 929 Beacon St.
Trwylbmf, MA 50358
US
Work: 200 Newbury St.
Yoyodyne, Ltd.
Boston, MA 02116
US
Phone Numbers
work: +11 60 699 203810
home: +11 34 149 5018157
Birth Date: 1964-01-02
Birth Date: 1968-12-31
親トピック: Coherenceの基本機能のサンプル
問合せ言語
このサンプルは、連絡先を問い合せるサンプルの実行方法を示しています。
Java
実装クラス: java/src
内のcom.tangosol.examples.query.QueryExample
-
問合せをさらに効率化する索引を追加
cache.addIndex(ff.createExtractor("age"), /*fOrdered*/ true, /*comparator*/ null); cache.addIndex(ff.createExtractor("homeAddress.state"), /*fOrdered*/ false, /*comparator*/ null);
-
すべてのMassachusettsに住む人の連絡先を検索
Set setResults = cache.entrySet(ff.createFilter("homeAddress.state = 'MA'"));
-
キャッシュ・データセット全体で
nAge
よりも年齢が高い人の連絡先をカウントfinal int nAge = 58; Object[] aEnv = new Object[] {new Integer(nAge)}; System.out.println("count > " + nAge + ": " + cache.aggregate(ff.createFilter("age > ?1", aEnv), new Count()));
.NET
実装クラス: dotnet/src/query
のTangosol.Examples.Query
ネームスペース内にあるSimpleQueryExample
-
問合せをさらに効率化する索引を追加
cache.AddIndex(ff.CreateExtractor("age"), /*fOrdered*/ true, /*comparator*/ null); cache.AddIndex(ff.CreateExtractor("homeAddress.state"), /*fOrdered*/ false, /*comparator*/ null);
-
すべてのMassachusettsに住む人の連絡先を検索
ICollection results = cache.GetEntries(ff.CreateFilter("homeAddress.state = 'MA'"));
-
キャッシュ・データセット全体で
age
よりも年齢が高い人の連絡先をカウントconst int age = 58; object[] env = new object[] { age }; results = cache.GetEntries(ff.CreateFilter("age > ?1", env));
C++
実装クラス: cpp/query
のcoherence::examples
ネームスペース内にあるSimpleQueryExample
-
問合せをさらに効率化する索引を追加
hCache->addIndex(hff->createExtractor("age"), /*fOrdered*/ true, /*vComparator*/ NULL); hCache->addIndex(hff->createExtractor("homeAddress.state"), /*fOrdered*/ false, /*vComparator*/ NULL);
-
すべてのMassachusettsに住む人の連絡先を検索
Set::View setResults = hCache->entrySet(hff->createFilter("homeAddress.state is 'MA'")); s
-
キャッシュ・データセット全体で
nAge
よりも年齢が高い人の連絡先をカウントInteger32::View nAge = Integer32::valueOf(58); ObjectArray::Handle haEnv = ObjectArray::create(1); haEnv[0] = nAge; HashMap::Handle hbinds = HashMap::create(); hbinds->put(String::create("nAge"), nAge); setResults = hCache->entrySet(hff->createFilter("age > ?1", haEnv));
出力例
出力例(「問合せのサンプル」による):
例6-5 問合せ言語のサンプルの出力例
MA Residents
ConverterCacheEntry{Key="John Wmbltik", Value="John Wmbltik
Addresses
Home: 785 Beacon St.
Vpmji, MA 34400
US
Work: 200 Newbury St.
Yoyodyne, Ltd.
Boston, MA 02116
US
Phone Numbers
work: +11 62 133 6144503
home: +11 17 238 6189757
Birth Date: 1/1/1968 12:00:00 AM"}
ConverterCacheEntry{Key="John Dtpx", Value="John Dtpx
Addresses
Home: 673 Beacon St.
Mvblms, MA 25889
US
Work: 200 Newbury St.
Yoyodyne, Ltd.
Boston, MA 02116
US
Phone Numbers
work: +11 89 900 8436918
home: +11 32 686 9582798
Birth Date: 1/3/1960 12:00:00 AM"}
.
.
.
count > 58 : 496
親トピック: Coherenceの基本機能のサンプル
データ・ジェネレータ
実装クラス: java/src
内のcom.tangosol.examples.contacts.DataGenerator
DataGenerator
には、ランダムな連絡先情報を生成し、結果をカンマ区切り値のファイルに格納するstaticなmainメソッドがあります。contacts
サンプルとともにパッケージ化されているcontacts.csv
は、このクラスによって生成されました。さらに多くのサンプル・データが必要になった場合に備えて、このクラスが含まれています。クラスはJavaのみに実装されます。
親トピック: Coherenceの基本機能のサンプル
Coherenceのセキュリティのサンプル
この項では、次の項目について説明します。
- Coherenceのセキュリティのサンプルの概要
- このサンプル・セット
- パスワードのサンプル
- アクセス制御のサンプル
- パスワードIDトランスフォーマ
- パスワード・アイデンティティ・アサータ
- 資格が付与されるキャッシュ・サービス
- 資格が付与される起動サービス
- 資格が付与される名前付きキャッシュ
- セキュリティ・サンプル・ヘルパー
親トピック: Coherenceのサンプルの実行
Coherenceのセキュリティのサンプルの概要
セキュリティのサンプルは、次のとおりです。
-
パスワードのサンプル—Coherenceプロキシがキャッシュにアクセスするためにパスワードを要求する方法を説明します。
-
アクセス制御のサンプル—簡略化されたロール・ベースのアクセス制御を説明します。
-
パスワードIDトランスフォーマ—必要なパスワードを含むカスタム・セキュリティ・トークンを作成し、プリンシパル名のリストに追加します。
-
パスワード・アイデンティティ・アサータ—セキュリティ・トークンに必要なパスワードが含まれることをアサートし、プリンシパル名のリストに基づいてサブジェクトを構成します。
-
資格が付与されるキャッシュ・サービス—アクセス制御用にキャッシュ・サービスをラップします。
-
資格が付与される起動サービス—アクセス制御用に起動サービスをラップします。
-
資格が付与される名前付きキャッシュ—アクセス制御用に名前付きキャッシュをラップします。
親トピック: Coherenceのセキュリティのサンプル
このサンプル・セット
Coherenceのセキュリティのサンプル・セットは、パスワードを要求するキャッシュへの参照を取得し、キャッシュおよび異なるロールを要求する起動サービス操作を試みます。
この項には次のトピックが含まれます:
セキュリティ・ドライバ・ファイルの理解
すべてのセキュリティ・サンプルを次の順番で実行するstaticメソッドmain
があります。
-
PasswordExample
-
AccessControlExample
.accessCache()
-
AccessControlExample.accessInvocationService()
Coherenceをサポートしている3つのプログラミング言語のそれぞれで実装されています。
言語 | 実装クラス |
---|---|
Java |
|
.NET |
|
C++ |
|
次の概要が示されている各サンプルの詳細は、サンプル・セットのexample.zip
ファイルを参照してください。
親トピック: このサンプル・セット
パスワードのサンプル
このサンプルは、Coherenceプロキシがキャッシュへの参照を取得するためにパスワードを要求する方法を示しています。
Java
実装クラス: java/src
内のcom.tangosol.examples.security.PasswordExample
コードは、Subject
を取得するためにログインし、そのサブジェクトのコンテキストで実行中のキャッシュ参照を取得しようとします。
「パスワードIDトランスフォーマ」は、パスワードを含むセキュリティ・トークンを生成します。「パスワード・アイデンティティ・アサータ」(プロキシ内で実行)は、パスワードを強制するためにセキュリティ・トークンを検証します。トークンは、プロキシへの接続時に自動的に生成および検証されます。
.NET
実装クラス: dotnet/src/security
のTangosol.Example.Security
ネームスペース内にあるPasswordExample
コードは、Principal
を取得するためにログインし、Principal
をスレッドの現在のプリンシパルにすることによってそのPrincipal
のコンテキストで実行中のキャッシュ参照を取得しようとします。
「パスワードIDトランスフォーマ」は、パスワードを含むセキュリティ・トークンを生成します。「パスワード・アイデンティティ・アサータ」(プロキシ内で実行)は、パスワードを強制するためにセキュリティ・トークンを検証します。トークンは、プロキシへの接続時に自動的に生成および検証されます。
C++
実装クラス: cpp/security
のcoherence::examples
ネームスペース内にあるAccessExample
コードは、Subject
を取得するためにログインし、そのSubject
のコンテキストで実行中のキャッシュ参照を取得しようとします。
「パスワードIDトランスフォーマ」は、パスワードを含むセキュリティ・トークンを生成します。「パスワード・アイデンティティ・アサータ」(プロキシ内で実行)は、パスワードを強制するためにセキュリティ・トークンを検証します。トークンは、プロキシへの接続時に自動的に生成および検証されます。
出力例
例6-6 パスワードのサンプルの出力例
------password example begins------ ------password example succeeded------ ------password example completed------
親トピック: Coherenceのセキュリティのサンプル
アクセス制御のサンプル
このサンプルは、簡略化されたロール・ベースのアクセス制御について示しています。
Java
実装クラス: java/src
内のcom.tangosol.examples.security.AccessControlExample
コードは、Subject
を取得するために特定のロールを持つユーザーIDでログインし、そのSubject
のコンテキストで実行中のキャッシュ参照を取得し、キャッシュの操作を試行します。ユーザーに付与されたロールに応じて、キャッシュ操作が許可または拒否されます。
writer
ロールを持つユーザーは、挿入および取得が許可されています。reader
ロールを持つユーザーは、取得はできますが、挿入はできません。writer
ロールを持つユーザーは、キャッシュの破棄はできません。admin
ロールを持つユーザーは、キャッシュを破棄できます。
その後、特定のロールを持つユーザーは起動サービスの使用を試行します。reader
による起動は許可されていませんが、writer
では許可されています。
一度あるSubject
のコンテキストでキャッシュまたは起動サービス参照が作成されると、そのIDは永続的にその参照と関連付けられることに注意してください。キャッシュまたはサービス参照の使用すべてがそのIDの代理として行われます。
「パスワードIDトランスフォーマ」は、パスワード、ユーザーIDおよびロールを含むセキュリティ・トークンを生成します。「パスワード・アイデンティティ・アサータ」(プロキシ内で実行)は、パスワードを強制するためにセキュリティ・トークンを検証し、適切なユーザーIDおよびロールを持つSubject
を構築します。
セキュリティ・トークンの生成とアサーションは自動的に実行されます。
アクセス制御の実装については、「資格が付与されるキャッシュ・サービス」, 「資格が付与される起動サービス」および「資格が付与される名前付きキャッシュ」のコードを参照してください。
.NET
実装クラス: dotnet/src/security
のTangosol.Example.Security
ネームスペース内にあるAccessControlExample
コードは、Principal
を取得するために特定のロールを持つユーザーIDでログインし、そのPrincipal
のコンテキストで実行中のキャッシュ参照を取得し、キャッシュの操作を試行します。ユーザーに付与されたロールに応じて、キャッシュ操作が許可または拒否されます。
writer
ロールを持つユーザーは、挿入および取得が許可されています。reader
ロールを持つユーザーは、取得はできますが、挿入はできません。writer
ロールを持つユーザーは、キャッシュの破棄はできません。admin
ロールを持つユーザーは、キャッシュを破棄できます。
その後、特定のロールを持つユーザーは起動サービスの使用を試行します。reader
による起動は許可されていませんが、writer
では許可されています。
一度あるPrincipal
のコンテキストでキャッシュまたは起動サービス参照が作成されると、そのIDは永続的にその参照と関連付けられることに注意してください。キャッシュまたはサービス参照の使用すべてがそのIDの代理として行われます。
「パスワードIDトランスフォーマ」は、パスワード、ユーザーIDおよびロールを含むセキュリティ・トークンを生成します。「パスワード・アイデンティティ・アサータ」(プロキシ内で実行)は、パスワードを強制するためにセキュリティ・トークンを検証し、適切なユーザーIDおよびロールを持つSubject
を構築します。
セキュリティ・トークンの生成とアサーションは自動的に実行されます。
アクセス制御の実装については、「資格が付与されるキャッシュ・サービス」, 「資格が付与される起動サービス」および「資格が付与される名前付きキャッシュ」のコードを参照してください。
C++
実装クラス: cpp/security
のcoherence::examples
ネームスペース内にあるAccessControlExample
コードは、Subject
を取得するために特定のロールを持つユーザーIDでログインし、そのSubject
のコンテキストで実行中のキャッシュ参照を取得し、キャッシュの操作を試行します。ユーザーに付与されたロールに応じて、キャッシュ操作が許可または拒否されます。
writer
ロールを持つユーザーは、挿入および取得が許可されています。reader
ロールを持つユーザーは、取得はできますが、挿入はできません。writer
ロールを持つユーザーは、キャッシュの破棄はできません。admin
ロールを持つユーザーは、キャッシュを破棄できます。
その後、特定のロールを持つユーザーは起動サービスの使用を試行します。reader
による起動は許可されていませんが、writer
では許可されています。
一度あるサブジェクトのコンテキストでキャッシュまたは起動サービス参照が作成されると、そのIDは永続的にその参照と関連付けられることに注意してください。キャッシュまたはサービス参照の使用すべてがそのIDの代理として行われます。
「パスワードIDトランスフォーマ」は、パスワード、ユーザーIDおよびロールを含むセキュリティ・トークンを生成します。「パスワード・アイデンティティ・アサータ」(プロキシ内で実行)は、パスワードを強制するためにセキュリティ・トークンを検証し、適切なユーザーIDおよびロールを持つSubject
を構築します。
セキュリティ・トークンの生成とアサーションは自動的に実行されます。
アクセス制御の実装については、「資格が付与されるキャッシュ・サービス」, 「資格が付与される起動サービス」および「資格が付与される名前付きキャッシュ」のコードを参照してください。
出力例
例6-7 アクセス制御のサンプルの出力例
------cache read/write example begins------
Success: read and write allowed
------cache read/write example complete------
------cache read only example begins------
Success: read allowed
------cache read only example complete------
------cache destroy with read only access example begins------
------cache destroy with read only access example complete------
------cache destroy example begins------
Success: Correctly allowed to destroy the cache
------cache destroy example complete------
------MapListener access control example begins------
------MapListener access control example ends------
------InvocationService read/write access control example begins------
Success: Correctly allowed to use the invocation service
------InvocationService read/write access control example complete------
------InvocationService read-only access control example begins------
------InvocationService access control example completed------
親トピック: Coherenceのセキュリティのサンプル
パスワードIDトランスフォーマ
このサンプルは、IdentityTransformer
がIDからセキュリティ・トークンを生成する方法を示しています。
Java
実装クラス: java/src
内のcom.tangosol.examples.security.PasswordIdentityTransformer
コードは、文字列の配列であるセキュリティ・トークンを生成します。最初の文字列はパスワードです。2番目の文字列はユーザーIDで、後続の文字列はユーザーのロールです。文字列の配列は、Coherence*Extendによってカスタム・シリアライザを使用せずにシリアライズされます。
このクラスは、Extendクライアントがプロキシに接続する際、または既存の接続でチャンネルが開かれる際に自動的に起動されます。
.NET
実装クラス: dotnet/src/security
のTangosol.Example.Security
ネームスペース内にあるPasswordIdentityTransformer
コードは、文字列の配列であるセキュリティ・トークンを生成します。最初の文字列はパスワードです。2番目の文字列はユーザーIDで、後続の文字列はユーザーのロールです。文字列の配列は、Coherence*Extendによってカスタム・シリアライザを使用せずにシリアライズされます。
このクラスは、Extendクライアントがプロキシに接続する際、または既存の接続でチャンネルが開かれる際に自動的に起動されます。
C++
実装クラス: cpp/security
のcoherence::examples
ネームスペース内にあるPasswordIdentityTranfromer
コードは、文字列の配列であるセキュリティ・トークンを生成します。最初の文字列はパスワードです。2番目の文字列はユーザーIDで、後続の文字列はユーザーのロールです。文字列の配列は、Coherence*Extendによってカスタム・シリアライザを使用せずにシリアライズされます。
このクラスは、Extendクライアントがプロキシに接続する際、または既存の接続でチャンネルが開かれる際に自動的に起動されます。
親トピック: Coherenceのセキュリティのサンプル
パスワード・アイデンティティ・アサータ
このサンプルは、IdentityAsserter
がセキュリティ・トークンを検証し、プリンシパル名のリストからSubject
を生成する方法を示しています。
Java
実装クラス: java/src
内のcom.tangosol.examples.security.PasswordIdentityAsserter
コードは、文字列の配列であるセキュリティ・トークンを処理します。最初の文字列はパスワードである必要があります。後続の文字列はプリンシパルです。トークンの処理に失敗すると、プロキシへのアクセスを拒否するSecurityException
が発生します。
.NET
実装クラス: なし
IdentityAsserter
はプロキシ上でのみ(Javaで)実行されるため、.NETクライアントでは実行できません。そのため、.NET向けのPasswordIdentityAsserter
はありません。
C++
実装クラス: なし
PasswordIdentityAsserter
はプロキシ上でのみ(Javaで)実行されるため、C++クライアントでは実行できません。そのため、C++向けのPasswordIdentityAsserter
はありません。
親トピック: Coherenceのセキュリティのサンプル
資格が付与されるキャッシュ・サービス
この例は、リモート・キャッシュ・サービスをラップしてアクセス制御を提供する方法を示しています。
Java
実装クラス: java/src
内のcom.tangosol.examples.security.EntitledCachService
コードは、キャッシュ操作用のアクセス制御を提供する「資格が付与される名前付きキャッシュ」をインスタンス化します。コードは、キャッシュ・サービス・メソッドrelease
およびdestroy
用のアクセス制御も提供しています。アクセス制御チェックは、「セキュリティ・サンプル・ヘルパー」に委任されます。
このクラスは、キャッシュ・サービスがプロキシで起動した際に、自動的にインスタンス化されます。
.NET
.NETの実装はありません。クラスはプロキシ上でのみJavaで実行されます。
C++
C++の実装はありません。クラスはプロキシ上でのみJavaで実行されます。
親トピック: Coherenceのセキュリティのサンプル
資格が付与される起動サービス
このサンプルは、リモート起動サービスをラップしてアクセス制御を提供する方法を示しています。
Java
実装クラス: java/src
内のcom.tangosol.examples.security.EntitledInvocationService
コードは、起動サービス・メソッド用のアクセス制御を提供します。アクセス制御チェックは、「セキュリティ・サンプル・ヘルパー」に委任されます。
このクラスは、起動サービスがプロキシで起動した際に、自動的にインスタンス化されます。
.NET
.NETの実装はありません。クラスはプロキシ上でのみJavaで実行されます。
C++
C++の実装はありません。クラスはプロキシ上でのみJavaで実行されます。
親トピック: Coherenceのセキュリティのサンプル
資格が付与される名前付きキャッシュ
このサンプルは、リモート名前付きキャッシュをラップしてアクセス制御を提供する方法を示しています。
Java
実装クラス: java/src
内のcom.tangosol.examples.security.EntitledNamedCache
コードは、NamedCache
メソッド用のアクセス制御を提供します。アクセス制御チェックは、「セキュリティ・サンプル・ヘルパー」に委任されます。
このクラスは、キャッシュ・サービスがプロキシで起動した際に、自動的にインスタンス化されます。
.NET
.NETの実装はありません。クラスはプロキシ上でのみJavaで実行されます。
C++
C++の実装はありません。クラスはプロキシ上でのみJavaで実行されます。
親トピック: Coherenceのセキュリティのサンプル
セキュリティ・サンプル・ヘルパー
このサンプルは、認証およびアクセス制御用のヘルパー・クラスです。
Java
実装クラス: java/src
内のcom.tangosol.examples.security.SecurityExampleHelper
コードは認証をシミュレートします。簡略化のため、これはSubject
を作成します。実際の実装では、プラットフォームおよび企業に固有な認証を行います。ログインでも、単純にユーザー名をロールにマッピングしています。
checkAccess
メソッドは、ユーザーのロールによって操作が許可されているかを確認します。
.NET
実装クラス: dotnet/src/security
のTangosol.Example.Security
ネームスペース内にあるSecurityExampleHelper
コードは認証をシミュレートします。簡略化のため、これはPrincipal
を作成します。実際の実装では、プラットフォームおよび企業に固有な認証を行います。ログインでも、単純にユーザー名をロールにマッピングしています。
C++
実装クラス: cpp/security
のcoherence::examples
ネームスペース内にあるSecurityExampleHelper
コードは認証をシミュレートします。簡略化のため、これはSubject
を作成します。実際の実装では、プラットフォームおよび企業に固有な認証を行います。ログインでも、単純にユーザー名をロールにマッピングしています。
親トピック: Coherenceのセキュリティのサンプル
Coherenceのライブ・イベントのサンプル
EntryEvents
、EntryProcessorEvents
およびTransferEvents
を含むCoherenceライブ・イベントの様々なイベント・タイプおよびそれらがどのように処理されるかを示しています。ライブ・イベントのサンプルはパーティション・サービスの記憶域が有効なメンバーで実行されるため、Javaプログラミング言語でのみ使用可能です。
この項には次のトピックが含まれます:
- Coherenceのライブ・イベントのサンプルの概要
- このサンプル・セット
- EventsExamples
- TimedTraceInterceptor
- CantankerousInterceptor
- RedistributionInterceptor
- RedistributionInvocable
- LazyProcessor
親トピック: Coherenceのサンプルの実行
Coherenceのライブ・イベントのサンプルの概要
Coherenceのライブ・イベントのサンプルは、次のとおりです。
-
EventsExamples—ライブ・イベントの様々な機能を示しています。
-
TimedTraceInterceptor—異なるタイプのイベントに対して、コミット前イベントとコミット後イベントの間のタイミングを提供します。
-
CantankerousInterceptor—挿入されるキーのタイプに基づいて、コミット前時間またはコミット後時間のどちらかにランタイム例外で応答します。
-
RedistributionInterceptor—有効化された場合にパーティション・イベントをログに記録します。
-
RedistributionInvocable—クラスタの様々なメンバーで実行されるアクション可能な3つの状態を定義します。状態とは、
RedistributionInterceptor
によって実行されるロギングの有効化、ロギングの無効化、またはinvocable (RedistributionInvocable
)が実行されているJVMの終了です。 -
LazyProcessor—イベントの処理間の実体のない遅延を作成します。
親トピック: Coherenceのライブ・イベントのサンプル
このサンプル・セット
ライブ・イベントのサンプル・セットは、結果のキャッシュに挿入されるイベント前とイベント後の間の経過時間を計測する方法、イベント後と比較したイベント前の例外スローのセマンティクス、およびパーティション再配布イベントがどのように記録されるかを示しています。
この項には次のトピックが含まれます:
ライブ・イベント・ドライバ・ファイルの理解
すべてのライブ・イベント・サンプルを次の順番で実行するstaticメソッドmain
があります。
-
イベント時間測定サンプル
-
イベント拒否サンプル
-
パーティション転送イベント・サンプル
実装はJavaプログラミング言語のみです。
言語 | 実装クラス |
---|---|
Java |
|
親トピック: このサンプル・セット
EventsExamples
実装クラス: java/src
内のcom.tangosol.examples.events.EventsExamples
EventsExamples
クラスは、ライブ・イベントの様々な機能を示しています。これには、次のものが含まれます。
-
イベント・タイプで分割された平均経過時間の提供
-
イベント後と比較したイベント前の例外スローの異なるセマンティクスの説明
-
有効な場合のパーティション移動のロギングの説明
EventsExamples
クラスでは、次の内部クラスが定義されています。
EventsTimingExample
EventsTimingExample
内部クラスは、TimedTraceInterceptorによって実行されるアクションのきっかけとなります。これは、結果のキャッシュに挿入されるイベント前とイベント後の間の経過時間を計測する方法を示しています。結果キャッシュに挿入されたエントリは、このクラスを実行するプロセスのstdout
を使用して表示されます。
出力例:
例6-8 EventsTimingExampleの出力例
Received stats [memberId=1, eventType=INSERTED, sample=6] = EventStats[name = INSERTED, sampleMean = 0.357616ms, mean = 0.613750ms] Received stats [memberId=8, eventType=INSERTED, sample=1] = EventStats[name = INSERTED, sampleMean = 0.890652ms, mean = 0.890652ms] Received stats [memberId=1, eventType=UPDATED, sample=2] = EventStats[name = UPDATED, sampleMean = 0.607513ms, mean = 0.920558ms] Received stats [memberId=8, eventType=UPDATED, sample=1] = EventStats[name = UPDATED, sampleMean = 0.729151ms, mean = 0.729151ms] Received stats [memberId=1, eventType=EXECUTED, sample=6] = EventStats[name = EXECUTED, sampleMean = 4.143700ms, mean = 9.267525ms] Received stats [memberId=8, eventType=EXECUTED, sample=1] = EventStats[name = EXECUTED, sampleMean = 2.621131ms, mean = 2.621131ms] Received stats [memberId=1, eventType=REMOVED, sample=6] = EventStats[name = REMOVED, sampleMean = 3.481549ms, mean = 6.704784ms]
親トピック: EventsExamples
VetodEventsExample
VetodEventsExample
内部クラスは、CantankerousInterceptorによって実行されるアクションのきっかけとなります。これは、イベント前およびイベント後における例外スローのセマンティクスを示しています。記録する必要がある例外のみが結果キャッシュに挿入されます。結果キャッシュに挿入されたエントリは、このクラスを実行するプロセスのstdout
を使用して表示されます。
出力例:
例6-9 VetodEventsExampleの出力例
Received event [memberId=1, eventType=NON_VETO, count=51] = Objection falls on deaf ears! value = value: 11 Received event [memberId=1, eventType=NON_VETO, count=52] = Objection falls on deaf ears! value = value: 22 Received event [memberId=1, eventType=NON_VETO, count=53] = Objection falls on deaf ears! value = value: 33 Received event [memberId=1, eventType=NON_VETO, count=54] = Objection falls on deaf ears! value = value: 44 Received event [memberId=1, eventType=NON_VETO, count=55] = Objection falls on deaf ears! value = value: 55 Received event [memberId=1, eventType=NON_VETO, count=56] = Objection falls on deaf ears! value = value: 66 Received event [memberId=1, eventType=NON_VETO, count=57] = Objection falls on deaf ears! value = value: 77 Received event [memberId=1, eventType=NON_VETO, count=58] = Objection falls on deaf ears! value = value: 88 Received event [memberId=1, eventType=NON_VETO, count=59] = Objection falls on deaf ears! value = value: 99 Number of veto'd events: 5 Received event [memberId=1, eventType=NON_VETO, count=60] = Objection falls on deaf ears! value = value: 110
親トピック: EventsExamples
RedistributionEventsExample
RedistributionEventsExample
内部クラスは、RedistributionInterceptorクラスによって実行されるアクションのきっかけとなります。これは、RedistributionInterceptor
でのロギングの有効化およびメンバーの強制終了からパーティション再配布を誘発することによって、パーティション再配布イベントがどのように記録されるかを示しています。
出力例:
例6-10 RedistributionEventsExampleの出力例
Choosing to kill member Member(Id=1, Timestamp=2019-09-09 10:44:21.5, Address=127.0.0.1:62920, MachineId=10131, Location=machine:localhost,process:39588, Role=CoherenceServer)
親トピック: EventsExamples
TimedTraceInterceptor
実装クラス: java/src
内のcom.tangosol.examples.events.TimedTraceInterceptor
TimedTraceInterceptor
クラスは、イベントの各タイプ(挿入、更新、削除およびエントリ・プロセッサの実行)に対するコミット前イベントとコミット後イベントの間のタイミングを提供します。これらのタイミングは、cSample
パラメータで定義されるサンプル率で収集および平均の計算が行われます。さらに、同時にログにも出力されます。この実装は各バイナリ・キーへの強い参照を維持しますが、同じキーに対するコミット後イベントの受信の際に削除されます。
インターセプタは、EventInterceptor
インタフェースを実装します。@Interceptor
注釈は、identifier
属性でインターセプタの一意名を示し、order
属性で実行順序(Order.HIGH
)を示します。
インターセプタには、保護されたEventTimer
内部クラスも含まれています。このクラスでは、通知対象の各イベントの経過時間が測定されます。インターセプタは、各エントリに対するコミット前イベントとコミット後イベントの間の時間、およびそれぞれのイベント・タイプ(INSERT
、UPDATE
、REMOVE
)を追跡します。タイミングは、サンプル統計と累積統計を表示するCoherenceログにまとめて送信されます。
汎用引数がcom.tangosol.net.events.partition.cache.Event
であるため、ユーザーは、フィルタリングを指定しなくても、そのイベントのコンシューマであるイベント(EntryEvent
およびEntryProcessorEvent
)のみを取得します。
親トピック: Coherenceのライブ・イベントのサンプル
CantankerousInterceptor
実装クラス: java/src
内のcom.tangosol.examples.events.CantankerousInterceptor
CantankerousInterceptor
クラスは、あるキーの挿入イベントはコミット前またはコミット後のフェーズで実行時例外になるという議論を呼ぶ性質を持ったEventInterceptor
の実装です。
例外がコミット前にスローされた場合は、ロールバックが発生し、例外がクライアントに伝播されます。例外がコミット後に発生した場合は、ログ・イベントが記録されます。例外に使用されるキーは、VETO
およびNON-VETO
です。INSERTING
およびUPDATING
は拒否できるイベントであるのに対して、INSERTED
およびUPDATED
イベントは拒否できません。
親トピック: Coherenceのライブ・イベントのサンプル
RedistributionInterceptor
実装クラス: java/src
内のcom.tangosol.examples.events.RedistributionInterceptor
RedistributionInterceptor
クラスは、有効化された際にパーティション・アクティビティを記録するEventInterceptor
です。ロギングは、RedistributionInvocable.ENABLED
定数の設定を使用して有効化できます。「RedistributionInvocable」を参照してください。
親トピック: Coherenceのライブ・イベントのサンプル
RedistributionInvocable
実装クラス: java/src
内のcom.tangosol.examples.pof.RedistributionInvocable
RedistributionInvocable
クラスは、クラスタの様々なメンバーで実行されるアクション可能な3つの状態を定義します。この例では、状態を次のように定義します。
-
DISABLE
:RedistributionInterceptor
イベント・インターセプタによって実行されるロギングを無効にします。 -
ENABLE
:RedistributionInterceptor
イベント・インターセプタによって実行されるロギングを有効にします。 -
KILL
: この起動可能(RedistributionInvocable
)が実行されるJVMを終了します。
親トピック: Coherenceのライブ・イベントのサンプル
LazyProcessor
実装クラス: java/src
内のcom.tangosol.examples.pof.LazyProcessor
LazyProcessor
クラスは、イベントの処理間の実体のない遅延を作成します。クラスでは、このプロセッサがイベントの処理間でスリープする必要があるミリ秒数を指定します。このクラスは、EventsExamplesクラスのEventsTimingExampleサブクラスで使用されます。
親トピック: Coherenceのライブ・イベントのサンプル
Coherence Java 8機能のサンプル
Map
インタフェースで導入されたストリーム、ラムダおよびデフォルト・メソッドの使用方法を示します。機能は3つの個別のサンプルにまとめられます。ただし、これらの機能は互いの上にビルドされるため、一緒に使用することはできません。
この項には次のトピックが含まれます:
このサンプル・セット
Coherence Java 8機能のサンプルは、キャッシュ・エントリを問い合せ、処理する際のJavaストリームの使用方法、共通Coherenceタスクを簡略化するためのLambda機能の使用方法、CoherenceのInvocableMap
インタフェース内でオーバーライドされたMap
インタフェースの新しいデフォルト・メソッドを使用して、キャッシュ・エントリを問い合せ、処理する方法を示します。
この項には次のトピックが含まれます:
Java 8のドライバ・ファイルの理解
すべてのJava 8のサンプルを次の順番で実行するstaticメソッドmain
があります。
-
ストリーム
-
ラムダ
-
マップのデフォルト・メソッド
実装はJavaプログラミング言語のみです。
言語 | 実装クラス |
---|---|
Java |
|
親トピック: このサンプル・セット
ストリーム
実装クラス: java/src
内のcom.tangosol.examples.java8.StreamsExample
。
StreamsExample
クラスは、Stream
APIを使用してコンタクト・キャッシュの複数の問合せを実行します。また、ラムダ式が使用できます。問合せの結果はコンソールに出力されます。このクラスは、CoherenceのRemoteCollector
インタフェースを使用して標準Java Collector
インタフェースを拡張し、シリアライズをサポートして配布されるストリーム要素を順番に処理します。
親トピック: Coherence Java 8機能のサンプル
ラムダ
実装クラス: java/src
内のcom.tangosol.examples.java8.LambdaExample
。
LambdaExample
クラスは、ラムダ式を使用してコンタクト・キャッシュにリスナーを追加し、エントリ・プロセッサを使用して連絡先を更新します。最後に、ラムダ式は、CoherenceのFilters
APIを使用したコンタクト・キャッシュの問合せに使用されます。
親トピック: Coherence Java 8機能のサンプル
マップのデフォルト・メソッド
実装クラス: java/src
内のcom.tangosol.examples.java8.MapDefaultMethdodExample
。
MapDefaultMethodExample
クラスは、コンタクト・キャッシュの複数の問合せを実行し、Map
インタフェースに追加されたデフォルト・メソッドを使用していくつかのキャッシュ・エントリを更新します。CoherenceはInvocableMap
インタフェース内のデフォルト・メソッドをオーバーライドすることに注意してください。また、キャッシュを問い合せる際に、サンプルはラムダ式を使用することも注意してください。
親トピック: Coherence Java 8機能のサンプル
Coherenceの非同期機能のサンプル
AsyncNamedCache
APIを使用して非同期データ・グリッドを実行する方法を示します。サンプルは、java.util.concurrent.CompletableFuture
APIも使用し、操作が完了したかどうかチェックし、完了するまで待機し、操作結果を取得します。
この項には次のトピックが含まれます:
このサンプル・セット
Coherenceの非同期機能のサンプルは、キャッシュ内のデータを取得および挿入する方法、キャッシュ・エントリを非同期で処理する方法およびキャッシュ・エントリを非同期で集計する方法を示しています。
この項には次のトピックが含まれます:
非同期ドライバ・ファイルの理解
すべての非同期サンプルを次の順番で実行するstaticメソッドmain
があります。
-
データ・アクセスのサンプル
-
プロセッサのサンプル
-
アグリゲータのサンプル
実装はJavaプログラミング言語のみです。
言語 | 実装クラス |
---|---|
Java |
|
親トピック: このサンプル・セット
非同期のデータ・アクセス
実装クラス: java/src
内のcom.tangosol.examples.async.DataAccessExample
。
DataAccessExample
クラスは、AsyncNamedCache
APIを使用して、コンタクト・キャッシュのインスタンスを取得します。クラスは新しい連絡先を作成し、AsyncNamedCache
インスタンスを使用して連絡先をキャッシュに保存し、キャッシュから連絡先を取得します。連絡先は変更されて、キャッシュに戻されます。
親トピック: Coherenceの非同期機能のサンプル
非同期のエントリ・プロセッサ
実装クラス: java/src
内のcom.tangosol.examples.async.ProcessorExample
。
ProcessorExample
クラスは、AsyncNamedCache
APIを使用して、コンタクト・キャッシュのインスタンスを取得します。AsyncNamedCache
インスタンスを使用して、キャッシュを問合せ、連絡先の名前のセットを大文字に変更するエントリ・プロセッサを実行します。次に、エントリ・プロセッサを使用して名前を小文字に戻します。
親トピック: Coherenceの非同期機能のサンプル
非同期のアグリゲータ
実装クラス: java/src
内のcom.tangosol.examples.async.AggregatorExample
。
AggregatorExample
クラスは、AsyncNamedCache
APIを使用して、コンタクト・キャッシュのインスタンスを取得します。AsyncNamedCache
インスタンスを使用して、キャッシュを問合せ、年齢別の連絡先のセット上で集計を実行します。
親トピック: Coherenceの非同期機能のサンプル
Coherenceのフェデレーテッド・キャッシュのサンプル
フェデレーテッド・キャッシュのサンプルは、2つのクラスタ、ClusterAおよびClusterBを起動します。クラスタは、フェデレーション・トポロジに構成され、キャッシュされたデータは2つのクラスタ間でアクティブに同期されます。
この項には次のトピックが含まれます:
このサンプル・セット
Coherenceのフェデレーション構成のサンプル・セットは、フェデレーション・クラスタ参加者構成、アクティブ/アクティブ型トポロジ構成、フェデレーテッド・キャッシュ・サービス構成、クラスタ参加者間の通信を保護するSSL構成を示しています。
この項には次のトピックが含まれます:
フェデレーテッド・キャッシュのドライバ・ファイルの理解
次を実行するstaticメソッド、main
があります。
-
2つのクラスタを起動します。
-
GUIアプリケーション、CohQLまたはコンソールのいずれかを各クラスタで起動します。
実装はJavaプログラミング言語のみです。
言語 | 実装クラス |
---|---|
Java |
|
親トピック: このサンプル・セット
Coherenceの永続性のサンプル
PersistenceCoordinatorMBean
MBeanおよびCohQLコマンドを使用して実行することもできます。
この項には次のトピックが含まれます:
このサンプル・セット
Coherenceの永続性のサンプル・セットは、キャッシュ・スナップショットの保存およびリカバリの方法、永続性の通知を登録する方法、パラレルでの永続性操作を実行する方法、クラスタ・アーカイバを作成および使用する方法を示しています。
この項には次のトピックが含まれます:
永続性のドライバ・ファイルの理解
入力された引数に基づき永続性のサンプルを実行するstaticメソッドmain
があります。
-
基本的なスナップショットのサンプル
-
永続性のある通知のサンプル
-
パラレルの永続性操作のサンプル
-
カスタム・アーカイバのサンプル
実装はJavaプログラミング言語のみです。
言語 | 実装クラス |
---|---|
Java |
|
親トピック: このサンプル・セット
基本的なスナップショット操作
実装クラス: java/src
内のcom.tangosol.examples.persistence.BasicSnapshotOperations
BasicSnapshotOperations
クラスは、キャッシュのコンテンツを保存およびリカバリする永続性のスナップショットの使用方法を示します。次のようにして、連絡先のサンプルを使用し、キャッシュの移入およびプログラムによる永続性操作を実行します。
-
連絡先キャッシュのスナップショットが作成されます。永続性ファイルは、
java/persistence-data
にあります。 -
使用可能なスナップショットのリストが検索されます。
-
連絡先キャッシュがすべてのデータでクリアされます。
-
キャッシュ・コンテンツがスナップショットからリカバリされます。
-
キャッシュのサイズがレポートされます。
-
連絡先キャッシュのスナップショットが削除されます。
-
使用可能なスナップショットのリストを検証し、スナップショットが削除されたことを確認します
親トピック: Coherenceの永続性のサンプル
永続性のある通知
実装クラス: java/src
内のcom.tangosol.examples.persistence.NotificationWatcher
NotificationWatcher
クラスは、永続性操作からの通知をモニターする方法を示します。基本的なスナップショット操作のサンプルが、モニターされている操作で実行されます。クラスは、永続性のある通知リスナーを連絡先キャッシュ・サービス上に作成して登録します。次に、通知を使用して、永続性操作の実行にかかる時間をモニターします。
親トピック: Coherenceの永続性のサンプル
パラレルの永続性操作
実装クラス: java/src
内のcom.tangosol.examples.persistence.ParallelSnapshotOperations
ParallelSnapshotOperations
クラスは、複数のパーティション化されたキャッシュ・サービスに対するパラレルのスナップショット操作をコールする方法を示します。基本的なスナップショット操作のサンプルが実行され、連絡先キャッシュ・サービスの2つのインスタンスが作成されます。次に、各キャッシュ・サービスに対して永続性操作が実行されます。
親トピック: Coherenceの永続性のサンプル
カスタム・アーカイバのスナップショットのアーカイブ
実装クラス: java/src
内のcom.tangosol.examples.archiver.SFTPSnapshotArchiver
SFTPSnapshotArchiver
クラスは、スナップショット・アーカイバのカスタム実装で、JCraft (http://www.jcraft.com/jsch/
)のJSchライブラリを使用します。セキュアなFTPを使用してリモート・サーバーにスナップショットをアーカイブするアーカイバを作成します。SFTPSnapshotArchiverクラスは、AbstractSnapshotArchiver
クラスを拡張します。このサンプルを実行するには、JSchライブラリをダウンロードし、リモート・サーバーがSSHをサポートしている必要があります。
サンプル・ファイル、Driver
は、標準的スナップショット操作のサンプルと同様に実行されますが、アーカイブ操作が含まれます。次のようにして、永続性操作が実行されます。
-
連絡先キャッシュのスナップショットが作成されます。永続性ファイルは、
java/persistence-data
にあります。 -
使用可能なスナップショットのリストが検索されます。
-
連絡先キャッシュのスナップショットがSFTPを使用してアーカイブされます。
-
連絡先キャッシュのスナップショットが削除されます。
-
連絡先キャッシュがすべてのデータでクリアされます。
-
キャッシュのサイズがレポートされます。
-
アーカイブされたスナップショットがSFTPを使用して取得されます。
-
使用可能なスナップショットのリストが検索されます。
-
キャッシュ・コンテンツがスナップショットからリカバリされます。
-
キャッシュのサイズがレポートされます。
-
スナップショットおよびアーカイブされたスナップショットは、どちらも削除されます。
親トピック: Coherenceの永続性のサンプル
Coherence RESTのサンプル
Coherence RESTサンプルは、Coherence REST APIを使用する基本的な単一のWebベースのアプリケーションの作成方法を示します。サンプルは、Grizzly HTTPサーバーを使用して、クライアントHTTPリクエストを受信します。
サンプルのクライアントは、いくつかのJavaScriptライブラリおよびAngular JSフレームワークを使用してビルドされます。Coherence RESTに関する完全なドキュメントは、『Oracle Coherenceリモート・クライアントの開発』のCoherence RESTの使用方法に関する項を参照してください。
他のCoherenceのサンプルとは異なり、Coherence RESTサンプルはApache Mavenを使用してサンプルをビルドおよび実行します。Mavenは、Coherence RESTの使用に適しており、すべてのライブラリ依存性の管理を容易にします。RESTのサンプルは、COHERENCE_HOME
/examples/rest/
ディレクトリ内のMavenの標準ディレクトリ構造にまとめられています。
-
/src/main/java
– Javaソース・ファイルのディレクトリ -
/src/main/resources
– Coherenceの構成ファイルのディレクトリ。 -
/src/main/resources/web
– staticのHTMLページとJavaScriptファイルのディレクトリ。
この項には次のトピックが含まれます:
親トピック: Coherenceのサンプルの実行
このサンプル・セット
-
Coherence RESTをGrizzly HTTPサーバーを使用し、構成およびデプロイする方法を示します。
-
Coherence REST APIを使用する基本的なJavaScriptクライアントをビルドする方法を示します。
-
CoherenceでRESTのAPIを使用してキャッシュ・エントリを問合せ、作成、更新および削除する方法を示します。
-
カスタム・エントリ・プロセッサの使用方法を示します
-
コンポジット・キーの使用方法、および
KeyConverter
クラスの使用方法を示します。 -
Server-Sent Eventsを使用してキャッシュ・イベントを通知する方法を示します。
-
ネイティブJSONオブジェクトおよび静的バイナリ・オブジェクトでのパススルーの使用方法を示します。
親トピック: Coherence RESTのサンプル
サンプルのビルドおよび実行
サンプルは、Maven 3.2.5以降を使用してビルドおよび実行され、AngularJS 1.4.1以上をサポートするブラウザが必要です。
サンプルをビルドして実行するには:
-
coherence.jar
およびcoherence-rest.jar
ライブラリを、ローカルのMavenリポジトリ内に含めます。mvn install:install-file -Dfile=COHERENCE_HOME/lib/coherence.jar -DpomFile=COHERENCE_HOME/plugins/maven/com/oracle/coherence/coherence /12.2.1/coherence.12.2.1.pom mvn install:install-file -Dfile=COHERENCE_HOME/lib/coherence-rest.jar -DpomFile=COHERENCE_HOME/plugins/maven/com/oracle/coherence/coherence-rest /12.2.1/coherence-rest.12.2.1.pom
ノート:
必要な依存性をダウンロードするには、
settings.xml
ファイルへのパスを指定する必要があります。たとえば:mvn -s /path/to/settings.xml ...
設定ファイルが存在せず、インターネットへのアクセスでプロキシ・サーバーを使用している場合、ベース・ディレクトリで提供されるサンプルの
settings.xml
を使用できます。ファイルを変更して、プロキシ・サーバー設定に追加できます。 -
次を発行して、RESTのサンプルをビルドします。
mvn clean compile
-
キャッシュ・サーバーおよびHTTPプロキシを起動します。
mvn exec:exec -DhttpProxy
アプリケーションが起動し、ホーム・ページが自動的にデフォルトのブラウザにロードされます。ホーム・ページが自動的にデフォルトのブラウザにロードされない場合、次のURLに移動します。
http://127.0.0.1:8080/application/index.html
ノート:
HTTPサーバーはすべてのIPアドレスをリスニングしますが、次を
mvn exec:exec
コマンドに渡すことで、アプリケーションが実行されるアドレスおよびポートを変更できます。mvn exec:exec -DhttpProxy -Dhttp.address=x.x.x.x -Dhttp.port=7777
-
オプションで、追加のキャッシュ・サーバーを(HTTPサーバーなしで)起動します。
mvn exec:exec -DcacheServer
親トピック: Coherence RESTのサンプル
「製品」ページ
実装: COHERENCE_HOME
\examples\rest\src\main\resources\web\js\products.js
「製品」ページは、CoherenceでRESTのAPIを使用して、デフォルトの製品を問合せ、作成、更新、削除および移入する方法を示します。ページでは、カスタム・エントリ・プロセッサを使用して、製品価格を増加およびアイテムの追加の量を受信できます。
親トピック: Coherence RESTのサンプル
「部門」ページ
実装: COHERENCE_HOME
\examples\rest\src\main\resources\web\js\departments.js
「部門」ページは、CoherenceでRESTのAPIを使用して、デフォルトの部門を問合せ、作成、更新、削除および移入する方法を示します。
親トピック: Coherence RESTのサンプル
「連絡先」ページ
実装: COHERENCE_HOME
\examples\rest\src\main\resources\web\js\contacts.js
「連絡先」ページは、CoherenceでRESTのAPIを使用して、デフォルトの連絡先を問合せ、作成、更新、削除および移入する方法を示します。サンプルにはコンポジット・キーがあり、KeyConverter
クラスをこれらのキーで実行する使用方法を示します。最後に、サンプルは、RESTのコールで返される問合せをソートする方法を示します。
親トピック: Coherence RESTのサンプル
Server-Sent Events
実装: COHERENCE_HOME
\examples\rest\src\main\resources\web\js\sse.js
Server-Sent Eventsページは、Coherence RESTのAPIのイベントをリスニングします。リスニングの開始をクリックして、対応するキャッシュのリスナーを登録します。アプリケーションの新しいインスタンスを起動し、対応するキャッシュを変更します。アプリケーションの元のインスタンスに切り替え、更新された統計を表示します。
ノート:
Internet Explorerでは、Server-Sent Eventsはサポートされていません。
親トピック: Coherence RESTのサンプル
JSONパススルー・ページ
実装: COHERENCE_HOME\examples\rest\src\main\resources\web\js\json.js
JSONパススルーページには、キャッシュでネイティブJSONオブジェクトを格納および取得する方法が示されます。オブジェクトはPOFを使用してキャッシュにシリアライズされ、JSON属性の順序は保持されます。このページには、キャッシュ内のJSONオブジェクトを他の値オブジェクトと同様に処理および集計する方法も示されます。
親トピック: Coherence RESTのサンプル
バイナリ・パススルー・ページ
実装: COHERENCE_HOME\examples\rest\src\main\resources\web\js\static.js
バイナリ・パススルーページには、キャッシュで静的バイナリ・コンテンツ(グラフィックなど)を格納および削除する方法が示されます。この例では、キャッシュへのパススルー・アクセスをサポートするPassThroughResourceConfig
リソースを利用しています。
親トピック: Coherence RESTのサンプル