Person
オブジェクト)をキャッシュに格納する単純なアプリケーションです。このサンプルでは、ローカル・キャッシュ、パーティション・キャッシュおよびパススルー・キャッシュの使用方法を示します。
Coherenceが初めての場合は、Coherence固有のNamedCache
の例の実行も検討してください。最初のCoherenceアプリケーションの作成を参照してください。
この章の内容は次のとおりです。
親トピック: Coherence JCache実装の使用
この章のサンプルでは、単純なPerson
オブジェクトを使用します。Person
オブジェクトには、コンストラクタと、姓、名および年齢という3つのフィールドが含まれています。Person
オブジェクトはSerializable
インタフェースを実装しています。オブジェクトをパーティション・キャッシュに格納する場合は、シリアライズが必要になります。
例34-1 単純なPersonオブジェクト
package com.examples; import java.io.Serializable; public class Person implements Serializable { private String m_sFirstName; private String m_sLastName; private int m_nAge; private static final long serialVersionUID = 99L; public Person(String sFirstName, String sLastName, int nAge) { m_sFirstName = sFirstName; m_sLastName = sLastName; m_nAge = nAge; } public String getFirstName() { return m_sFirstName; } public String getLastName() { return m_sLastName; } public int getAge() { return m_nAge; } public String toString() { return "Person( " +m_sFirstName + " " + m_sLastName + " : " + m_nAge + ")"; } }
アプリケーションは、JCache APIを使用してキャッシュにアクセスし、キャッシュとの相互作用を図ります。APIは、キャッシュを作成および使用するメソッドを提供しています。キャッシュ・タイプが定義されていない場合にCoherenceが使用するデフォルトのキャッシュ・タイプは、ローカル・キャッシュ(アプリケーション・プロセスにローカル)です。
この項には次のトピックが含まれます:
次のアプリケーションは、1つのPerson
オブジェクトをローカル・キャッシュに格納します。このアプリケーションは、キャッシュ・プロバイダの取得方法、キャッシュ・マネージャの作成方法、キャッシュの構成方法および作成方法、キャッシュの使用方法を示しています。
例34-2 サンプルJCacheアプリケーション
package com.examples; import javax.cache.Cache; import javax.cache.CacheManager; import javax.cache.Caching; import javax.cache.configuration.MutableConfiguration; import javax.cache.spi.CachingProvider; public class JCacheExample { public static void main(String[] args) { CachingProvider cachingProvider = Caching.getCachingProvider(); CacheManager cacheManager = cachingProvider.getCacheManager(); MutableConfiguration<String, Object> config = new MutableConfiguration<String, Object>(); config.setStoreByValue(true).setTypes(String.class, Object.class); Cache<String, Object> cache = cacheManager.createCache("MyCache", config); Person p = new Person("John","Doe",24); String key = "k"; Person value = p; cache.put(key, value); System.out.println("\n Cache: " + cache.getName() + " contains: " + cache.get(key) + "\n"); cacheManager.close(); } }
パーティション・キャッシュおよびパススルー・キャッシュは、キャッシュ・データを分散させるためにCoherenceクラスタを使用します。このタスクでは、オペレーション・オーバーライド・ファイルを作成して初期状態のデフォルト・クラスタ構成を修正します。具体的には、デフォルト構成を修正してプライベート・クラスタを作成し、ネットワーク上で実行されている可能性のある既存のCoherenceクラスタにJVMプロセスが参加しないようにします。
サンプル・クラスタを構成するには:
tangosol-coherence-override.xml
という名前のファイルを作成します。
次のオーバーライド構成を追加して、cluster_name
をこのクラスタ内で一意の値に置き換えます。たとえば、クラスタ名に自分の名前を使用します。
<?xml version='1.0'?>
<coherence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.oracle.com/coherence/coherence-operational-config"
xsi:schemaLocation="http://xmlns.oracle.com/coherence/coherence-operational-config
coherence-operational-config.xsd">
<cluster-config>
<member-identity>
<cluster-name>cluster_name</cluster-name>
</member-identity>
</cluster-config>
</coherence>
APPLICATION_HOME
\config
ディレクトリにファイルを保存します。
パーティション・キャッシュは、キャッシュ・エントリをCoherenceクラスタ内の任意の数のキャッシュ・サーバーに分散させるキャッシュです。パーティション・キャッシュに格納されるエントリは、アプリケーション・プロセスの終了後にバックアップされ、クラスタ上に永続化されます。パーティション・キャッシュの作成を参照してください。
このタスクでは、キャッシュ・サーバー・プロセスとJCacheExample
アプリケーション・プロセスの2つの個別のJavaプロセスによってクラスタが形成されます。簡素化を図るため、この2つのプロセスは単一のマシン上に置かれます。この2つのプロセスは1つのコンピュータ上に共存します。キャッシュ・サーバーは、デフォルトでキャッシュ・データを格納するように構成されます。最後に、CoherenceのCacheFactory
によって、JCacheExample
アプリケーションがクラスタ上に正常にキャッシュを作成およびロードしたことが検証されます。
この項には次のトピックが含まれます:
コマンド・プロンプトから、Javaの-cp
オプションでAPPLICATION_HOME
\config
ディレクトリを含めてDefaultCacheServer
クラスを実行し、キャッシュ・サーバー・インスタンスを起動します。クラスパスには、cache-api.jar
、coherence-jcache.jar
およびcoherence.jar
ライブラリも含める必要があります。クラスパス上で、coherence.jar
ライブラリよりも先にオペレーション・オーバーライド・ファイルおよびcoherence-jcache.jar
がロードされることを確認します。最後に、coherence.cacheconfig
システム・プロパティを使用して、coherence-jcache.jar
の中にあるJCacheのcoherence-jcache-cache-config.xml
キャッシュ構成ファイルを明示的に使用します。次に例を示します。
java -Dcoherence.cacheconfig=coherence-jcache-cache-config.xml -cp APPLICATION_HOME\config;COHERENCE_HOME\lib\cache-api.jar; COHERENCE_HOME\lib\coherence-jcache.jar;COHERENCE_HOME\lib\coherence.jar com.tangosol.net.DefaultCacheServer
キャッシュ・サーバーの出力から、jcache-partitioned-service
というクラスタの上位メンバーである分散キャッシュ・サービスが作成されたことを確認してください。
(thread=DistributedCache:jcache-partitioned-service, member=1): Service jcache-partitioned-service joined the cluster with senior service member 1
coherence.jcache.configuration.classname
システム・プロパティによって、Coherence JCacheプロバイダがローカル・キャッシュのかわりにパーティション・キャッシュを使用するように構成されます。アプリケーション・コードにはいかなる変更も必要ないため、JCacheプロバイダ間の移植性が得られます。さらに、Coherenceはアプリケーション・スコープおよびキャッシュ構成も管理します。
Person
オブジェクトをパーティション・キャッシュに格納するには:
パススルー・キャッシュは、既存のCoherenceキャッシュ(Coherenceキャッシュ構成ファイルで定義されるキャッシュ)に委任するキャッシュです。パススルー・キャッシュによってすべてのCoherenceネイティブの機能が使用できるようになり、キャッシュ構成の高度な制御が可能になります。
このタスクでは、キャッシュ・サーバー・プロセスとJCacheExample
アプリケーション・プロセスの2つの個別のJavaプロセスによってクラスタが形成されます。簡素化を図るため、この2つのプロセスは単一のマシン上に置かれます。この2つのプロセスは1つのコンピュータ上に共存します。キャッシュ・サーバーは、デフォルトでキャッシュ・データを格納するように構成されます。最後に、CoherenceのCacheFactory
によって、JCacheExample
アプリケーションがクラスタ上に正常にキャッシュを作成およびロードしたことが検証されます。
この項には次のトピックが含まれます:
コマンド・プロンプトから、Javaの-cp
オプションでAPPLICATION_HOME
\config
ディレクトリおよびcoherence.jar
ライブラリを含めてDefaultCacheServer
クラスを実行し、キャッシュ・サーバー・インスタンスを起動します。クラスパス上で、coherence.jar
ライブラリよりも先にオペレーション・オーバーライド・ファイルがロードされることを確認します。最後に、coherence.cacheconfig
システム・プロパティを使用して、example-config.xml
キャッシュ構成ファイルを明示的に定義します。次に例を示します。
java -Dcoherence.cacheconfig=example-config.xml -cp APPLICATION_HOME\config;COHERENCE_HOME\lib\coherence.jar com.tangosol.net.DefaultCacheServer
coherence.jcache.configuration.classname
システム・プロパティによって、Coherence JCacheプロバイダがパススルー・キャッシュを使用するように構成されます。アプリケーション・コードにはいかなる変更も必要ありません。
コマンド・プロンプトで、JCacheExample
クラスを実行し、coherence.jcache.configuration.classname
システム・プロパティをpassthrough
に、coherence.cacheconfig
システム・プロパティをexample-config
に、coherence.distributed.localstorage
システム・プロパティをfalse
に設定します。Javaの-cp
オプションで、APPLICATION_HOME
\config
ディレクトリを含めます。クラスパスには、cache-api.jar
、coherence-jcache.jar
およびcoherence.jar
ライブラリも含める必要があります。クラスパス上で、coherence.jar
ライブラリよりも先にオペレーション・オーバーライド・ファイルがロードされることを確認します。次に例を示します。
java -Dcoherence.jcache.configuration.classname=passthrough -Dcoherence.cacheconfig=example-config.xml -Dcoherence.distributed.localstorage=false -cp .;APPLICATION_HOME\config;COHERENCE_HOME\lib\cache-api.jar; COHERENCE_HOME\lib\coherence-jcache.jar;COHERENCE_HOME\lib\coherence.jar com.examples.JCacheExample
使用されるCoherence構成リソースを示すCoherenceのログ・メッセージが出力されます。tangosol-coherence-override.xml
ファイルおよびexample-config.xml
ファイルがロードされたことを確認してください。アプリケーション・プロセスはキャッシュ・サーバー・プロセスを含むクラスタに接続し、両方のプロセスがDistributedCache
サービスを実行します。これまでと同様に、アプリケーションはキャッシュ内のエントリを出力し、終了します。