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

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

はじめに連載6回目の今回のテーマはライブラリモードです。これまでの記事では構築の簡単なリモートクライアントサーバモードでの利用例を紹介してきましたが、今回はもう一つの使用モードであるライブラリモードを利用したRed Hat JBoss Data Grid (以降、JDG)の使い方に関してご紹介しま

高橋 丈

2013年9月19日 20:00

はじめに

連載6回目の今回のテーマはライブラリモードです。これまでの記事では構築の簡単なリモートクライアントサーバモードでの利用例を紹介してきましたが、今回はもう一つの使用モードであるライブラリモードを利用したRed Hat JBoss Data Grid (以降、JDG)の使い方に関してご紹介します。

環境の確認

今回は下記の環境で作業を進めます。

表1インストール環境

マシンlenovo ThinkPad X201
OSRed Hat Enterprise Linux Workstation release 6.3
CPUIntel 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」ボタンを押した際にキャッシュからデータを取るというシンプルな処理を行っています。

この記事のキーワード

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

人気記事トップ10

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

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