#chiroito ’s blog

Java を中心とした趣味の技術について

Coherenceでのメモリ共有

ORACLE Lovers第25回勉強会で杉さんからCoherenceについて御教授頂いたので
Eclipseを使ってCoherenceの利用してみようと思った。

環境

Eclipse 3.6
Coherence 3.5.3
coherenceは解凍してあれば良いです。
設定等は必要ありません。

プロジェクトとソースの作成

まずは、Eclipseでプロジェクトを作成し、プロジェクトにcoherence.jarを参照ライブラリに追加します。
プロジェクトを右クリックして[ビルド・パス(B)]-[外部アーカイブの追加(V)]から足します。

プロジェクトに下記のファイルを追加します。
注:javaが分からない方はファイル名とソースをそのまま使用して下さい。

CoherenceRun.java
package com.chirokings.coherence;

import com.tangosol.net.CacheFactory;
import com.tangosol.net.NamedCache;

public class CoherenceRun {

public static void main(String[] args) {

NamedCache cache = CacheFactory.getCache("VirtualCache");
String key = "key";
String value = (String) cache.get(key);

if( value == null ){
System.out.println("メモリにないよ");
value="ストリング";
}else{
System.out.println("メモリにあった。"+value);
}

cache.put(key, value);
value = (String) cache.get(key);

if( value == null ){
System.out.println("メモリにないよ");
}else{
System.out.println("メモリにあった。"+value);
}
}
}

実行構成

CoherenceRun.javaを右クリックし[実行]-[実行の構成]を選択します。
【実行構成】ダイアログが表示されますので左側から[Javaアプリケーション]をダブルクリックするとCoherenceRunが追加されます。

[引数]タブで[VM引数]に下記を追加します。
-Xms512M -Xmx512M
なお、実行するPCがDHCPでIPを取得している場合は下記とします。
-Xms512M -Xmx512M -Dtangosol.coherence.localhost=127.0.0.1 -Dtangosol.coherence.ttl=0"

実行

実行は【実行構成】ダイアログでCoherenceRunを選んだ状態で右下の[実行]ボタンを押すだけです。
下記のような出力結果になるはずです。(エラー出力除く)
メモリにないよ
メモリにあった。ストリング
次に、cache.put(key, value);の次の行でブレークポイントを張ってデバック実行してみます。
デバッグ構成】ダイアログから実行します。
ブレークポイントで止まったことを確認して、もう一つ実行してみます。
そうすると、1度目と異なる結果になることが分かります。
両方の処理を再開すると最終的にこのような出力になるはずです。
メモリにないよ
メモリにあった。ストリング
メモリにあった。ストリング
メモリにあった。ストリング
これは1度目の実行の方でメモリに保存されているためです。
(その状態を保つため、ブレークポイントで終わらせないようにしています)