JBoss Data Gridをライブラリモードで使ってみよう
はじめに
連載6回目の今回のテーマはライブラリモードです。これまでの記事では構築の簡単なリモートクライアントサーバモードでの利用例を紹介してきましたが、今回はもう一つの使用モードであるライブラリモードを利用したRed Hat JBoss Data Grid (以降、JDG)の使い方に関してご紹介します。
環境の確認
今回は下記の環境で作業を進めます。
表1インストール環境
マシン | lenovo ThinkPad X201 |
---|---|
OS | Red Hat Enterprise Linux Workstation release 6.3 |
CPU | Intel Core i5 M540 (2.53GHz 2Core) |
メモリー | 4GB |
ライブラリモードとは
第2回の記事でも紹介されていますが、ライブラリモードは文字通りJavaアプリケーションにJDGのライブラリを組み込んで利用する方法です。そのため、これまでの記事で説明してきたように、JDG自体が一つのJavaプロセスとして動作するのではなく、Red Hat JBoss Enterprise Application Platform(以降、EAP)等のアプリケーションサーバのプロセス上で、アプリケーションとヒープを共有する形で動作します。
そのため、アプリケーションからのキャッシュに対する操作は、同一メモリ上のデータ操作になるため、データアクセスを高速に行うことができます。一方でアプリケーションの停止はキャッシュの停止と同じことを意味しますし、仮にキャッシュのリソースが不足した場合であっても、アプリケーションとキャッシュを別々に増強していくことはできません。良くも悪くもアプリケーションとキャッシュが一体になっている構成と言えるでしょう。
また、ライブラリモードでは、Event/Listenerと呼ばれるキャッシュへのデータ格納等のイベントを受け取り任意の処理をフックさせる機能や、Map/Reduceによる分散処理など、リモートクライアントサーバモードよりも豊富な機能が提供されています。こういった機能がJDGの利用を検討しているシステムで必要とされるかという点も、どちらのモードでアプリケーションを構築するべきかの選択に影響するでしょう。
ライブラリモードのキャッシュ設定
リモートクライアントサーバモードでは、$JDG_HOME/standalone/configurationディレクトリにあるstandalone.xmlまたは、clustered.xmlでキャッシュの設定を行っていました。
ライブラリモードの場合は、キャッシュの設定をXMLファイルに事前定義しておき、このファイルをアプリケーション上でロードすることで実現する方式と、上記キャッシュ定義ファイル相当の内容を、APIを利用してプログラム的に構成することで実現する方式の2つがあります。
それでは、実際のアプリケーションを動かしながら、内部構造を確認していきましょう。
JBossEAPとリポジトリのインストール
今回は、Red Hat カスタマーポータルで提供されているアプリケーションサーバ JBossEnterprise Application Platform 6.1を実行環境として利用し、サンプルアプリケーションの動作確認を行います。
インストールモジュールの入手方法は、「JBoss Data Grid を使ってみる:インストール編」の「インストールモジュールの入手とインストール」をご確認ください。今回は、[Red Hat JBoss Enterprise Application Platform試用版]リンクからダウンロード頂く必要があります。
まず、JBossEAP本体「Red Hat JBoss Enterprise Application Platform 6.1.0」をダウンロードし、任意のディレクトリに解凍してください(※以下の例では、JBoss Data Grid 6.1.0と同じディレクトリ
$ cd <INSTALL_DIR> $ unzip jboss-eap-6.1.0.zip
JBoss EAPも入手したモジュール(ZIPファイル)を解凍するだけでインストールできます。
これでJBossEAPのインストールが完了しました。
※以降、解凍時に作成されたjboss-eap-6.1ディレクトリのパスを$EAP_HOME とします。
JBoss EAPの起動
次に、JDGライブラリを含むアプリケーションの実行環境準備のため、JBoss EAPを起動します。
$ cd $EAP_HOME/bin $ ./standalone.sh
コンソールに以下のような「XXXXmsでスタートしました」のログが出力されたら起動完了です。
10:48:14,133 INFO [org.jboss.as] (Controller Boot Thread) JBAS015874: JBoss EAP 6.1.0.GA (AS 7.2.0.Final-redhat-8) は 1920ms でスタートしました - サービス 177 個のうち 123 個を開始しました (53 のサービスはパッシブあるいはオンデマンドとなっています)。
サンプルプログラムの入手とインストール
この記事で利用するサンプルプログラムはGitHub中で公開しています。
> redhat-jp-jboss/helloworld-jdg-for-thinkit
上記URLよりサンプルプログラムをダウンロードし、任意の場所に置いてください(※以下の例では、JBoss Data Grid 6.1.0と同じディレクトリ
サンプルプログラムのビルドとデプロイ
コンソールから以下のコマンドを実行し、helloworld-jdg-for-thinkit.warをビルドし、先ほど起動したJBoss EAPにデプロイを行います。今回のpom.xmlはJBossのリモートリポジトリから必要なライブラリをダウンロードするようにあらかじめ設定してあります。ネットワークに接続可能な環境で試してください。
$cd <INSTALL_DIR>/helloworld-jdg-for-thinkit $ mvn clean package jboss-as:deploy
コンソールに以下のような「BUILD SUCCESS」のログが出力されたらビルドとデプロイは成功です。
[INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 4.738s [INFO] Finished at: Mon Aug 12 17:54:41 JST 2013 [INFO] Final Memory: 15M/81M [INFO] ------------------------------------------------------------------------
サンプルプログラムの実行
サンプルプログラムではWebアプリケーションからJDGのキャッシュを利用しています。ブラウザから下記のURLを入力して、デプロイしたアプリケーションにアクセスしてみましょう。
サンプルアプリケーションの操作画面
http://localhost:8080/jboss-as-helloworld-jdg-for-thinkit/
以下のような画面が表示され、データの格納や取得ができるようになっています。
画面から、いくつかデータを投入してみましょう。「Key」と「Value」のフィールドに任意の値のペア”key1”と”value1”等を入れて、「Put」ボタンを押下することで、任意のデータをキャッシュに投入することができます。
データの投入が終わったら、「Get Some」のリンクをクリックして、データの取得画面に移動してください。
データの格納画面では先ほど格納したキー情報”key1”等を入力して、「Get」ボタンを押下してください。これまでに投入したvalueのデータ”value1”等が確認できると思います。
このサンプルアプリケーションでは、「Put」ボタンを押した時にキャッシュに対してデータを格納し、「Get」ボタンを押した際にキャッシュからデータを取るというシンプルな処理を行っています。
連載バックナンバー
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を操作する