前回の記事の最後で、次回はJBossについて語る、と書いたが、(例のごとく)公約を破る。公約は破るためにある。
今回は、JavaでInfinispan 7.2.3(2015/6/25現在最新リリースバージョン)を使うデモをしてみる。InfinispanはClient-Serverモードで使うことにする。なお、ここでは、Mavenを利用する。使用したOSはwindows 8.1、Javaのバージョンは1.8だ。ただ、そこら辺はほとんど気にしなくていい。重要なのは、Infinispanのバージョンが5.3以上、という点だ。5.2以前と5.3以降では、Infinispanのフォルダー内の構造から、configurationファイルの中身に至るまで、大きく異なっている。
(参考:CLOVER Infinispan Server 5.3を使ってみる)
デモのシナリオは次の通り。
- Infinispanをダウンロードし、起動
- Mavenプロジェクトを作成し、pom.xmlを少し修正
- ソースコードを少しいじる
Infinispanのダウンロード・起動
↓から、7.2.3.FinalのServerをダウンロードする。
http://infinispan.org/download/
そして、zipを解凍する。
Infinispanの起動は、infinispan-server-7.2.3.Final\bin内のstandalone.batをダブルクリックするだけだ。当然、コマンドプロンプトから実行しても良い。
実行すると、コンソール上に、数十行くらい、メッセージが流れ、数秒後に止まる。これで、Infinispanは起動中になる。コンソールはこのまま放置しておく。停止させたい場合は、Ctrl+Cを入力すれば良い。
起動時に流れたメッセージの中で、記憶にとどめておいて欲しい文字列がある。
HotRodServer listening on 127.0.0.1:11222上のような文字列が、中盤から後半あたりあるはずだ。このIPアドレスとポート番号は、Javaでコードを書くときに利用するため、覚えておく。
Mavenプロジェクトの作成・pom.xmlの修正
Mavenプロジェクトを新規作成する。ひな形として利用するアーキタイプは何でもいい。中身がすっからかんの- グループID
- org.apache.maven.archetypes
- アーティファクトID
- maven-archetype-quickstart
次に、pom.xmlの修正をする。以下に、pom.xmlの全文を晒す。
4.0.0 infinispan training-infinispan 0.0.1-SNAPSHOT jar training-infinispan http://maven.apache.org UTF-8 jboss.org http://repository.jboss.org/nexus/content/groups/public true true junit junit 3.8.1 test org.infinispan infinispan-client-hotrod 7.2.3.Final org.infinispan infinispan-commons 7.2.3.Final
ソースコードの編集
以下のように書けばよい。
(次のサイトのコードを参考にさせていただきました。kagamihogeの日記 infinispanを動かした)
package infinispan.training_infinispan; import org.infinispan.client.hotrod.RemoteCache; import org.infinispan.client.hotrod.RemoteCacheManager; /** * Hello world! * */ public class App { public static void main(String[] args) throws Exception { RemoteCacheManager cachemanager = new RemoteCacheManager("127.0.0.1:11222"); RemoteCache< Object, Object > cache = cachemanager.getCache(); System.out.println(cache.containsKey("key")); cache.put("key", "value"); System.out.println(cache.containsKey("key")); System.out.println(cache.get("key")); } }
RemoteCacheManagerの引数に入れた文字列は、Infinispan起動時のメッセージに出てきたIPアドレスとポート番号だ。
あとは、実行をすれば、以下の出力が得られ、Infinispanを利用できたことが分かる。
INFO: ISPN004021: Infinispan version: 7.2.3.Final [木 6 25 19:50:16 JST 2015] false true valueただし、Eclipseで上のコードを見ると、RemoteCacheManagerに訂正線が引かれ、『コンストラクター RemoteCacheManager(String) は使用すべきではありません』と諫められる。RemoteCacheManager(String)の実装部(RemoteCacheManager.class)を見てみると、@Deprecatedアノテーションが付いており、非推奨であることが明示されている。 RemoteCacheManager.classの中で@Deprecatedアノテーションが付いていないコンストラクターは、下の4つだけだ。
RemoteCacheManager(Configuration configuration) RemoteCacheManager(Configuration configuration, boolean start) RemoteCacheManager(boolean start) RemoteCacheManager()
この中で、下の2つは、hotrod-client.propertiesを読み込んでいる。すなわち、「Configurationクラスを使え」、「サーバーのアドレスをソースコードを引数に直打ちするな」と言うことだ。
(RemoteCacheManagerについての補足)
おわりに
今回は、JavaでInfinispanを使う方法を、簡単に紹介してみた。Infinispanについて書いてみようと思ったのは、自分がInfinispanを触っていて、意外にも最近の情報が見つからなかったためだ。は2011年頃の情報は多く見つかるが、特にバージョン5.3以降のInfinispan大改変後の情報が見つからない。Infinispanは簡単に使えるインメモリKVSなので、もう少し普及して、情報が増えてくれたらうれしい限りだ。
今回作成したmavenプロジェクトは、Githubに公開している。
https://github.com/nktener0902/infinispanDemo
ダウンロードして、Mavenプロジェクトとしてインポートすれば使えるはずだ。
コメント
コメントを投稿