JBoss Data Grid入門 -インストールからチューニングまで- 6

プログラムの解説

プログラムの解説

最後にJDGをライブラリモードで利用する方法について、サンプルコード LocalCacheManagerProvider.java の解説をします。
このファイルは、helloworld-jdg-for-thinkitディレクトリ以下の
src/main/java/org/jboss/as/quickstarts/datagridに格納されています。

下記の表2はLocalCacheManagerProvid.java よりキャッシュの初期化に関する箇所を抜粋したものです。

表2:LocalCacheManagerProvid.java の抜粋

ソースコード 
19@Named 
20@Startup 
21@Singleton 
22@ConcurrencyManagement(ConcurrencyManagementType.BEAN) 
23public class LocalCacheManagerProvider {1
   
26 private DefaultCacheManager _cacheManager; 
   
30 @PostConstruct 
31 public void createCacheManager() {2
32  try { 
33   _cacheManager = new DefaultCacheManager("infinispan-local.xml");3
34  } catch (IOException e) { 
35   throw new RuntimeException(e); 
36  } 
37 } 
38  
39 publicDefaultCacheManagergetCacheManager() {4
40  return _cacheManager; 
41 } 

LocalCacheManagerProvider.javaの解説は下記1~3をご確認ください。

  1. EJBやCDIのアノテーションを利用して、JDGのキャッシュ操作を行う本クラスをシングルトンインスタンスのEJBとして定義しています。
  2. @PostConstructアノテーションを利用して、このクラスの初期化メソッドcreateCacheManagerを定義しています。
  3. JDGのCacheManagerクラスとライブラリモードでのキャッシュ設定を事前定義したXMLファイル(infinispan-local.xml)を使い、キャッシュマネージャの初期化を行います。このキャッシュマネージャをアプリケーションから利用することで、キャッシュに対する操作を行います。
  4. 初期化したキャッシュマネージャを取得するためのアクセスメソッドを定義しています。

このキャッシュマネージャを利用している側のソースコードも確認してみましょう。「Get」ボタンを押した時の処理はGetController.javaに、「Put」ボタンの処理はPutController.javaに記載されています。

下記の表3はGetController.java より「Get」ボタン押下時の処理に関する箇所を抜粋したものです。

表3:GetController.java の抜粋

ソースコード 
40public class GetController { 
   
45@Inject 
46DefaultCacheManager m;1
47  
48private String key; 
49  
50private String message; 
   
54// Called by the get.xhtml - get button 
55publicvoidgetOne() {2
56Cache c = m.getCache();3
57message = c.get(key);4
58log.info("get: " + key + " " + message); 
59} 

GetController.javaの解説は下記1~4をご確認ください。

  1. 先に紹介したLocalCacheManagerProviderクラスのgetCacheManager()メソッドを利用して、キャッシュマネージャのインスタンスを取得しています。正確には、同ディレクトリにあるResourcesクラスのプロデューサメソッドgetDefaultCacheManager()を利用しています。
  2. 画面で「Get」ボタンが押された場合に呼び出されるgetOne()メソッドが定義されています。上記の抜粋コードには含まれていませんが、「GetAll」ボタンが押された場合の処理としてgetAll()メソッドも宣言されています。
  3. キャッシュマネージャのgetCache()メソッドを利用して、キャッシュ(Cache)を取得しています。
  4. 画面に入力されたキーを使ってキャッシュからのget処理を行い、対象データの値を取得しています。

いかがでしたでしょうか? これで、JDGのライブラリモードを使ったアプリケーションの作り方が確認できたと思います。これまでの説明にあったように、本プログラムではキャッシュ定義をXMLで事前定義する方式を用いています。
しかし、実は「JBoss Data Grid 6.1.0 Quickstarts」に含まれているプログラム的にキャッシュを構成するサンプル「helloworld-jdg」をベースに作成しています。そのため、これらの2つのプロジェクトを比較して見て頂くと、2つの設定方式の違いが分かりやすいと思います。

次回は、JBoss Data Gridの構成とチューニングポイントついて解説したいと考えています。ご期待ください。

この記事のキーワード

この記事をシェアしてください

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored