この章の内容は次のとおりです。
CacheService
を使用してリモート・キャッシュ内のInteger
値を増分してから、InvocationService
を使用してキャッシュから値を取得する、シンプルなクライアントです。DefaultCacheServer
)の一環として開始されます。TestClient
アプリケーションはjava
コマンドを使用して起動し、キャッシュ構成ファイルを使用するように構成する必要があります。親トピック: はじめに
手順を完了するには、Coherence for Javaをインストールする必要があります。わかりやすくするため、またデプロイしやすくするために、この例では、クライアントとキャッシュ・サーバーを同じコンピュータで実行します。通常は、Extendクライアントとキャッシュ・サーバーは、別々のシステムに配置されます。
dist-extend
という名前の分散キャッシュを定義し、これを使用してクライアント・データをクラスタに格納します。クラスタ側を構成する手順は、次のとおりです。
リモート・キャッシュ・スキームには、クライアントの接続先のクラスタ上にあるプロキシ・サービスのサービス名と一致するサービス名が含まれます。さらに、クラスタで使用されるキャッシュ名もリモート・キャッシュ・スキームの名前として使用する必要があります。この例(ステップ1に基づく)では、リモート・キャッシュ・スキームのサービス名はExtendTcpCacheService
で、キャッシュ名はdist-extend
です。最後に、リモート・キャッシュ・スキームには、クラスタのネーム・サービスのアドレスとポートが含まれ、これらはプロキシの検出に使用されます。ネーム・サービスは、デフォルトで7574のクラスタ・ポート上で実行されます。
この例のExtendクライアントはリモート・キャッシュのタスクを起動するため、リモート起動スキームが必要です。リモート起動スキームはExtendTcpInvocationService
サービスを定義し、これによってクライアントはInvocable
インスタンスを作成して、それを処理のためにクラスタに送信できます。リモート起動スキームでは、ネーム・サービスを使用してプロキシを検出し、接続先のプロキシ・サービスの名前が含まれます。
クライアント側を構成する手順は、次のとおりです。
CacheService
を使用してリモート・キャッシュ内のInteger
値を増分してから、InvocationService
を使用してキャッシュから値を取得する、シンプルなクライアントです。クライアントはシステム出力に値を書き込んでから終了します。注意:
クライアント・クラスは、クラスタ内のすべてのキャッシュ・サーバーのクラスパス上にある必要があります。TestClient$1
クラスは、コンパイル中に生成される匿名の内部クラスです。これはシリアライズ化されて、クラスタ・メンバー上で実行されているInvocationService
に送信されます。この例では、クライアントおよびクラスタ・メンバーが1つのコンピュータ上で実行されています。このため、両方のJava起動が同じクラスパスを使用します。
この例は、Coherenceノード(つまりクラスタ内)でもそのまま実行できます。TCP/IPを介してリモート・クラスタ・ノードに送信される操作は、クライアント・アプリケーションに対して完全に透過的になります。
サンプル・アプリケーションを作成する手順は、次のとおりです。
Coherence*Extend InvocationService
当然、Coherence*Extendクライアントはクラスタやクラスタ内で実行されているメンバーを直接認識しないため、Coherence*Extend InvocationService
のInvocable
タスクを実行できるのは、クライアントが接続されているJVMに対してのみです。したがって、必ずnullメンバーをquery()
メソッドに設定して渡す必要があります。結果として、実行による単一の結果がローカルのMember
を使用してキー設定されます(クライアントがクラスタの一部でない場合はnullに設定されます)。このMember
は、service.getCluster().getLocalMember()
をコールすることで取得できます。またCoherence*Extend InvocationService
は、同期タスクの実行のみをサポートします(つまりexecute()
メソッドはサポートされません)。
DefaultCacheServer
)の一環として開始されます。キャッシュ・サーバーは、ステップ1で作成したキャッシュ構成を使用するように構成する必要があります。また、キャッシュ・サーバー・プロセスは、実行時にクラスパス上でTestClient
アプリケーションを検出できる必要があります。次のコマンド行では、キャッシュ・サーバー・プロセスが開始され、coherence.cacheconfig
システム・プロパティを使用して、ステップ1で作成したキャッシュ構成ファイルに明示的に名前が付けられます。
java -cp COHERENCE_HOME\lib\coherence.jar;PATH_TO_CLIENT -Dcoherence.cacheconfig=PATH\example-config.xml com.tangosol.net.DefaultCacheServer
コンソール出力をチェックして、プロキシ・サービスが開始されていることを確認します。出力メッセージは次のようになります。
(thread=Proxy:ExtendTcpProxyService:TcpAcceptor, member=1): TcpAcceptor now listening for connections on 192.168.1.5:7077
TestClient
アプリケーションはjava
コマンドを使用して起動し、キャッシュ構成ファイルを使用するように構成する必要があります。
次のコマンド行でアプリケーションを実行します。ここでは、TestClient
クラスが現在のディレクトリに配置されていると想定しています。キャッシュ構成ファイルは、coherence.cacheconfig
システム・プロパティを使用して明示的に名前が付けられます。
java -cp .;COHERENCE_HOME\lib\coherence.jar -Dcoherence.cacheconfig=PATH\example-client-config.xml TestClient
出力には、クライアントが拡張プロキシのTCPアドレスに正常に接続したことやキャッシュ内のキーの現在の値などが表示されます。クライアントを再度実行すると、キーの値が増分します。
注意:
キャッシュ・サーバー・プロセスの出力に、起動タスクがExtendTcpInvocationService
サービスを使用してリモートに実行されたことを確認するメッセージがあるか調べます。
This has been run...