JBoss Data Gridをライブラリモードで使ってみよう
プログラムの解説
最後に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をご確認ください。
- EJBやCDIのアノテーションを利用して、JDGのキャッシュ操作を行う本クラスをシングルトンインスタンスのEJBとして定義しています。
- @PostConstructアノテーションを利用して、このクラスの初期化メソッドcreateCacheManagerを定義しています。
- JDGのCacheManagerクラスとライブラリモードでのキャッシュ設定を事前定義したXMLファイル(infinispan-local.xml)を使い、キャッシュマネージャの初期化を行います。このキャッシュマネージャをアプリケーションから利用することで、キャッシュに対する操作を行います。
- 初期化したキャッシュマネージャを取得するためのアクセスメソッドを定義しています。
このキャッシュマネージャを利用している側のソースコードも確認してみましょう。「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 |
3 |
57 | message = c.get(key); | 4 |
58 | log.info("get: " + key + " " + message); | |
59 | } |
GetController.javaの解説は下記1~4をご確認ください。
- 先に紹介したLocalCacheManagerProviderクラスのgetCacheManager()メソッドを利用して、キャッシュマネージャのインスタンスを取得しています。正確には、同ディレクトリにあるResourcesクラスのプロデューサメソッドgetDefaultCacheManager()を利用しています。
- 画面で「Get」ボタンが押された場合に呼び出されるgetOne()メソッドが定義されています。上記の抜粋コードには含まれていませんが、「GetAll」ボタンが押された場合の処理としてgetAll()メソッドも宣言されています。
- キャッシュマネージャのgetCache()メソッドを利用して、キャッシュ(Cache)を取得しています。
- 画面に入力されたキーを使ってキャッシュからのget処理を行い、対象データの値を取得しています。
いかがでしたでしょうか? これで、JDGのライブラリモードを使ったアプリケーションの作り方が確認できたと思います。これまでの説明にあったように、本プログラムではキャッシュ定義をXMLで事前定義する方式を用いています。
しかし、実は「JBoss Data Grid 6.1.0 Quickstarts」に含まれているプログラム的にキャッシュを構成するサンプル「helloworld-jdg」をベースに作成しています。そのため、これらの2つのプロジェクトを比較して見て頂くと、2つの設定方式の違いが分かりやすいと思います。
次回は、JBoss Data Gridの構成とチューニングポイントついて解説したいと考えています。ご期待ください。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- JBoss Data Gridを使ってみる:Hot Rod API編
- JBoss Data Gridを使ってみる:インストール編
- JBoss Data Gridの構成とチューニングポイント
- 企業向けデータグリッド:Red Hat JBoss Data Gridの特徴
- JBoss Data Gridを監視してみよう
- JBoss Enterprise Application Platformのアーキテクチャを理解する
- JBoss Web- Tomcatエボリューション
- JBossの歴史と単体での性能比較
- NoSQL/KVSあれこれ:Red Hat JBoss Data Gridとは
- JBoss Enterprise Application Platformを操作する