kagamihogeの日記

kagamihogeの日記です。

Oracle Coherenceためしてみた

Oracle Coherenceてのは、Oracleの分散KVS. 色んな機能があるんでKVSとくくるのはちと違うような気がしないでもないけど、今回はキャッシュサーバ一つだけ起動して単なる共有キャッシュとしてkey-value入れるだけを試します。

ちなみにWindowsでやってます。

http://www.oracle.com/technetwork/jp/middleware/coherence/overview/index.html から Oracle Coherence 3.7.1をDL、解凍して適当なディレクトリに置く。なお、ライセンスがうんぬんな所は調べて無いんで分かんないです。

コマンドプロンプトからcoherence\bin\cache-server.cmdを実行する。起動しました的メッセージが出れば、とりあえずキャッシュサーバは起動してる。
次にキャッシュサーバにキャッシュのインスタンスを作るが、コマンドラインのツールが用意されてるので、そちらを使う。
別のコマンドプロンプトを立ち上げてcoherence\bin\coherence.cmdを実行する。
もいっこプロンプト出してそっちでもcoherence.cmdを実行しておく。こうするとデモ的にも分かりやすい動きが確認できるので。
この時点でプロンプトの窓数は(というかJVMのプロセスが)3つ。cache-server.cmdが1個でcoherence.cmdが2個。
coherence.cmdを実行したプロンプトが対話モードになってのるを確認したら、下記のコマンドで「Test」という名前のキャッシュのインスタンスが出来る。


cache Test
Testインスタンスに接続状態になってるので、下記でいわゆるkey-valueが入れられる。

put key1 Hello
そのあと下記を打つと「Hello」と返ってくる。

get key1

この状態で、二つ目のcoherence.cmdのプロンプトから下記を打つとTestインスタンスからkey1の値が返ってくる。


cache Test
get key1

絵的にはこんな感じ。

この状態で、↓のようなJavaのコードを書くとキャッシュのインスタンスにアクセスできる。

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

public class Main {

    public static void main(String[] args) {
        NamedCache cache = CacheFactory.getCache("Test");
        System.out.println((String)cache.get("key1"));
        cache.put("key1", "hoge");
        System.out.println((String)cache.get("key1"));
    }

}

Installing Oracle Coherence for Javaを見ると起動スクリプトをいくらか変えないと動かない的なことが書いてあるけど、なんも考えずに起動スクリプト実行したら動いたし……「なんかまぁよくわかんないけど動かしてみっか」という邪悪で怠惰な開発者向けに、デフォルトではテキトーな設定で動くような設定になってるような気がしないでもない。ログ見てると「Development mode」とか出てるしね……ちゃんと使うにはドキュメント読みましょうね、ということで。