この章では、キャッシュ・サーバーとキャッシュ・クライアントを起動する方法と停止する方法について基本的な説明を提供します。マルチキャストを使用する際のクラスタの構築に問題がある場合は、Oracle Coherence管理者ガイドでマルチキャスト接続テストの実行方法を参照してください。
この章の内容は次のとおりです。
キャッシュ・サーバーは、キャッシュしたデータを保存するクラスタ・メンバーです。複数のクラスタ・サーバーでクラスタを構成できます。各キャッシュ・サーバーはそれぞれ専用のJVMを使用します。
この項の内容は次のとおりです。
コマンド・ラインからキャッシュ・サーバーのインスタンスを起動するには、com.tangosol.net.DefaultCacheServerクラスを使用します。Javaの-cpオプションを使用して、coherence.jarファイルの場所およびtangosol-coherence-override.xmlファイルとcoherence-cache-config.xmlファイルの場所を指定します。これら構成ファイルの場所は、クラスパス上でcohernce.jarよりも前の位置に記述する必要があります。そのように記述しなかった場合は、coherence.jarファイルにあるデフォルトの構成ファイルを使用してキャッシュ・サーバーのインスタンスが起動します。構成ファイルの詳細は、第3章「構成について」を参照してください。
次の例では、キャッシュ・サーバー・メンバーを起動し、COHERENCE_HOME\configに置いた任意の構成ファイルを使用します。
java -server -Xms512m -Xmx512m -cp COHERENCE_HOME\config;COHERENCE_HOME\lib\coherence.jar com.tangosol.net.DefaultCacheServer
キャッシュ・サーバー・インスタンスを容易に起動できるように、COHERENCE_HOME\bin\cache-serverスクリプトが用意されています。このスクリプトを使用すると、基本的な環境を設定してDefaultCacheServerクラスを実行できます。このスクリプトには、Windowsベース・プラットフォーム用とUNIXベース・プラットフォーム用の両方があります。多くの場合、このスクリプトは特定のクラスタに合せて変更したうえで使用します。
|
ヒント: テスト中は、各キャッシュ・サーバーを一意に特定する複数のスクリプトをそれぞれ異なる名前で作成しておくと便利なことがあります。たとえば、cahe-server-a、cache-server-bのようにします。 |
キャッシュ・サーバーを起動するときに、必要に応じてアプリケーションでDefaultCacheServerクラスを使用または拡張できます。たとえば、キャッシュ・サーバーとそのサービスを起動する前に、アプリケーション固有の設定や処理を実行できます。
基本的な使用方法では、コール可能にしたmainメソッドで2つの引数を要求します。この引数の1つは、クラスパスにあるキャッシュ構成ファイルの場所であり、もう1つの引数は、停止したサービスを確認する時間間隔(秒)です。停止したサービスは、自動的に開始するように設定しておくことで開始されます(キャッシュ構成ファイルの<autostart>要素で構成します)。次の例では、mainメソッドを使用してキャッシュ・サーバーを起動します。
String[] args = new String[]{"my-cache-config.xml", "5"};
DefaultCacheServer.main(args);
DefaultCacheServer(DefaultConfigurableCacheFactory)コンストラクタは、ファクトリ・クラスを使用して、指定されたキャッシュ構成ファイルを使用するキャッシュ・サーバー・インスタンスを作成します。次の例では、DefaultCacheServerインスタンスを作成し、startAndMonitor(long)メソッドを使用して前の例と同様にキャッシュ・サーバーを起動します。
DefaultConfigurableCacheFactory factory;
factory = new DefaultConfigurableCacheFactory("my-cache-config.xml");
DefaultCacheServer dcs = new DefaultCacheServer(factory);
dcs.startAndMonitor(5000);
2つのstatic起動メソッド(start()およびstart(ConfigurableCacheFactory))を使用してキャッシュ・サーバーを起動し、制御を返すこともできます。ただし、多くの場合は、下位互換性を維持できるこれらのメソッドのかわりにCacheFactoryクラスを使用します。
よりきめ細かい制御を必要とするアプリケーションでは、DefaultCacheServerクラスのサブクラスを作成し、このクラスのメソッドを無効にして、目的とする任意のカスタム処理を実行できます。DefaultCacheServerクラスの詳細は、Oracle Coherence Java APIリファレンスを参照してください。
キャッシュ・クライアントは、クラスタに参加してそのクラスタのサービスと相互作用するクラスタ・メンバーです。キャッシュ・クライアントには、キャッシュとの間でデータをやりとりするアプリケーションのような単純なものもあれば、キャッシュにあるデータを処理するデータ・グリッド演算アプリケーションのような複雑なものもあります。キャッシュ・クライアントとキャッシュ・サーバーとの大きな違いは、一般的にクラスタの記憶域にはキャッシュ・クライアントは関与しないという点です。
この項の内容は次のとおりです。
パーティション・キャッシュ・サービス(分散キャッシュ)を使用するキャッシュ・クライアントでは、パーティション化したデータを保持しないようにします。記憶域を無効にしたキャッシュ・クライアントは良好なパフォーマンスを示し、使用するリソースも少なくてすみます。パーティション化したデータを分散する範囲は、キャッシュ・サーバー・インスタンスどうしのみとする必要があります。
tangosol.coherence.distributed.localstorageシステム・プロパティを使用して、プロセス単位でローカル記憶域を無効化します。これにより、キャッシュ・クライアントとキャッシュ・サーバーで同じ構成ディスクリプタを使用できます。例:
java -cp COHERENCE_HOME\config;COHERENCE_HOME\lib\coherence.jar -Dtangosol.coherence.distributed.localstorage=false com.MyApp
com.tangosol.net.CacheFactoryクラスを使用してキャッシュのインスタンスを取得するアプリケーションはすべてクラスタのメンバーとなり、キャッシュ・クライアントと見なされます。次の例は、キャッシュ・クライアントを起動する最も一般的な方法を示しています。
CacheFactory.ensureCluster();
NamedCache cache = CacheFactory.getCache("cache_name");
キャッシュ・クライアントであるアプリケーションを起動するときは、Javaの-cpオプションを使用して、coherence.jarファイルの場所およびtangosol-coherence-override.xmlファイルとcoherence-cache-config.xmlファイルの場所を指定します。これら構成ファイルの場所は、クラスパス上でcohernce.jarよりも前の位置に記述する必要があります。そのように記述しなかった場合は、coherence.jarファイルにあるデフォルトの構成ファイルを使用してキャッシュ・サーバーのインスタンスが起動します。構成ファイルの詳細は、第3章「構成について」を参照してください。例:
java -cp COHERENCE_HOME\config;COHERENCE_HOME\lib\coherence.jar -Dtangosol.coherence.distributed.localstorage=false com.MyApp
この項の内容は次のとおりです。
クラスタ・メンバーをシャットダウンするには、UNIXプラットフォームではkillコマンド、WindowsプラットフォームではCtrl+cを使用することが普通です。これらのコマンドでは、JVMの通常の終了で呼び出される標準のJVMシャットダウン・フックを開始します。
|
注意: kill -9コマンドを発行すると、異常なJVM終了が始まり、シャットダウン・フックは実行されません。ただし、終了するサービスがノードセーフであることが(JMXの管理を使用した確認で)終了前にわかっている場合は、一般的には正常なシャットダウンは不要です。 |
シャットダウン・コマンドを受け取ったクラスタ・メンバーが実行するアクションは、オペレーション・オーバーライド・ファイルの<shutdown-listener>要素で構成します。次のオプションを使用できます。
none: 明示的なシャットダウン・アクションは実行しません。外部シャットダウンに対する動作が目的どおりであることをテストで検証済である場合を除き、本番ではこの値の設定をお薦めします。
force: (デフォルト)Cluster.stop()をコールすることにより、ノードのハードストップ(強制停止)を実行します。これは、何も設定していない状態でのデフォルトの動作です。
graceful: Cluster.shutdown()をコールすることにより、通常のシャットダウンを実行します。
true: forceと同じ。
false: noneと同じ。
次の例では、シャットダウン・フックをnoneに設定します。
<?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>
<shutdown-listener>
<enabled system-property="tangosol.coherence.shutdownhook">none</enabled>
</shutdown-listener>
</cluster-config>
</coherence>
オペレーション・オーバーライド・ファイルのかわりにtangosol.coherence.shutdownhookシステム・プロパティを使用して、シャットダウン・フックの動作を指定します。例:
-Dtangosol.coherence.shutdownhook=none
DefaultCacheServerクラスには、キャッシュ・サーバーのシャットダウンに使用するメソッドが2つ用意されています。
|
注意: DefaultCacheServerクラス自身がstaticメンバーとして保持しているインスタンスをシャットダウンするスタンドアロン・アプリケーションで、シャットダウンがコールされることを想定しています。 |
shutdown(): DefaultCacheServer.main()メソッドまたはDefaultCacheServer.start()メソッドを使用して別のスレッドで起動したキャッシュ・サーバーのシャットダウンに使用するstaticメソッドです。
shutdownServer(): このメソッドは、アプリケーションが保持しているDefaultCacheServerインスタンスに対してコールします。