スタートガイド

Red Hat JBoss Data Grid 6

JBoss Data Grid 6 の入門ガイド

エディッション 1

Misha Husnain Ali

Red Hat Engineering Content Services

David Le Sage

Red Hat Engineering Content Services

B Long

Red Hat Engineering Content Services

Gemma Sheldon

Red Hat Engineering Content Services

Misty Stanley-Jones

概要

本ガイドでは JBoss Data Grid 6 における初歩的な概念や操作について説明します。

前書き

第1章 JBoss Data Grid 6 の紹介

1.1. JBoss Data Grid について

JBoss Data Grid は分散インメモリーデータグリッドで、次の機能を提供します。
  • スキーマレスなキーバリューストア – Red Hat JBoss Data Grid は、固定のデータモデルを用いずに異なるオブジェクトを格納するフレキシブルな NoSQL データベースです。
  • グリッドベースのデータストレージ – Red Hat JBoss Data Grid は、複数のノードにまたがったデータのレプリケートが簡単に行えるよう設計されています。
  • エラスティックスケーリング – シンプルに混乱を起こさずノードの追加と削除を行えます。
  • 複数のアクセスプロトコル – REST、Memcached、Hot Rod または簡単なマップのような API を使用して簡単にデータグリッドへアクセスできます。

1.2. JBoss Data Grid の使用モード

JBoss Data Grid には 2 つの使用モードがあります。
リモートクライアントサーバーモード
リモートクライアントサーバーモードは、管理分散されたクラスター化可能なデータグリッドサーバーを提供します。アプリケーションは Hot Rod、Memcached、または REST クライアント API を使用して、データグリッドにリモートアクセスできます。
ライブラリーモード
ライブラリーモードは、カスタムランタイム環境の構築やデプロイに必要なすべてのバイナリを提供します。ライブラリー使用モードでは、分散クラスターの 1 つのノードへローカルアクセスでできます。この使用モードでは、使用されるコンテナの仮想マシン内でアプリケーションがデータグリッドの機能にアクセスできます。サポート対象のコンテナには、Tomcat 7 や JBoss Enterprise Application Platform 6 などがあります。

1.3. JBoss Data Grid の利点

JBoss Data Grid の利点

巨大なヒープと高可用性
JBoss Data Grid では、パフォーマンス向上のためにアプリケーションがデータのルックアップ処理のほとんどを大型のサーバーデータベースへ委譲する必要がありません。JBoss Data Grid は、現在のエンタープライズアプリケーションの大部分に存在するボトルネックを完全に取り除きます。

例1.1 巨大なヒープと高可用性の例

100 個のブレードサーバーを持つグリッドの例として、各ノードがレプリケートされたキャッシュ専用の 2 GB のストレージ領域を持っているとします。この場合、グリッドの全データが 2 GB のデータのコピーとなります。逆に、分散グリッド (データ項目ごとに 1 つのコピーが必要であることを仮定した場合) では、メモリーがサポートする仮想ヒープに 100 GB のデータが含まれます。グリッドのどこからでも効果的にこのデータへアクセスできるようになります。サーバーに障害が発生した場合、グリッドによって損失データの新しいコピーが即座に作成され、グリッドの運用サーバーに置かれます。
スケーラビリティー
JBoss Data Grid ではデータが均一に分散されるため、グリッドサイズの唯一の上限はネットワーク上でのグループ通信になります。ネットワークのグループ通信は最小限で、新規ノードの発見のみに制限されています。すべてのデータアクセスパターンは、ノードによるピアツーピア接続を介した直接通信を許可するため、スケーラビリティーの更なる向上を容易にします。JBoss Data Grid のクラスターは、リアルタイムでスケールアップまたはスケールダウンすることが可能ですが、インフラストラクチャーの再起動を必要としません。スケーリングポリシーへの変更をリアルタイムで適用できるため、非常にフレキシブルな環境を実現することができます。
データ分散
JBoss Data Grid は一貫したハッシュアルゴリズムを使用して、クラスターにおけるキーの場所を判断します。一貫したハッシュに関する利点には次のようなものがあります。
  • コスト効果
  • 速度
  • 更なるメタデータやネットワークトラフィックの必要がない、決定論的なキーの場所
データ分散は、永続性とフォールトトラレンスを提供するため、余分のない十分なコピーがクラスター内に確実に存在するようにします。余分なコピーは環境のスケーラビリティーを低下させます。
永続性
JBoss Data Grid は、CacheStore インターフェースと複数の高パフォーマンス実装 (JDBC キャッシュストアやファイルシステムベースのキャッシュストアなど) を公開します。キャッシュストアはキャッシュをシードし、関連データを安全に保持し、破損しないようにします。また、キャッシュストアはプロセスがメモリー不足になると、データをディスクへオーバーフローします。
言語のバインディング
JBoss Data Grid は、既に多くの一般的なプログラミング言語向けに使用されている Memcached プロトコルと、Hot Rod と呼ばれる最適化された JBoss Data Grid 固有のプロトコルの両方をサポートします。そのため、Java Data Grid は Java に限定されず、すべての主要な Web サイトやアプリケーションに使用できます。
管理
数百個またはそれ以上のサーバーが存在するグリッド環境では、管理の実行は重要な機能になります。エンタープライズネットワーク管理ソフトウェアである JBoss Operations Network は、複数の JBoss Data Grid インスタンスを管理するのに最適なツールです。JBoss Operations Network の機能を使用すると、キャッシュマネージャーやキャッシュインスタンスを簡単かつ効率的に監視できます。

1.4. JBoss Data Grid のバージョン情報

JBoss Data Grid は、データグリッドソフトウェアのオープンソースコミュニティー版である Infinispan が基盤となっています。Infinispan は、高ストレス環境で試行やテストを行い証明された JBoss Cache のコード、設計、およびアイデアを使用します。このようなデプロイメントの前歴があるため、JBoss Data Grid の初版リリースはバージョン 6.0 になっています。

1.5. JBoss Data Grid のキャッシュアーキテクチャー

JBoss Data Grid のキャッシュアーキテクチャー

図1.1 JBoss Data Grid のキャッシュアーキテクチャー

JBoss Data Grid のキャッシュアーキテクチャーは個々の要素と要素同士の対話を表現します。分かりやすくするため、キャッシュアーキテクチャーの図は以下の 2 つの部分に分割されています。
  • ユーザーが直接対話できない要素 (背景が灰色の部分)。これにはキャッシュ、キャッシュマネージャー、1 次キャッシュ、永続ストアインターフェース、永続ストアなどが含まれます。
  • ユーザーが直接対話できる要素 (背景が白の部分)。これにはキャッシュインターフェースやアプリケーションなどが含まれます。
キャッシュアーキテクチャーの要素

JBoss Data Grid のキャッシュアーキテクチャーには次の要素が含まれます。

  1. キャッシュインスタンスやエントリーを永久的に格納する永続ストア。
  2. JBoss Data Grid は、永続ストアのアクセスに 2 つの永続ストアインターフェースを提供します。永続ストアインターフェースは以下のいずれかになります。
    • キャッシュローダーは永続データストアへの接続を提供する読み取り専用インターフェースです。キャッシュローダーは、キャッシュインスタンスおよび永続ストアよりデータの場所を見つけ、読み出すことができます。
    • キャッシュストアは、キャッシュローダーによるステートのロードおよび格納を許可するメソッドを公開し、キャッシュローダーの機能に書き込み機能が含まれるようにします。
  3. 1 次キャッシュ (L1 キャッシュ) は、リモートキャッシュエントリーが最初にアクセスされた後にそれらのエントリーを格納し、同じエントリーがその後使用される度に不必要なリモートフェッチ操作が行われないようにします。
  4. キャッシュマネージャーは JBoss Data Grid のキャッシュインスタンスを読み出すために使用される主なメカニズムで、キャッシュを使用する時の開始点とすることができます。
  5. キャッシュはキャッシュマネージャーによって読み出されたキャッシュインスタンスを格納します。
  6. キャッシュインターフェースは Memcached や Hot Rod などのプロトコルを使用します。キャッシュを持つインターフェースには REST を使用することもできます。リモートインターフェースに関する詳細は『開発者ガイド』を参照してください。
    • Memcached はメモリー内にキーバリューを格納するために使用される分散メモリーオブジェクトキャッシングシステムです。Memcached キャッシングシステムは、Memached プロトコルと呼ばれるテキストベースのクライアントサーバーキャッシングプロトコルを定義します。
    • Hot Rod は JBoss Data Grid で使用されるバイナリ TCP クライアントサーバープロトコルです。Memchached などの他のクライアントサーバープロトコルに不足している機能を補うために作成されました。Hot Rod は、パーティション化または分散化された JBoss Data Grid サーバークラスターの要求を、クライアントがスマートルーティングできるようにします。
    • REST プロトコルは、密結合のクライアントライブラリおよびバインディングを不要にします。REST API ではオーバーヘッドが発生し、REST 呼び出しの理解と作成に REST クライアントまたはカスタムコードを必要とします。
  7. アプリケーションは、キャッシュインターフェースを介してユーザーがキャッシュとやりとりできるようにします。このようなエンドユーザーアプリケーションの一般的な例がブラウザーです。

1.6. JBoss Data Grid の API

JBoss Data Grid は次の API を提供します。
  • キャッシュ
  • バッチ処理
  • グループ化
  • CacheStore
  • 外部化
JBoss Data Grid のリモートクライアントサーバーモードでは、データグリッドとの対話に次の API のみを使用できます。
  • 非同期 API (リモートクライアントサーバーモードで Hot Rod クライアントを併用する場合のみ使用可能)
  • REST インターフェース
  • Memcached インターフェース
  • Hot Rod インターフェース
    • RemoteCache API

第2章 JBoss Data Grid の要件

2.1. JBoss Data Grid の前提条件

JBoss Data Grid の実行には、Java 6.0 およびそれ以降のバージョンと互換性を持つ Java 仮想マシン (JVM) のみが必要となります。JBoss Data Grid にはアプリケーションサーバーは必要ありません。

2.2. Java Virtual Machines (JVM)

2.2.1. Java 仮想マシン

Java 仮想マシン (JVM) は Java バイトコードを実行できるソフトウェアのことです。JVM は中間のバイトコードが実行される標準的な環境を作成します。基盤のハードウェアとオペレーティングシステムの組み合わせにとらわれず標準的な環境を作成することで、プログラマーは Java コードを一度書けばどのシステムでも実行できることを確信できます。OpenJDK はオープンソースで Java 仮想マシンがサポートし、Red Hat Enterprise Linux システムで快適に実行されるため、Red Hat は OpenJDK の使用を推奨します。Window ユーザーは Oracle JDK 1.6 をインストールするようにしてください。

2.2.2. Red Hat Enterprise Linux への OpenJDK のインストール

手順2.1 Red Hat Enterprise Linux への OpenJDK のインストール

  1. ベースチャンネルのサブスクライブ

    RHN ベースチャンネルより OpenJDK を取得します。Red Hat Enterprise Linux のインストールはデフォルトでこのチャンネルにサブスクライブされています。
  2. パッケージのインストール

    yum ユーティリティを使用して OpenJDK をインストールします。
    $ sudo yum install java-1.6.0-openjdk-devel
    
  3. OpenJDK がシステムデフォルトであることを検証

    次のように、正しい JDK がシステムデフォルトとして設定されているかを確認します。
    1. root としてログインし、alternatives コマンドを実行します。
      $ /usr/sbin/alternatives --config java
    2. /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java 選択します。
    3. 次のコマンドを使用して javac を設定します。
      $ /usr/sbin/alternatives --config javac
    4. /usr/lib/jvm/java-1.6.0-openjdk/bin/java を選択します。

第3章 JBoss Data Grid のダウンロードおよびインストール

3.1. JBoss Data Grid のダウンロード

次の手順に従って、カスタマーサービスポータルより JBoss Data Grid をダウンロードします。

手順3.1 JBoss Data Grid のダウンロード

  1. カスタマーサービスポータルへアクセス

    カスタマーサービスポータル https://access.redhat.com へログインします。
  2. 製品の検索

    [Downloads] にカーソルを置き、[JBoss Enterprise Middleware] に移動します。
  3. 製品の選択

    [Data Grid] を選択します。
  4. JBoss Data Grid のダウンロード

    適切な JBoss Data Grid を選択し、[Download] リンクをクリックします。
    リモートクライアントサーバー使用モードがある JBoss Data Grid をダウンロードする場合は [JBoss Data Grid Server 6.0.0] を選択します。ライブラリ使用モードを持つ JBoss Data Grid をダウンロードする場合は [JBoss Data Grid Library 6.0.0] を選択します。

3.2. Red Hat カスタマーポータルについて

Red Hat カスタマーポータルは、 公式にサポートされたソフトウェアのダウンロード、エンタイトルメントとサポート契約の管理、グローバルサポートサービスへの問い合わせ、Red Hat 製品のバグの報告などを Red Hat のお客様が行うための Web サイトです。カスタマーポータルにアクセスする Web アドレスは https://access.redhat.com です。

3.3. チェックサムの検証

チェックサムの検証は、ダウンロードされたファイルが破損していないか確認するために使用されます。チェックサムの検証には、デジタルデータの任意のブロックより固定サイズのデータ (またはチェックサム) を算出するアルゴリズムが使用されます。異なるユーザーが同じアルゴリズムを使用して特定ファイルのチェックサムを算出しても、結果は同じになります。そのため、サプライヤーと同じアルゴリズムを使用してダウンロードされたファイルのチェックサムを算出する場合、チェックサムが一致すればファイルの整合性が確認されます。チェックサムが一致しない場合、ダウンロードの処理中にファイルが破損したことになります。

3.4. ダウンロードされたファイルの検証

手順3.2 ダウンロードされたファイルの検証

  1. Red Hat カスタマーポータルからダウンロードしたファイルにエラーがないことをポータルサイト上で検証するには、パッケージの [Software Details] ページに移動します。このページには、ファイルの整合性チェックに使用する MD5 および SHA256"checksum" 値があります。
  2. ターミナルウインドウを開いて md5sum または sha256sum コマンドを実行し、ダウンロードした ZIP のファイル名を引数として渡します。すると、ファイルのチェックサム値が出力されます。
  3. コマンドによって返されたチェックサム値と、ファイルの [Software Details] ページに表示された対応する値を比較します。

    注記

    Microsoft Windows にはチェックサムツールが同梱されていません。Microsoft Windows のユーザーはサードパーティーの製品をダウンロードする必要があります。
結果

2 つのチェックサム値が同じである場合、ファイルに変更や破損がないため、安心して使用することができます。

2 つのチェックサム値が同じでない場合、再度ファイルをダウンロードします。チェックサム値に相違がある場合、ダウンロード中にファイルが破損したり、サーバーへアップロードされた後に変更が加えられたりしたことを意味します。数回ダウンロードしてもチェックサムの検証に失敗する場合は、Red Hat サポートまでご連絡ください。

3.5. JBoss Data Grid のインストール

前提条件

適切なバージョン、プラットフォームおよびファイルタイプを見つけ、カスタマーサービスより JBoss Data Grid をダウンロードする必要があります。

手順3.3 JBoss Data Grid のインストール

  1. ダウンロードした JBoss Data Grid パッケージをマシン上の希望の場所にコピーする必要があります。
  2. 次のコマンドを実行して、ダウンロードした JBoss Data Grid パッケージを展開します。
    $ unzip JDG_PACKAGE
    JDG_PACKAGE は、Red Hat カスタマーポータルよりダウンロードした JBoss Data Grid 使用モードパッケージの名前に置き換えます。
  3. 展開したディレクトリは $JDG_HOME とします。

3.6. Red Hat のドキュメントサイト

Red Hat 公式のドキュメントサイトは https://access.redhat.com/knowledge/docs/ になります。本書を含む、最新バージョンのドキュメントを検索できます。

第4章 Maven リポジトリのインストールおよび使用

4.1. Maven について

Apache Maven は、ソフトウェアプロジェクトの作成、管理、構築を行う Java アプリケーションの開発で使用される分散型ビルド自動化ツールです。Maven は Project Object Model (POM) と呼ばれる標準の設定ファイルを利用して、プロジェクトの定義や構築プロセスの管理を行います。POM はモジュールやコンポーネントの依存関係、ビルドの順番、結果となるプロジェクトパッケージングのターゲットを記述し、XML ファイルを使用して出力します。こうすることで、プロジェクトが正しく統一された状態で構築されるようにします。

4.2. Maven のダウンロード

Maven のダウンロードおよびインストール方法については、Maven ダウンロードページを参照してください。

4.3. JBoss Data Grid の Maven リポジトリについて

Maven は、JBoss Data Grid でプロジェクトを構築する標準的な方法を作成するビルドツールで、JBoss Data Grid に同梱されるコードや例が想定通り動作するようにします。

4.4. Maven リポジトリのインストール

4.4.1. Maven リポジトリのインストールオプション

JBoss Data Grid の Maven リポジトリをインストールする方法は 3 つあります。
  1. ローカルファイルシステム上のインストール
  2. Apache Web Server 上のインストール
  3. Maven リポジトリマネージャーを用いたインストール
ご使用の環境に最も適したオプションを使用してください。

4.4.2. ローカルファイルシステムリポジトリのインストール

このオプションは小チームでの初期テストに最も適したオプションです。次のコマンドを用いて、JBoss Data Grid Maven リポジトリをローカルファイルシステムのディレクトリに展開します。

手順4.1 ローカルファイルシステムリポジトリのインストール

  1. Red Hat カスタマーポータルより jboss-datagrid-maven-repository-6.0.0.zip ファイルをダウンロードします。
  2. $JDG_HOME/projects/maven-repositories/ などのローカルファイルシステムのディレクトリにファイルを展開します。

4.4.3. Apache Web Sever のインストール

このオプションは、マルチユーザー環境での使用に最も適しています。次のように JBoss Data Grid Maven リポジトリを標準的な Web サーバー (Apache httpd など) にインストールできます。

手順4.2 Apache Web Sever のインストール

  1. Red Hat カスタマーポータルより、次のファイルをダウンロードします。
    jboss-datagrid-maven-repository-6.0.0.zip
    
  2. $JDG_HOME/projects/maven-repositories/ などのローカルファイルシステムのディレクトリにファイルを展開します。
  3. Apache を設定し、設定されたディレクトリの読み取りアクセスとディレクトリの閲覧を許可します。

4.4.4. Maven リポジトリマネージャーのインストール

このオプションは、リポジトリーマネージャーを既に使用している場合に最適なオプションです。
JBoss Data Grid は、Maven リポジトリマネージャーとそのドキュメントを用いてインストールすることができます。このようなリポジトリマネージャーの例は次の通りです。

4.5. Maven レポジトリの設定

4.5.1. Maven リポジトリの設定

インストールされた JBoss Data Grid の Maven リポジトリを設定するには、settings.xml ファイルを編集します。デフォルトの settings.xml ファイルは、 Maven インストールの conf にあります。
Maven のユーザー設定は、ユーザーのホームディレクトリの .m2 サブディレクトリにあります。Maven の設定に関する詳細は Maven documentation を参照してください。

4.5.3. Maven リポジトリの設定例

展開後、Maven リポジトリフォルダーのルートディレクトリにある example-settings.xml という名前の Maven リポジトリファイルの例を利用できます。以下は、settings.xml ファイルに関連する箇所が含まれる抜粋になります。
<settings>
      ...
      <profiles>
        ...
        <profile>
          <id>jboss-datagrid-repository</id>
          <repositories>
            <repository>
              <id>jboss-datagrid-repository</id>
              <name>JBoss Data Grid Maven Repository</name>
              <url>file:///path/to/repo/jboss-datagrid-maven-repository-6.0.0</url>
              <layout>default</layout>
              <releases>
                <enabled>true</enabled>
                <updatePolicy>never</updatePolicy>
              </releases>
              <snapshots>
                <enabled>false</enabled>
                <updatePolicy>never</updatePolicy>
              </snapshots>
            </repository>
          </repositories>
          <pluginRepositories>
            <pluginRepository>
              <id>jboss-datagrid-repository-group</id>
              <name>JBoss Data Grid Maven Repository</name>
              <url>file:///path/to/repo/jboss-datagrid-maven-repository-6.0.0</url>
              <layout>default</layout>
              <releases>
                <enabled>true</enabled>
                <updatePolicy>never</updatePolicy>
              </releases>
              <snapshots>
                <enabled>false</enabled>
                <updatePolicy>never</updatePolicy>
              </snapshots>
            </pluginRepository>
          </pluginRepositories>
        </profile>

      </profiles>

      <activeProfiles>
        <activeProfile>jboss-datagrid-repository</activeProfile>
      </activeProfiles>
      ...
</settings>

第5章 新規 JBoss Data Grid プロジェクトの作成

5.1. プロジェクトへの依存関係の追加

プロジェクトに依存関係を追加し、JBoss Data Grid を設定します。Maven や Maven の依存関係をサポートするその他のビルドシステムを使用している場合、Maven リポジトリフォルダーにある pom.xml ファイルに以下を追加します。
<dependency>
          <groupId>org.infinispan</groupId>
          <artifactId>infinispan-core</artifactId>
          <version>5.1.5.FINAL-redhat-1</version>
</dependency>

注記

version の値を、JBoss Data Grid に含まれるライブラリの適切なバージョンに置き換えます。

5.2. プロジェクトへのプロファイルの追加

プロジェクトに対して JBoss Maven リポジトリを有効にするには、次のようにプロファイルを pom.xml ファイルに追加します。
<profile>
    <id>jboss-datagrid-repository</id>
    <repositories>
	<repository>
	    <id>jboss-datagrid-repository</id>
	    <name>JBoss Data Grid Maven Repository</name>
            <url>file:///path/to/repo/jboss-datagrid-maven-repository-6.0.0</url>
            <layout>default</layout>
            <releases>
            	<enabled>true</enabled>
            	<updatePolicy>never</updatePolicy>
            </releases>
            <snapshots>
            	<enabled>false</enabled>
            	<updatePolicy>never</updatePolicy>
            </snapshots>
	</repository>
	<repository>
	    <id>jboss-public-repository-group</id>
	    <name>JBoss Public Maven Repository Group</name>
            <url>https://repository.jboss.org/nexus/content/groups/public-jboss/</url>
            <layout>default</layout>
            <releases>
        	<enabled>true</enabled>
        	<updatePolicy>never</updatePolicy>
            </releases>
            <snapshots>
        	<enabled>true</enabled>
        	<updatePolicy>never</updatePolicy>
            </snapshots>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
	    <id>jboss-datagrid-repository-group</id>
	    <name>JBoss Data Grid Maven Repository</name>
	    <url>file:///path/to/repo/jboss-datagrid-maven-repository-6.0.0</url>
	    <layout>default</layout>
            <releases>
            	<enabled>true</enabled>
            	<updatePolicy>never</updatePolicy>
            </releases>
            <snapshots>
            	<enabled>false</enabled>
            	<updatePolicy>never</updatePolicy>
            </snapshots>
        </pluginRepository>
        <pluginRepository>
            <id>jboss-public-repository-group</id>
	    <name>JBoss Public Maven Repository Group</name>
            <url>https://repository.jboss.org/nexus/content/groups/public-jboss/</url>
            <layout>default</layout>
            <releases>
        	<enabled>true</enabled>
        	<updatePolicy>never</updatePolicy>
            </releases>
            <snapshots>
        	<enabled>true</enabled>
        	<updatePolicy>never</updatePolicy>
            </snapshots>
        </pluginRepository>
    </pluginRepositories>
</profile>
宣言型の依存関係管理をサポートしないビルドシステムを使用している場合は、JBoss Data Grid パッケージに含まれる client/java/ ディレクトリの内容を、ビルドクラスパスへ追加します。

5.3. JBoss Data Grid の実行

次のスクリプトを実行すると、最も簡単に JBoss Data Grid を実行できます。
$JDG_HOME/bin/standalone.sh
このスクリプトは、$JDG_HOME/standalone/configurationstandalone.xml に定義されている設定を使用して、JBoss Data Grid を起動します。
次の例のように、-c と設定ファイル名を追加すると、代替設定を実行できます。
$JDG_HOME/bin/standalone.sh -c standalone-ha.xml

第6章 埋め込みキャッシュとして JBoss Data Grid を実行する

6.1. クイックスタートファイルの場所

「埋め込みキャッシュとして JBoss Data Grid を実行する」『』の章と、「埋め込みデータグリッドとして JBoss Data Grid を実行する」『』の章にある演習では、特定のクイックスタートファイルが必要になります。必要なクラスター化されたクイックスタート zip ファイルは、以下にあります。

重要

これらのクイックスタートは、Infinispan のコミュニティープロジェクト向けに書かれています。これらのクイックスタートを JBoss Data Grid で実行し、Infinispan の依存関係を JBoss Data Grid の依存関係に置き換えます。

6.2. クイックスタートクラスにおける main メソッドの作成

次の手順に従って、新しいクイックスタートクラスを作成します。

手順6.1 クイックスタートクラスにおける main メソッドの作成

  1. Quickstart.java ファイルの作成

    プロジェクトの場所に Quickstart.java という名前のファイルを作成します。
  2. クイックスタートクラスの追加

    次のクラスとメソッドを追加します。
    import org.infinispan.manager.DefaultCacheManager
    import org.infinispan.Cache
    
    package com.mycompany.app;
    public class Quickstart {
      public static void main(String args[]) throws Exception {
           Cache<Object, Object> c = new DefaultCacheManager().getCache();
        }
     }
    
  3. 依存関係のコピーと Java クラスのコンパイル

    次のコマンドを使用して、すべてのプロジェクト依存関係をディレクトリにコピーし、プロジェクトより Java クラスをコンパイルします。
    $ mvn clean compile dependency:copy-dependencies -DstripVersion
    
  4. main メソッドの実行

    次のコマンドを用いて main メソッドを実行します。
    $ java -cp target/classes/:target/dependency/* com.mycompany.app.Quickstart
    

6.3. 新しい RemoteCacheManager の作成

次の設定を用いて、新しい RemoteCacheManager を宣言により設定します。
Properties props = new Properties();
props.put("infinispan.client.hotrod.server_list", "127.0.0.1:11222");
RemoteCacheManager manager = new RemoteCacheManager(props);
RemoteCache defaultCache = manager.getCache();

注記

JBoss Data Grid で Hot Rod を使用するための詳細については、『開発者ガイド』の Hot Rod の章を参照してください。

6.4. デフォルトキャッシュの使用

6.4.1. キャッシュのデータ追加および削除

JBoss Data Grid は、キャッシュに格納されたデータにアクセスして変更を行うため、提案されている JSR-107 API と似たインターフェースを提供します。
次の手順は、DefaultCacheQuickstart.java ファイルに入力された各行が何を実行するかを定義する例になります。

手順6.2 キャッシュのデータ追加および削除

  1. エントリーを追加し、keyvalue を希望のキーと値に置き換えます。
    cache.put("key", "value");
    
  2. キャッシュにエントリーが存在することを確認します。
    assertEquals(1, cache.size());
    assertTrue(cache.containsKey("key"));
    
  3. キャッシュよりエントリーを削除します。
    Object v = cache.remove("key");
    
  4. エントリーがキャッシュに存在しないことを確認します。
    assertEquals("value", v);
    

6.4.2. キー値の追加と置換

JBoss Data Grid はスレッドセーフなデータ構造を提供します。
次の手順は、DefaultCacheQuickstart.java ファイルに入力された各行が何を実行するかを定義する例になります。

手順6.3 キー値の追加と置換

  1. key をキーの値とするエントリーを追加します。
    cache.put("key", "value");
    
  2. キーの値があるか確認します。値が見つからない場合、見つからない値を key に置き換えます。値が見つかった場合、変更は発生しません。
    cache.putIfAbsent("key", "newValue");
    

6.4.3. データライフの調整

デフォルトでは、JBoss Data Grid のエントリーは期限なし (immortal) ですが、この設定は変更できます。
次の手順は、DefaultCacheQuickstart.java ファイルに入力された各行が何を実行するかを定義する例になります。

手順6.4 データライフの調整

  1. キーの lifespan 値を変更します。
    cache.put("key", "value", 5, SECONDS);
    
  2. キャッシュにキーが含まれるかを確認します。
    assertTrue(cache.containsKey("key"));
    
  3. 割り当てられた lifespan 時間が期限切れになると、キーはキャッシュから削除されます。
    Thread.sleep(10000);
    assertFalse(cache.containsKey("key"));
    

6.4.4. デフォルトのデータ期限

デフォルトでは、新規作成されたエントリーにはライフスパンや最大アイドル時間値セットがありません。これらの 2 つの値がない場合、データエントリーは永久に期限切れにならないため、期限なし (immortal) データと呼ばれます。

6.5. 名前付きキャッシュの使用

6.5.1. 名前付きキャッシュの使用

JBoss Data Grid の名前付きキャッシュは、設定で宣言する必要はありません。定義されていない場合、名前付きキャッシュはデフォルトのキャッシュと同様に自動的に設定されます。
この動作を上書きするには、宣言的 (XML を使用) またはプログラムを用いて (API を使用)、必要なカスタム設定で名前付きキャッシュを定義します。
カスタムキャッシュが宣言的に登録される場合、設定ファイルは使用する前にロードする必要があります。プログラムを用いてカスタムキャッシュが登録される場合は、設定ファイルをロードする必要はありません。

6.5.2. プログラムを用いた名前付きキャッシュの登録

JBoss Data Grid は、ユーザーがプログラムを用いて名前付きキャッシュを登録できる設定機能を提供します。
名前付きキャッシュは、プログラムを用いて設定することが可能です。例として、クイックスタートパッケージに含まれる CustomCacheQuickstart.java ファイルを参考にすることができます。infinispan-quickstart は infinispan-quickstart/embedded-cache/src/main/java/org/infinispan/quickstart/embeddedcache/ にあります。

6.5.3. 設定ファイルのロード

前提条件

名前付きキャッシュを宣言的に登録する必要があります。

infinispan-quickstarts の XmlConfiguredCacheQuickstart.java ファイルは、名前付きキャッシュのカスタム設定がどのようにロードされるかを実例を用いて説明します。このファイルは Quickstarts パッケージの infinispan-quickstart/embedded-cache/src/main/java/org/infinispan/quickstart/embeddedcache にあります。

6.5.4. XML を用いた名前付きキャッシュの登録

プログラムを用いず、名前付きキャッシュを宣言的に (XML を使用) 設定するには、infinispan.xml ファイルを設定します。
infinispan.xml ファイルは、infinispan-quickstarts パッケージの infinispan-quickstart/embedded-cache/src/main/resources にあります。

第7章 埋め込みデータグリッドとして JBoss Data Grid を使用する

7.1. クイックスタートファイルの場所

「埋め込みキャッシュとして JBoss Data Grid を実行する」『』の章と、「埋め込みデータグリッドとして JBoss Data Grid を実行する」『』の章にある演習では、特定のクイックスタートファイルが必要になります。必要なクラスター化されたクイックスタート zip ファイルは、以下にあります。

重要

これらのクイックスタートは、Infinispan のコミュニティープロジェクト向けに書かれています。これらのクイックスタートを JBoss Data Grid で実行し、Infinispan の依存関係を JBoss Data Grid の依存関係に置き換えます。

7.2. 埋め込みデータグリッドとして JBoss Data Grid を実行する

JBoss Data Grid は、ネットワークトランスポートとして JGroups を使用し、簡単に使用できるクラスタリングを提供します。そのため、JBoss Data Grid でクラスターを形成するために必要な初期操作を JGroups が管理します。

7.3. JGroups チャネルの共有

単一の CacheManager から作成されたすべてのキャッシュは、デフォルトでは同じ JGroups チャネルを共有します。JGroups チャネルは、レプリケーションメッセージや分散メッセージを多重化するために使用されます。
次の例では、3 つのキャッシュがすべて同じ JGroups チャネルを使用します。
EmbeddedCacheManager cm = $LOCATION
Cache<Object, Object> cache1 = cm.getCache("replSyncCache");
Cache<Object, Object> cache2 = cm.getCache("replAsyncCache");
Cache<Object, Object> cache3 = cm.getCache("invalidationSyncCache");
$LOCATION を CacheManager の場所に置き換えてください。

7.4. クラスターにおける JBoss Data Grid の実行

7.4.1. プロジェクトのコンパイル

Maven を使用し、次のコマンドを用いてプロジェクトをコンパイルします。
  $ mvn clean compile dependency:copy-dependencies -DstripVersion

7.4.2. レプリケーションモードでクラスター化されたキャッシュを実行する

クラスター化されたキャッシュに関する JBoss Data Grid のレプリケーションモード例を実行するには、異なるコンソールで 2 つのノードを開始します。

手順7.1 レプリケーションモードでクラスター化されたキャッシュを実行する

  1. 次のコマンドを用いて、最初のノードを立ち上げます。
    $ java -cp target/classes/:target/dependency/* org.infinispan.quickstart.clusteredcache.replication.Node0
    
  2. 次のコマンドを用いて、2 つ目のノードを立ち上げます。
    $ java -cp target/classes/:target/dependency/* org.infinispan.quickstart.clusteredcache.replication.Node1
    
結果

両方のノードで JGroups と JBoss Data Grid が初期化されます。約 15 秒後に、キャッシュエントリーのログメッセージが最初のノードのコンソール上に表示されます。

7.4.3. ディストリビューションモードでクラスター化されたキャッシュの実行

クラスター化されたキャッシュに関する JBoss Data Grid のディストリビューションモード例を実行するには、異なるコンソールで 3 つのノードを開始します。

手順7.2 ディストリビューションモードでクラスター化されたキャッシュの実行

  1. 次のコマンドを用いて最初のノードを立ち上げます。
    $ java -cp target/classes/:target/dependency/* org.infinispan.quickstart.clusteredcache.distribution.Node0
    
  2. 次のコマンドを用いて 2 番目のノードを立ち上げます。
    $ java -cp target/classes/:target/dependency/* org.infinispan.quickstart.clusteredcache.distribution.Node1
    
  3. 次のコマンドを用いて 3 番目のノードを立ち上げます。
    $ java -cp target/classes/:target/dependency/* org.infinispan.quickstart.clusteredcache.distribution.Node2
    
結果

3 つのノードで JGroups と JBoss Data Grid が初期化されます。約 15 秒後に、3 番目のノードによって追加された 10 個のエントリが、最初のノードと 2 番目のノードに分散されたように表示されます。

7.4.4. クラスターの設定

7.4.4.1. クラスターの設定

次の手順に従って、クラスターを追加および設定します。

手順7.3 クラスターの設定

  1. 新しいクラスターのデフォルト設定の追加
  2. ネットワークの要件に従って、デフォルトのクラスター設定をカスタマイズします。宣言的 (XML を使用) またはプログラムを用いてカスタマイズできます。
  3. レプリケートされたデータグリッド、または分散されたデータグリッドを設定します。

7.4.4.2. デフォルトクラスター設定の追加

クラスター設定を追加して、クラスターが存在し、定義されていることを JBoss Data Grid が確実に認識するようにします。この目的を達成するデフォルト設定は次の通りです。
  new ConfigurationBuilder()
   .clustering().cacheMode(CacheMode.REPL_SYNC)
   .build()

注記

GlobalConfiguration.clusteredDefault() を使用して、事前設定されたクラスター対応の GlobalConfiguration を迅速に作成します。この設定はカスタマイズ可能です。

7.4.4.3. デフォルトクラスター設定のカスタマイズ

ネットワークの要件によっては、JGroups 設定のカスタマイズが必要なことがあります。
プログラムを用いた設定

以下の GlobalConfiguration コードを使用して、JGroups の設定に使用するファイルの名前を指定します。

new GlobalConfigurationBuilder().transport().addProperty("configurationFile", "jgroups.xml")
   .build()
jgroups.xml を希望のファイル名に置き換えます。
jgroups.xml ファイルは $Infinispan-Quickstart/clustered-cache/src/main/resources/ にあります。

注記

JGroups を ループバックインターフェースのみにバインドする場合は (設定されたファイアウォールを避けるため)、システムプロパティー -Djgroups.bind_addr="127.0.0.1" を使用します。これは、すべてのノードが 1 つのマシン上にある状態でクラスターをテストする場合、特に便利です。
宣言的な設定

infinispan.xml ファイルにある以下の XML スニペットを使用して、JBoss Data Grid の XML 設定を使用するよう JGroups プロパティーを設定します。

<global>
   <transport>
      <properties>
         <property name="configurationFile" value="jgroups.xml"/>
      </properties>
   </transport>
</global>

7.4.4.4. レプリケートされたデータグリッドの設定

JBoss Data Grid のレプリケートモードは、データグリッドのすべてのノードで各エントリーが確実にレプリケートされるようにします。
このモードは、ノード障害によるデータの損失に対応するセキュリティーを提供し、優れたデータの可用性も提供します。ストレージ容量を、最小メモリーでノード上にて使用できるストレージの量に制限して、これらの利点を実現します。
プログラムを用いた設定

以下のコードスニペットを使用して、レプリケーションモードのキャッシュをプログラムを用いて設定します (同期または非同期)。

private static EmbeddedCacheManager createCacheManagerProgramatically() {
   return new DefaultCacheManager(
      new GlobalConfigurationBuilder()
         .transport().addProperty("configurationFile", "jgroups.xml")
         .build(),
      new ConfigurationBuilder()
         .clustering().cacheMode(CacheMode.REPL_SYNC)
         .build()
   );
}
宣言的な設定

cfg.xml ファイルに次の XML コードが含まれるようにし、レプリケーションモードのキャッシュを宣言的に設定します (同期または非同期)。

<infinispan xsi:schemaLocation="urn:infinispan:config:5.1 http://www.infinispan.org/schemas/infinispan-config-5.1.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:infinispan:config:5.1">
   <global>
      <transport>
         <properties>
            <property name="configurationFile" value="jgroups.xml"/>
         </properties>
      </transport>
   </global>
   <default>
      <clustering mode="replication">
         <sync/>
      </clustering>
   </default>
</infinispan>
次のコードを使用して、XML 設定ファイルを持つ DefaultCacheManager を初期化し、返します。
private static EmbeddedCacheManager createCacheManagerFromXml() throws IOException {
   return new DefaultCacheManager("infinispan-replication.xml");
}

7.4.4.5. 分散されたデータグリッドの設定

JBoss Data Grid のディストリビューションモードは、データグリッドの全ノードのサブセット上に各エントリーが確実に格納されるようにします。サブセットのノード数は numOwners パラメーターによって制御され、各エントリーの「所有者」の数が示されます。
ディストリビューションモードでは、ストレージ容量が増えますが、アクセス時間が長くなり、永続性 (ノード障害への保護) が低下します。numOwners の値を調整し、容量、永続性、および可用性の適切なバランスを設定してください。JBoss Data Grid のトポロジーを意識した一貫性のあるハッシュによって、永続性が更に向上されます。このようなハッシュは、多様なデータセンターやラック、ノードなどにまたがり、エントリーオーナーを検索します。
プログラムを用いた設定

以下のコードスニペットを使用して、ディストリビューションモードのキャッシュをプログラムを用いて設定します (同期または非同期)。

  new ConfigurationBuilder()
   .clustering()
      .cacheMode(CacheMode.DIST_SYNC)
      .hash().numOwners(2)
   .build()

宣言的な設定

cfg.xml ファイルに次の XML コードが含まれるようにし、ディストリビューションモードのキャッシュを宣言的に設定します (同期または非同期)。

<default>
   <clustering mode="distribution">
      <sync/>
      <hash numOwners="2"/>
   </clustering>
</default>

第8章 エンドポイントのないノードとして JBoss Data Grid を実行する

8.1. エンドポイントについて

サービスは他のサービスと通信するため、チャネルを使用してメッセージを送信します。エンドポイントはサービスの通信ポイントで、チャネルからのメッセージを送受信するために使用されます。そのため、エンドポイントのないノードは他のノードとは通信できますが、クライアントとは通信ができません。

8.2. エンドポイントのないノードの利点

JBoss Data Grid でエンドポイントのないノードを作成する主な利点には、データレプリケーションが関係します。
クライアントは直接エンドポイントのないノードにアクセスできません。そのため、クライアントと通信できる別のノードからデータをレプリケートするために使用されます。その結果、クライアントがアクセスできないデータのバックアップコピーをノードが持つようになり、クライアントによって送信されたエラーによる障害から守ることができます。

8.3. エンドポイントのないノードの設定例

JBoss Data Grid は、エンドポイントのないノードを設定するための設定例を提供します。この例にアクセスする方法は次の通りです。

手順8.1 エンドポイントのないノードの JBoss Data Grid 設定例を検索

  1. JBoss Data Grid の ZIP の展開

    1. JBoss Data Grid のリモートクライアントサーバーモードの ZIP ファイルを展開します。これには jboss-datagrid-server-${version}-GA 名前が付けられます。ファイル名に関連バージョンを追加します。
  2. 適切なフォルダーへ移動

    展開したフォルダー内で、$JDG_HOME/docs/examples/config フォルダーに移動します。
  3. 設定例ファイルの検索

    エンドポイントのないノードの設定が含まれる standalone-storage-only.xml を見つけます。

8.4. エンドポイントのないノードの設定

スタンドアロン高可用性設定などの標準的な設定を、エンドポイントのないノード向けに変更できます。以下の手順に従います。
  • datagrid サブシステムを削除します。
  • modcluster を削除します。
  • datasource 定義を削除します。
  • mod_clusterHot Rod、および memcachedsocket-bindings を削除します。
上記の項目を削除し、すべてのエンドポイントが確実に設定から削除されるようにし、クラスタリングを不可能にします。結果、エンドポイントのない設定が作成されます。

第9章 JBoss Data Grid の CarMart クイックスタート

9.1. CarMart クイックスタートについて

JBoss Data Grid にはトランザクションおよび非トランザクションの CartMart クイックスタートが含まれています。CartMart クイックスタートは、リレーショナルデータベースの代わりに JBoss Data Grid を使用する簡単な Web アプリケーションです。各車 (car) に関する情報はキャッシュに格納されます。キャッシュはプログラムを用いて設定され、Web アプリケーションと同じ Java 仮想マシン (JVM) で実行されます。
機能

CarMart クイックスタートは次の機能を提供します。

  • 全車の一覧表示。
  • 新しい車の追加。
  • 車の削除。
  • ヒット数、保存、読み出しなど、キャッシュの統計を表示。
使用モード

CarMart クイックスタートは、次の JBoss Data Grid の使用モードで使用可能です。

  • リモート JBoss Data Grid サーバーと通信するため Hot Rod クライアントが含まれる、リモートクライアントサーバーモード。
  • すべてのライブラリが jar ファイル形式でアプリケーションとバンドルされる、ライブラリモード。
場所

JBoss Data Grid の CarMart クイックスタートは jboss-datagrid-quickstarts-1.0.0/carmart/ にあります。

9.2. CarMart トランザクションクイックスタートについて

トランザクションバージョンの CartMart クイックスタートは、リレーショナルデータベースの代わりに JBoss Data Grid を使用する簡単な Web アプリケーションです。各車 (car) に関する情報はキャッシュに格納されます。キャッシュはプログラムを用いて設定され、Web アプリケーションと同じ Java 仮想マシン (JVM) で実行されます。
機能

トランザクション CarMart クイックスタートは次の機能を提供します。

  • 全車の一覧表示。
  • 新しい車の追加。
  • ロールバックで新しい車を追加。
  • 車の削除。
  • ヒット数、保存、読み出しなど、キャッシュの統計を表示。
使用モード

トランザクション CarMart クイックスタートは JBoss Data Grid のライブラリモードでのみ使用できます。トランザクション CarMart クイックスタートが Tomcat で実行されると、JBoss Transactions よりスタンドアロントランザクションマネージャーが使用されます。

場所

JBoss Data Grid の トランザクション CarMart クイックスタートは jboss-datagrid-quickstarts-1.0.0/carmart-transactional にあります。

9.3. CarMart とトランザクションクイックスタートの違い

トランザクションおよび非トランザクション CarMart クイックスタートのビルド、デプロイ、アンデプロイ手順は似ていますが、違いもあります。相違点は次の通りです。
  • CarMart はリモートクライアントサーバーモードとライブラリモードの両方で使用可能です。リモートクライアントサーバーモードではトランザクションが使用できないため、トランザクション CarMart はライブラリモードでのみ使用可能です。
  • また、トランザクションクイックスタートは、トランザクションロールバックがどのように発生するかを表示します。[Add car with rollback] ボタンを使用してロールバックを表示します。CarMart の例には、簡単な [Add car] ボタンがあります。

9.4. JBoss Application Server を用いた CarMart クイックスタート

9.4.1. CarMart クイックスタートを JBoss Application Server へビルドする

次の手順では、CarMart アプリケーションを JBoss Application Server 7 にビルドする方法を説明します。
前提条件

サポート対象の JBoss Data Grid ライブラリモードのディストリビューションファイルを取得する必要があります。

手順9.1 CarMart を JBoss Application Server へビルドする

  1. Maven リポジトリのインストール

    小チームでの初期テストでは、JBoss Data Grid Maven リポジトリをローカルシステムのディレクトリへ展開します。
    $ unzip jboss-datagrid-maven-repository-6.0.0.zip
    
    
    JBoss Data Grid Maven リポジトリをインストールする方法の詳細は、4章Maven リポジトリのインストールおよび使用 を参照してください。
  2. JBoss Application Server の起動

    次のように JBoss Application Server を起動します。
    $JBOSS_HOME/bin/standalone.sh
    
    
  3. アプリケーションのビルド

    次のコマンドを用いて、Maven を使用してアプリケーションをビルドします。
    $ mvn clean package -Plibrary-jbossas -Ddatagrid.maven.repo=file:///path/to/unpacked/jdg/maven/repository
    
    

9.4.2. CarMart クイックスタートを JBoss Application Server へデプロイする

次の手順では、CarMart アプリケーションを JBoss Application Server 7 にデプロイする方法を説明します。
前提条件

デプロイする CarMart クリックスタートがビルドされている必要があります。

手順9.2 CarMart クイックスタートを JBoss Application Server へデプロイする

  1. アプリケーションのデプロイ

    JBoss Application Server の Maven プラグインを使用して、次のようにアプリケーションをデプロイします。
    $ mvn jboss-as:deploy -Plibrary-jbossas
    
    
  2. アプリケーションの表示

    アプリケーションを表示するには、ブラウザーを使用して次のリンクに移動します。
    http://localhost:8080/carmart-quickstart
    

9.4.3. CarMart クイックスタートを JBoss Application Server からアンデプロイする

次の手順では、すでにデプロイされているアプリケーションを JBoss Application Server からアンデプロイする方法を説明します。

手順9.3 JBoss Application Server よりアプリケーションをアンデプロイする

  • アプリケーションをアンデプロイするには、次のコマンドを使用します。
    $ mvn jboss-as:undeploy -Plibrary-jbossas

9.5. Tomcat を用いた CarMart クイックスタート

9.5.1. CarMart クイックスタートの Tomcat へのビルド

次の手順では、CarMart クイックスタートを Tomcat 7 にビルドする方法を説明します。
前提条件

サポート対象の JBoss Data Grid ライブラリモードのディストリビューションファイルを取得する必要があります。

手順9.4 CarMart クイックスタートの Tomcat へのビルド

  1. Maven リポジトリのインストール

    小チームでの初期テストでは、JBoss Data Grid Maven リポジトリをローカルシステムのディレクトリへ展開します。
    $ unzip jboss-datagrid-maven-repository-6.0.0.zip
    
    
    JBoss Data Grid Maven リポジトリをインストールする方法の詳細は、4章Maven リポジトリのインストールおよび使用 を参照してください。
  2. マネージャースクリプト情報の追加

    このビルドでは、デフォルトのホスト名 (localhost) やポート (8080) などが含まれる Tomcat 7 のデフォルト設定が使用されることを前提としています。MavenTomcat プラグインがマネージャーにアクセスできるようにするため、以下の情報を conf/tomcat-users.xml にある tomcat-users.xml ファイルへ追加します。
    <role rolename="manager-script"/>
    <user username="admin" password="" roles="manager-script"/>
    
  3. Tomcat の起動

    次のスクリプトを使用して Tomcat を起動します。
    $CATALINA_HOME/bin/catalina.sh start
    
    
  4. アプリケーションのビルド

    次のコマンドを用いて、Maven を使用してアプリケーションをビルドします。
    $ mvn clean package -Plibrary-jbossas -Ddatagrid.maven.repo=file:///path/to/unpacked/jdg/maven/repository
    
    

9.5.2. CarMart クイックスタートの Tomcat へのデプロイ

次の手順では、CarMart クイックスタートを Tomcat 7 にデプロイする方法を説明します。
前提条件

デプロイする CarMart クリックスタートがビルドされている必要があります。

手順9.5 CarMart クイックスタートの Tomcat へのデプロイ

  1. サーバーの認証情報の編集

    Maven インストールの conf ディレクトリにある Maven settings.xml ファイルに、server 要素と必要な認証情報を追加します。
    <server>
         <id>tomcat</id>
         <username>admin</username>
         <password></password>
     </server>
    
    
  2. アプリケーションのデプロイ

    次のように、Tomcat の Maven プラグインを使用してアプリケーションをデプロイします。
    $ mvn tomcat:deploy -Plibrary-tomcat
    
    
  3. アプリケーションの表示

    アプリケーションを表示するには、ブラウザーを使用して次のリンクに移動します。
    http://localhost:8080/carmart-quickstart
    

9.5.3. Tomcat の CarMart クイックスタートのアンデプロイ

次の手順では、すでにデプロイされているアプリケーションを Tomcat よりアンデプロイする方法を説明します。

手順9.6 Tomcat のアプリケーションのアンデプロイ

  • アプリケーションをアンデプロイするには、次のコマンドを使用します。
    $ mvn tomcat:undeploy -Plibrary-tomcat

9.6. リモートクライアントサーバーモードの CarMart クイックスタート

9.6.1. リモートクライアントサーバーモードでの CarMart クイックスタートのビルド

このクイックスタートは Hot Rod 経由で JBoss Data Grid にアクセスします。この機能は、トランザクション CarMart クイックスタートでは使用できません。
前提条件

サポート対象の JBoss Data Grid ライブラリモードのディストリビューションファイルを取得する必要があります。

手順9.7 リモートクライアントサーバーモードでの CarMart クイックスタートのビルド

  1. スタンドアロンファイルの設定

    $JDG_HOME/standalone/configuration/ ディレクトリにある standalone.xml ファイルに、次の設定を追加します。
    1. 次の設定を、<system-properties> 要素の右側のタグの後に追加します。
      <paths>
      <path name="temp" path="/tmp"/>
      </paths>
      
    2. infinispan サブシステムのタグ内に次の設定を追加します。
      <local-cache name="carcache" 
                   start="EAGER" batching="false" 
                   indexing="NONE">
          <locking isolation="REPEATABLE_READ" 
      	     striping="false" 
      	     acquire-timeout="20000" 
                   concurrency-level="500"/>
          <eviction strategy="LIRS" 
                    max-entries="4"/>
          <file-store relative-to="temp" 
                      path="carstore" 
                      passivation="false"/>
      </local-cache>
      
      
  2. JBoss Data Grid サーバーの起動

    次のスクリプトを実行し、JBoss Data Grid サーバーを起動します。
    $JDG_HOME/bin/standalone.sh

    注記

    サーバーは指定された設定を使用して、test1 アドレス上で実行されます。
    • UNIX ユーザー向けの test1 の設定

      /etc/hosts に次の行を追加し、UNIX システム上の test1 アドレスを設定します。
      192.168.11.101    test1
      
    • IfConfig コマンドの実行

      コマンドラインで次のコマンドを実行します。
      $ sudo ifconfig eth0:1 192.168.11.101 netmask 255.255.255.0
      
  3. JBoss Application Server の起動

    次のスクリプトを実行し、アプリケーションがデプロイされる場所に JBoss Application Server インスタンスを起動します。
    $JDG_HOME/bin/standalone.sh
  4. JBoss Data Grid サーバーアドレスの指定

    $JDG_HOME/src/main/resources/META-INF/ ディレクトリにある jdg.properties ファイルを編集し、次のように JBoss Data Grid サーバーのアドレスを指定します。
    datagrid.address=test1
    
    

    注記

    ポートオフセットが定義されている localhost アドレスで JBoss Data Grid サーバーが稼働している場合は、ポート情報が含まれるように jdg.properties ファイルを編集します。例は次の通りです。
    datagrid.address=localhost
    datagrid.hotrod.port=11322
    
    
  5. アプリケーションのビルド

    次のコマンドを使用し、関連ディレクトリでアプリケーションをビルドします。
    $ mvn clean package -Premote
    
    

9.6.2. リモートクライアントサーバーモードでの CarMart クイックスタートのデプロイ

次の手順では、CarMart クイックスタートを JBoss Data Grid のリモートクライアントサーバーモードにデプロイする方法を説明します。
前提条件

デプロイする CarMart クリックスタートがビルドされている必要があります。

手順9.8 リモートクライアントサーバーモードでの CarMart クイックスタートのデプロイ

  1. アプリケーションのデプロイ

    次のコマンドを用いて、Maven を使用してアプリケーションをデプロイします。
    $ mvn jboss-as:deploy -Premote
    
  2. アプリケーションの表示

    次のリンクにアクセスし、アプリケーションを表示します。
    http://localhost:8080/carmart-quickstart

9.6.3. リモートクライアントサーバーモードでの CarMart クイックスタートのアンデプロイ

次の手順では、すでにデプロイされているアプリケーションを JBoss Data Grid のリモートクライアントサーバーモードよりアンデプロイする方法を説明します。

手順9.9 リモートクライアントサーバーモードでのアプリケーションのアンデプロイ

  • アプリケーションをアンデプロイするには、次のコマンドを使用します。
    $ mvn jboss-as:undeploy -Premote

第10章 Football クイックスタートエンドポイントの例

10.1. Football クイックスタートエンドポイントの例について

Football アプリケーションは、JBoss Data Grid のエンドポイント (Hot Rod、REST および Memcached) の使用方法を実例を用いて説明する簡単な例になります。各例は、これらプロトコルの 1 つを使用して JBoss Data Grid に接続し、キャッシュよりデータをリモートで保存、読み出し、および削除する方法を示しています。
各アプリケーションは、コンソールアプリケーションとする簡単なフットボールチームマネージャーユーティリティの一種です。
機能

Football Manager アプリケーションの例で使用できる機能は次の通りです。

  • チームの追加。
  • プレーヤーの追加。
  • 全エンティティー (チームおよびプレーヤー) の削除。
  • 全チームおよびプレーヤーの一覧表示。
場所

JBoss Data Grid の Football クイックスタートは以下の場所にあります。

  • jboss-datagrid-quickstarts-1.0.0/carmart/rest-endpoint
  • jboss-datagrid-quickstarts-1.0.0/carmart/hotrod-endpoint
  • jboss-datagrid-quickstarts-1.0.0/carmart/memcached-endpoint

10.2. Football アプリケーションのビルド

次の手順では、JBoss Data Grid の REST、Hot Rod、および memcached エンドポイントの例としてフットボールマネージャーアプリケーションをビルドする方法を説明します。

注記

JBoss Data Grid はデプロイするアプリケーションをサポートしないため、このクイックスタートをデプロイメントとしてインストールすることはできません。

手順10.1 Football アプリケーションのビルド

  1. 設定の追加

    $JDG_HOME/standalone/configuration/ にある standalone.xml ファイルを編集し、データソースおよび infinispan サブシステムの定義を追加します。
    1. データソースに対する次のサブシステム定義を追加します。
      <subsystem xmlns="urn:jboss:domain:datasources:1.0"> 
      	<datasources> 
      		<datasource jndi-name="java:jboss/datasources/ExampleDS" 
      			    pool-name="ExampleDS" 
      			    enabled="true" 
      			    use-java-context="true"> 
      			<connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1</connection-url> 
      			<driver>h2</driver> 
      			<security> 
      				<user-name>sa</user-name> 
      				<password>sa</password> 
      			</security> 
      		</datasource> 
      		<drivers> 
      			<driver name="h2" 
      				module="com.h2database.h2"> 
      				<xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class> 
      			</driver> 
      		</drivers> 
      	</datasources> 
      </subsystem>
      
      
    2. infinispan に対する次のサブシステム定義を追加します。
      <subsystem xmlns="urn:jboss:domain:infinispan:1.2" default-cache-container="local"> 
      	<cache-container name="local" 
      			 default-cache="memcachedCache" 
      			 listener-executor="infinispan-listener" 
      			 start="EAGER"> 
      		<local-cache name="memcachedCache" 
      			     start="EAGER" 
      			     batching="false" 
      			     indexing="NONE"> 
      			<locking isolation="REPEATABLE_READ" 
      				 acquire-timeout="20000" 
      				 concurrency-level="500" 
      				 striping="false" /> 
      			<transaction mode="NONE" /> 
      			<string-keyed-jdbc-store datasource="java:jboss/datasources/ExampleDS" 
      						 passivation="false" 
      						 preload="false" 
       						 purge="false"> 
      				<property name="databaseType">H2</property> 
      				<string-keyed-table prefix="JDG"> 
      					<id-column name="id" 
      						   type="VARCHAR"/> 
      					<data-column name="datum" 
      						     type="BINARY"/> 
      					<timestamp-column name="version" 
      							  type="BIGINT"/> 
      				</string-keyed-table> 
      			</string-keyed-jdbc-store> 
      		</local-cache> 
      		<local-cache name="teams" 
      			     start="EAGER" 
        			     batching="false" 
      			     indexing="NONE"> 
      			<locking isolation="REPEATABLE_READ" 
      				 acquire-timeout="20000" 
      			 	 concurrency-level="500" 
      				 striping="false" />  
      			<transaction mode="NONE" /> 
      			<string-keyed-jdbc-store datasource="java:jboss/datasources/ExampleDS" 
      						 passivation="false" 
      						 preload="false" 
      						 purge="false"> 
      				<property name="databaseType">H2</property> 
      				<string-keyed-table prefix="JDG"> 
      					<id-column name="id" 
      						   type="VARCHAR"/> 
      					<data-column name="datum" 
      						     type="BINARY"/> 
      					<timestamp-column name="version" 
      							  type="BIGINT"/> 
      				</string-keyed-table> 
      			</string-keyed-jdbc-store> 
      		</local-cache> 
      	</cache-container> 
      </subsystem>
      
      

    注記

    Hot Rod および REST エンドポイントは teams という名前のキャッシュを使用し、memcached エンドポイントはデフォルトで memcachedCache を使用します。
  2. サブモジュール設定ファイルの編集

    各サブモジュール (特に hotrod-endpointrest-endpoint、および memcached-endpoint) には設定ファイルが含まれています ($JDG_HOME/src/main/resources/jdg.properties にあります)。設定を編集して、ご使用の JBoss Data Grid インストールに必要な値を指定します。Hot Rod エンドポイントには次のような追加設定が必要です。
    1. Maven リポジトリのインストール

      小チームでの初期テストでは、次のようにリポジトリをローカルシステムのディレクトリへ展開することができます。
      unzip jboss-datagrid-maven-repository-6.0.0.zip
      
      これにより、jboss-datagrid-maven-repository-6.0.0 というディレクトリに Maven リポジトリが作成されます。
      JBoss Data Grid Maven リポジトリをインストールする方法の詳細は、4章Maven リポジトリのインストールおよび使用 を参照してください。
  3. アプリケーションのビルド

    次のコマンドを使用して、サンプルアプリケーションのディレクトリでサンプルアプリケーションをビルドします。
    mvn package
    
    これにより、Maven のシェードプラグインが使用されます。このプラグインは、すべての依存関係を 1 つの jar ファイルにバンドルし、使いやすくします。
  4. JBoss Data Grid の起動

    次のスクリプトを実行し、JBoss Data Grid を起動します。
    $JDG_HOME/bin/standalone.sh
    
  5. アプリケーションの実行

    サンプルアプリケーションのディレクトリでサンプルアプリケーションを実行します。
    1. Hot Rod エンドポイントの場合、次のコマンドを実行します。
      java -jar target/hotrod-endpoint-quickstart.jar
      
    2. memcached エンドポイントの場合、次のコマンドを実行します。
      java -jar target/memcached-endpoint-quickstart.jar
      
    3. REST エンドポイントの場合、次のコマンドを実行します。
      java -jar target/rest-endpoint-quickstart.jar
      

第11章 JBoss Data Grid の削除

11.1. Linux システムより JBoss Data Grid を削除する

次の手順では、Linux システムより JBoss Data Grid を削除する方法を説明します。

警告

削除すると、JBoss Data Grid の設定がすべて永久的に失われます。

手順11.1 Linux システムより JBoss Data Grid を削除する

  1. サーバーのシャットダウン

    JBoss Data Grid サーバーが必ずシャットダウンされているようにしてください。
  2. JBoss Data Grid のホームディレクトリへの移動

    コマンドラインを使用して、$JDG_HOME フォルダーより 1 つ上の階層へ移動します。
  3. JBoss Data Grid のホームディレクトリの削除

    ターミナル上で次のコマンドを入力し、JBoss Data Grid を削除します。 $JDG_HOME は JBoss Data Grid のホームディレクトリの名前に置き換えてください。
    $ rm -Rf $JDG_HOME
    

11.2. Windows システムより JBoss Data Grid を削除する

次の手順では、Windows システムより JBoss Data Grid を削除する方法を説明します。

警告

削除すると、JBoss Data Grid の設定がすべて永久的に失われます。

手順11.2 Windows システムより JBoss Data Grid を削除する

  1. サーバーのシャットダウン

    JBoss Data Grid サーバーが必ずシャットダウンされているようにしてください。
  2. JBoss Data Grid のホームディレクトリへの移動

    Windows Explorer を使用して、$JDG_HOME フォルダーが存在するディレクトリへ移動します。
  3. JBoss Data Grid のホームディレクトリの削除

    $JDG_HOME フォルダーを選択し、削除します。

付録A 参照

A.1. キーバリューペアについて

キーバリューペア (KVP) とは、キーと値で構成されるデータセットのことです。
  • キーは特定のデータエントリーに一意であり、関連する特定エントリーのデータ属性によって構成されます。
  • バリュー (値) は、キーによって割り当てられ、キーによって識別されるデータです。

付録B 改訂履歴

改訂履歴
改訂 1.0.0-34Fri Jan 10 2014Misha Husnain Ali
Built from Content Specification: 11623, Revision: 507875 by mhusnain

法律上の通知

Copyright © 2014 Red Hat, Inc.
This document is licensed by Red Hat under the Creative Commons Attribution-ShareAlike 3.0 Unported License. If you distribute this document, or a modified version of it, you must provide attribution to Red Hat, Inc. and provide a link to the original. If the document is modified, all Red Hat trademarks must be removed.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat Software Collections is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.