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

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

はじめに

連載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)等のアプリケーションサーバのプロセス上で、アプリケーションとヒープを共有する形で動作します。
そのため、アプリケーションからのキャッシュに対する操作は、同一メモリ上のデータ操作になるため、データアクセスを高速に行うことができます。一方でアプリケーションの停止はキャッシュの停止と同じことを意味しますし、仮にキャッシュのリソースが不足した場合であっても、アプリケーションとキャッシュを別々に増強していくことはできません。良くも悪くもアプリケーションとキャッシュが一体になっている構成と言えるでしょう。

図1:ライブラリモード(再掲)(クリックで拡大)

また、ライブラリモードでは、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試用版]リンクからダウンロード頂く必要があります。

図2:カスタマーポータルからの試用版ダウンロード(クリックで拡大)

まず、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」ボタンを押下することで、任意のデータをキャッシュに投入することができます。

図3:データの格納画面

データの投入が終わったら、「Get Some」のリンクをクリックして、データの取得画面に移動してください。
データの格納画面では先ほど格納したキー情報”key1”等を入力して、「Get」ボタンを押下してください。これまでに投入したvalueのデータ”value1”等が確認できると思います。

図4:データの取得画面

このサンプルアプリケーションでは、「Put」ボタンを押した時にキャッシュに対してデータを格納し、「Get」ボタンを押した際にキャッシュからデータを取るというシンプルな処理を行っています。

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

連載バックナンバー

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

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

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

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