注意:
この章のサンプルは、基本的なものであり、一般的な概念を説明することのみを目的としています。詳細な例は、インストールに同梱されている例を参照してください。例は、Coherenceのサプリメンタル・インストールの一部としても配布されています。Oracle CoherenceのインストールのCoherenceの例の実行を参照してください。
この章の内容は次のとおりです。
親トピック: はじめに
キャッシュは、キャッシュ構成デプロイメント・ディスクリプタ内に定義されており、アプリケーション内で名前によって参照されます。このため、アプリケーションのコードを変更せずにキャッシュの構成を変更できます。次のキャッシュ構成では、キャッシュ名hello-example
にマップされた基本的な分散キャッシュを定義しています。
キャッシュのサンプルを定義するには:
キャッシュはCoherenceクラスタ上にホストされます。Coherenceを実行するJVMプロセスはすべて、実行時に自動的にクラスタに参加し、クラスタによって提供されるキャッシュおよびその他のサービスにアクセス可能になります。クラスタに参加したJVMは、クラスタ・ノードまたはクラスタ・メンバーと呼ばれます。この章のサンプル・アプリケーションでは、キャッシュ・サーバー・プロセスとHello Worldアプリケーション・プロセスの2つの個別のJavaプロセスによってクラスタが形成されます。簡素化を図るため、この2つのプロセスは単一のマシン上に置かれます。この2つのプロセスは1つのコンピュータ上に共存します。キャッシュ・サーバーは、デフォルトでキャッシュ・データを格納するように構成されます。
サンプルのクラスタでは、オペレーション・オーバーライド・ファイルを使用して初期状態のデフォルト・クラスタ構成を修正します。具体的には、デフォルト構成を修正してプライベート・クラスタを作成し、ネットワーク上で実行されている可能性のある既存のCoherenceクラスタに2つのプロセスが参加しないようにします。また、デフォルト構成を修正して、デフォルトのキャッシュ構成ファイルのかわりにexample-config.xml
がロードされるようにします。
サンプルのクラスタを構成して起動するには:
ステップ3では、サンプルのHello Worldアプリケーションの作成、サンプルの実行と検証などの、一連の手順を実行します。アプリケーションはコマンド行から実行され、キャッシュ・サーバーに参加するキャッシュ・ノードを起動します。そして、キーk1
と値Hello World!
をhello-example
キャッシュに入れます。キー値の取得と出力が済むとアプリケーションが終了します。最後に、追加のクラスタ・ノードが起動され、キーがキャッシュ内にあることが確認されます。
この項には次のトピックが含まれます:
アプリケーションは、Coherence APIを使用してキャッシュにアクセスし、キャッシュとの相互作用を図ります。CacheFactory
クラスはキャッシュ・インスタンスの取得のために使用され、NamedCache
インタフェースはキャッシュからのオブジェクトの取得と格納のために使用されます。Hello Worldアプリケーションは非常に基本的ですが、CacheFactory
クラスとNamedCache
インタフェースの使用方法を実際に示します。
例2-1 サンプルのHelloWorldスタンドアロン・アプリケーション
package com.examples; import com.tangosol.net.CacheFactory; import com.tangosol.net.NamedCache; public class HelloWorld { public static void main(String[] args) { String key = "k1"; String value = "Hello World!"; CacheFactory.ensureCluster(); NamedCache<Object, Object> cache = CacheFactory.getCache("hello-example"); cache.put(key, value); System.out.println((String)cache.get(key)); CacheFactory.shutdown(); } }
この例のキャッシュ・サーバーは、デフォルトでキャッシュのデータを格納するように構成されます。データは、クラスタのすべてのメンバーが使用可能であり、それらのメンバーがクラスタから離脱した後も保持されます。たとえば、Hello Worldアプリケーションは、キャッシュにキーをロードし、そのキーを表示してから終了します。ただし、キャッシュとキーは、その後もすべてのクラスタ・メンバーが使用できます。
この手順では、接続ファクトリ・コマンド行ツールを使用して、hello-example
キャッシュに接続し、キャッシュ内のすべての項目を一覧表示します。ここでは、Coherenceのキャッシュが永続性と分散性の両方の性質を持っていることを示します。
キャッシュを確認するには:
ステップ4では、Hello WorldアプリケーションをJSPページとして再実装するなどの、一連の手順を実行します。サンプルをJavaEEサーバーにデプロイされるWebアプリケーションとしてパッケージ化する手順も含まれています。アプリケーションはアプリケーション・サーバー上で実行され、キャッシュ・サーバーに参加するキャッシュ・ノードを起動します。キーk2
と値Hello World!
がhello-example
キャッシュに入れられ、キーの値が取得および出力されてからアプリケーションが終了します。最後に、追加のクラスタ・ノードが起動され、キーがキャッシュ内にあることが確認されます。
注意:
WebLogic Serverには、Coherenceアプリケーションのパッケージ化およびデプロイを標準化するCoherence統合が用意されています。Oracle Coherenceの管理のCoherenceアプリケーションのWebLogic Serverへのデプロイを参照してください。この項の手順は、WebLogic Server固有のもの(WebLogic Serverに推奨される手順)ではありません。
この項には次のトピックが含まれます:
この例のキャッシュ・サーバーは、デフォルトでキャッシュのデータを格納するように構成されます。データは、クラスタのすべてのメンバーが使用可能であり、それらのメンバーがクラスタから離脱した後も保持されます。たとえば、Hello Worldアプリケーションは、キャッシュにキーをロードし、そのキーを表示してから終了します。ただし、キャッシュとキーは、その後もすべてのクラスタ・メンバーが使用できます。
この手順では、接続ファクトリ・コマンド行ツールを使用して、hello-example
キャッシュに接続し、キャッシュ内のすべての項目を一覧表示します。ここでは、Coherenceのキャッシュが永続性と分散性の両方の性質を持っていることを示します。
キャッシュを確認するには:
この項では、Coherenceの開発用にJDeveloperをセットアップするための基本手順を説明します。この説明は、IDE内でCoherenceを実行するためのものであり、開発時の一般的なアプローチになります。説明はJDeveloperに固有のものですが、任意のIDEで同じアプローチが可能です。具体的な手順は、IDEのドキュメントを参照してください。
この項には次のトピックが含まれます:
JDeveloperを使用してキャッシュ・サーバー(DefaultCacheServer
)およびキャッシュ・インスタンス(CacheFactory
)を実行できます。各インスタンスはそれぞれ別のJavaプロセスとして起動され、標準出力をプロセス・ログに記録します。キャッシュ・コマンドなどの入力は、コマンド行から起動された場合と同様にプロセスに直接入力できます。この構成では、Coherenceソリューションの開発とテストが可能です。
JDeveloperでCoherenceを実行するには:
Javaでは、スレッドとスレッドによって保持されているすべてのロックのリストを標準出力にダンプできます。これは、Linux環境ではkill
コマンド、Windows環境では[Ctrl]+[Break]
で実行できます。スレッド・ダンプは、デッドロックの検出など、開発段階でのトラブルシューティングに役立ちます。
JDeveloperでCoherenceソリューションを開発する場合は、プロセスのログ・タブにスレッド・ダンプを直接表示できます。そのためには、JDeveloperで実行されているJavaプロセスに前述の信号を送信します。
JDeveloperでスレッド・ダンプを表示するには:
JDeveloperを使用してCoherenceの構成ファイルを作成できます。JDeveloperによって適切なXSDファイルがロードされ、「コンポーネント・パレット」内に要素がすべてリストされます。さらに、JDeveloperは、構成ファイルをXSDと照合して検証し、XMLコードを完了させます。次の手順によって、キャッシュ構成ファイルとオペレーション・オーバーライド・ファイルが作成されます。同一の手順を、任意のCoherence構成ファイルに対して使用できます。
JDeveloperでキャッシュ構成ファイルとオペレーション・オーバーライド・ファイルを作成するには: