JBoss Data Gridをライブラリモードで使ってみよう

2013年9月19日(木)
高橋 丈

プログラムの解説

最後に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)  
23 public 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 の抜粋

ソースコード  
40 public class GetController {  
     
45 @Inject  
46 DefaultCacheManager m; 1
47    
48 private String key;  
49    
50 private String message;  
     
54 // Called by the get.xhtml - get button  
55 publicvoidgetOne() { 2
56 Cache c = m.getCache(); 3
57 message = c.get(key); 4
58 log.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の構成とチューニングポイントついて解説したいと考えています。ご期待ください。

レッドハット株式会社
JBossサービス事業部 ソリューションアーキテクト
SIerでWeb系フレームワーク構築やコンサルティング業務に携わった後、日本BEAシステムズ、日本オラクル等の外資系ベンダでミドルウェアのプリセールスに従事。2011年より現職。自動車/自転車等のスピードが出るものが好き。

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています