管理および設定ガイド
JBoss Enterprise Application Platform 6 向け
エディッション 3
Nidhi Chaudhary
Lucas Costi
Russell Dickenson
Sande Gilda
Vikram Goyal
Eamon Logue
Darrin Mison
Scott Mumford
David Ryan
Misty Stanley-Jones
Keerat Verma
Tom Wells
概要
前書き
第1章 はじめに
1.1. JBoss Enterprise Application Platform 6 について
1.2. JBoss Enterprise Application Platform 6 の機能
表1.1 6.1.0 の機能
| 機能 | 説明 |
|---|---|
| Java 証明書 | Java Enterprise Edition 6 Full Profile および Web Profile 仕様の認定実装 |
| 管理対象ドメイン |
|
| 管理コンソールおよび管理 CLI | ドメインまたはスタンドアロンサーバーを管理するために新しいインターフェースが提供されます。XML 設定ファイルを手動で編集する必要がなくなります。また、管理 CLI は、管理タスクをスクリプティングおよび自動化できるバッチモードを提供します。 |
| 単純化されたディレクトリーレイアウト | 共通のサーバー固有 lib/ ディレクトリーを使用する代わりに、modules/ ディレクトリーに、アプリケーションサーバーモジュールが含まれます。domain/ および standalone/ ディレクトリーには、ドメインおよびスタンドアロンデプロイメント用のアーティファクトおよび設定ファイルが含まれます。 |
| モジュラークラスローディングメカニズム | モジュールをオンデマンドでロードおよびアンロードすると、パフォーマンスとセキュリティーの利点が提供され、起動および再起動の時間が短縮されます。 |
| 簡略化されたデータソース管理 | データベースドライバーは他のサービスと同様にデプロイされます。また、データソースは、管理コンソールまたは管理 CLI で直接作成および管理されます。 |
| 起動および停止時間の短縮 | JBoss Enterprise Application Platform 6 は少ないリソースを使用するため、システムリソースが非常に効率的に使用されます。これは開発者にとって特に有利です。 |
1.3. JBoss Enterprise Application Platform 6 の操作モードについて
1.4. スタンドアロンサーバーについて
1.5. 管理対象ドメインについて
domain.sh または domain.bat スクリプトが実行される物理または仮想ホストのことです。ホストコントローラーはドメインコントローラーとは異なり、ドメイン管理タスクを委譲します。各ホスト上のホストコントローラーはドメインコントローラーと対話して、ホスト上で実行されているアプリケーションサーバーインスタンスのライフサイクルを制御し、ドメインコントローラーがこれらのインスタンスを管理できるようにします。各ホストに複数のサーバーグループが含まれるようにすることが可能です。サーバーグループはサーバーインスタンスのセットで、JBoss Enterprise Application Platform がインストールされ、一体で管理および設定されます。ドメインコントローラーがサーバーグループにデプロイされた設定とアプリケーションを管理するため、サーバーグループの各サーバーは同じ設定とデプロイメントを共有します。

図1.1 管理対象ドメインの図解
1.6. ドメインコントローラーについて
- ドメインの集中管理ポリシーを維持する。
- すべてのホストコントローラーが現在のコンテンツを認識するようにする。
- 実行中の JBoss Enterprise Application Platform インスタンスがすべてこのポリシーに従って設定されるよう、ホストコントローラーをサポートする。
domain/configuration/domain.xml ファイルに格納されています。このファイルはドメインコントローラーのホストのファイルシステム上にある未解凍の JBoss Enterprise Application Server 6 インストールファイル内に存在します。
domain/configuration ディレクトリになければなりません。このファイルは、ドメインコントローラーとして実行しないホストコントローラー上のインストールには必要ありませんが、このようなサーバー上に domain.xml ファイルが存在しても問題はありません。domain.xml ファイルには、あるドメインのサーバーインスタンス上で実行するよう設定できるさまざまなプロファイルの設定が含まれています。プロファイル設定には、プロファイルを構成するさまざまなサブシステムの詳細設定が含まれます。また、ドメイン設定にはソケットのグループの定義やサーバーグループの定義も含まれます。
1.7. ドメインコントローラーのフェイルオーバーについて
1.8. ホストコントローラーについて
domain.sh または domain.bat script がホスト上で実行された時に起動します。ホストコントローラーの主な役割はサーバーを管理することです。ドメイン管理タスクを委譲し、ホスト上で実行される個別のアプリケーションサーバープロセスを開始および停止します。ホストコントローラーはドメインコントローラーと対話し、サーバーとドメインコントローラー間の通信を管理できるようにします。ドメインの複数のホストコントローラーは単一のドメインコントローラーのみと対話できます。そのため、単一のドメインモード上で実行されているホストコントローラーおよびサーバーインスタンスはすべて単一のドメインコントローラーを持つことができ、同じドメインに属する必要があります。
domain/configuration/host.xml ファイルより設定を読み取ります。このファイルは、ホストのファイルシステム上にある未解凍の JBoss Enterprise Application Platfrom 6 インストールファイルに存在します。host.xml ファイルには特定のホストに固有する次のような設定情報が含まれています。
- このインストールより実行されるべきである実際の JBoss Enterprise Application Platform 6 インスタンスの名前リスト。
- 次の設定のいずれか。
- ホストコントローラーがドメインコントローラーへ通知して、ホストコントローラー自体を登録し、ドメイン設定へアクセスする方法。
- リモートドメインコントローラーの検索および通知方法。
- ホストコントローラー自体がドメインコントローラーとして動作するよう、ホストコントローラーに伝える。
- ローカルの物理インストールに固有する項目の設定。例えば、domain.xml に宣言された名前付きインターフェースの定義を host.xml のマシン固有の IP アドレスへマップできます。domain.xml の抽象パス名を host.xml のファイルシステムパスへマップできます。
1.9. サーバーグループについて
<server-group name="main-server-group" profile="default"> <socket-binding-group ref="standard-sockets"/> <deployments> <deployment name="foo.war_v1" runtime-name="foo.war"/> <deployment name="bar.ear" runtime-name="bar.ear"/> </deployments> </server-group>
- name: サーバーグループの名前。
- profile: サーバーグループのプロファイルの名前。
- socket-binding-group: グループのサーバーに対して使用されるデフォルトのソケットバインディンググループの名前。この名前は host.xml でサーバーごとに上書きできます。socket-binding-group 名が server-group 要素に指定されていない場合、host.xml の各サーバーに対して指定する必要があります。
- deployments: グループのサーバー上にデプロイするデプロイメントコンテンツ。
- system-properties: グループのサーバーに設定するシステムプロパティー。
- jvm: グループの全サーバーに対するデフォルトの jvm 設定。ホストコントローラーはこれらの設定を host.xml の他の設定とマージし、サーバーの JVM を開始するために使用される設定を作成します。
1.10. JBoss Enterprise Application Platform 6 プロファイルについて
第2章 アプリケーションサーバー管理
2.1. JBoss Enterprise Application Platform の起動
2.1.1. JBoss Enterprise Application Platform の起動
2.1.2. スタンドアローンサーバーとして JBoss Enterprise Application Platform 6 を起動
ここでは、JBoss Enterprise Application Platform 6 をスタンドアロンサーバーとして起動する手順を説明します。
手順2.1 プラットフォームサービスをスタンドアロンサーバーとして起動
Red Hat Enterprise Linux の場合
コマンドの実行:EAP_HOME/bin/standalone.shMicrosoft Windows Server の場合
コマンドの実行:EAP_HOME\bin\standalone.bat別のパラメーターを指定します (任意)
起動スクリプトに渡すことができる他のパラメーター一覧を出力するには、-hパラメーターを使います。
JBoss Enterprise Application Platform 6 スタンドアロンサーバーインスタンスが起動します。
2.1.3. 管理対象ドメインとして JBoss Enterprise Application Platform 6 を起動
手順2.2 プラットフォームサービスを管理対象ドメインとして起動
Red Hat Enterprise Linux の場合
コマンドの実行:EAP_HOME/bin/domain.shMicrosoft Windows Server の場合
コマンドの実行:EAP_HOME\bin\domain.bat他のパラメーターを起動スクリプトに渡します (任意)
起動スクリプトに渡すことができる各種パラメーターを確認するには、-hパラメーターを使います。
JBoss Enterprise Application Platform 6 管理対象ドメインインスタンスが起動します。
2.1.4. 別の設定で JBoss Enterprise Application platform 6 を起動
要件
- 別の設定ファイルを使う前に、デフォルト設定をテンプレートとして使用して別の設定ファイルを作成する準備をします。管理対象ドメインの場合は、設定ファイルを
EAP_HOME/domain/configuration/に置く必要があります。スタンドアロンサーバーの場合は、設定ファイルをEAP_HOME/standalone/configuration/に置く必要があります。
注記
手順2.3 別の設定でインスタンスを起動
管理対象ドメイン
管理対象ドメインでは、--domain-configパラメーターに設定ファイルのファイル名をオプションとして指定します。設定ファイルがEAP_HOME/domain/configuration/ディレクトリにある場合は、フルパスを指定する必要はありません。例2.1 Red Hat Enterprise Linux の管理対象ドメインに別の設定ファイルを使用
[user@host bin]$ ./domain.sh --domain-config=domain-alternate.xml例2.2 Microsoft Windows Server の管理対象ドメインに別の設定ファイルを使用
C:\EAP_HOME\bin> domain.bat --domain-config=domain-alternate.xmlスタンドアロンサーバー
スタンドアロンサーバーでは、--server-configパラメーターに設定ファイルのファイル名をオプションとして指定します。設定ファイルがEAP_HOME/standalone/configuration/ディレクトリにある場合は、設定ファイルにフルパスを指定する必要はありません。例2.3 Red Hat Enterprise Linux のスタンドアロンサーバーに別の設定ファイルを使用
[user@host bin]$ ./standalone.sh --server-config=standalone-alternate.xml例2.4 Microsoft Windows Server のスタンドアロンサーバーに別の設定ファイルを使用
C:\EAP_HOME\bin> standalone.bat --server-config=standalone-alternate.xml
JBoss Enterprise Application Platform 6 が別の設定を使用して実行されます。
2.1.5. JBoss Enterprise Application Platform 6 の停止
注記
手順2.4 JBoss Enterprise Application Platform 6 のスタンドアロンインスタンスの停止
コマンドラインプロンプトから対話的に起動したインスタンスを停止します。
JBoss Enterprise Application Platform 6 が実行されているターミナルでCtrl-Cを押します。オペレーティングシステムサービスとして起動されたインスタンスを停止します。
オペレーティングシステムに応じて、以下のいずれかの手順を実行します。Red Hat Enterprise Linux
Red Hat Enterprise Linux でサービススクリプトを記述したときは、stop機能を使用します。これは、スクリプトに記述する必要があります。次に、service scriptname stopを使用できます。ここで scriptname はスクリプトの名前に置き換えます。Microsoft Windows Server
Microsoft Windows の場合は、net serviceコマンドを使用するか、コントロールパネルの サービス アプレットからサービスを停止します。
バックグラウンドで実行されているインスタンスを停止します (Red Hat Enterprise Linux)。
- プロセスリストからインスタンスを特定します。コマンド
ps aux |grep "[j]ava -server"を実行することもできます。これにより、ローカルマシンで実行されている各 JBoss Enterprise Application Platform 6 インスタンスの 1 つの結果が返されます。 kill process_IDを実行してプロセスにTERMシグナルを送信します。ここで、process_ID は上記ps auxコマンドの 2 番目のフィールドにある数字に置き換えます。
JBoss Enterprise Application Platform 6 がクリーンにシャットダウンされ、データは失われません。
2.1.6. サーバー実行時に渡すスイッチと引数のリファレンス
standalone.xml、domain.xml、および host.xml の設定ファイルで定義されたものとは別の設定でサーバーを起動できます。これには、ソケットバインディングの代替セットや二次設定でのサーバーの起動が含まれることがあります。利用可能なこれらのパラメーターのリストには、起動時にヘルプスイッチを渡すことによってアクセスできます。
例2.5
-h スイッチまたは --help スイッチが追加されています。ヘルプスイッチの結果は下表の説明を参照してください。
[localhost bin]$ standalone.sh -h
表2.1 実行時スイッチおよび引数の表
| 引数またはスイッチ | 説明 |
|---|---|
| --admin-only | サーバーの実行タイプを ADMIN_ONLY に設定します。これにより管理インターフェースが開かれ、管理リクエストが許可されますが、他のランタイムサービスは起動されず、エンドユーザーのリクエストは許可されません。 |
| -b=<value> | システムプロパティー jboss.bind.address を該当する値に設定します。 |
| -b <value> | システムプロパティー jboss.bind.address を該当する値に設定します。 |
| -b<interface>=<value> | システムプロパティー jboss.bind.address.<interface> を該当する値に設定します。 |
| -c=<config> | 使用するサーバー設定ファイルの名前。デフォルト値は standalone.xml です。 |
| -c <config> | 使用するサーバー設定ファイルの名前。デフォルト値は standalone.xml です。 |
| --debug [<port>] | オプションの引数を用いてデバッグモードを有効にし、ポートを指定します。起動スクリプトがサポートする場合のみ動作します。 |
| -D<name>[=<value>] | システムプロパティーを設定します。 |
| -h | ヘルプメッセージを表示し、終了します。 |
| --help | ヘルプメッセージを表示し、終了します。 |
| -P=<url> | 該当する URL からシステムプロパティーをロードします。 |
| -P <url> | 該当する URL からシステムプロパティーをロードします。 |
| --properties=<url> | 該当する URL からシステムプロパティーをロードします。 |
| -S<name>[=<value>] | セキュリティープロパティーを設定します。 |
| --server-config=<config> | 使用するサーバー設定ファイルの名前。デフォルト値は standalone.xml です。 |
| -u=<value> | システムプロパティー jboss.default.multicast.address を指定の値に設定します。 |
| -u <value> | システムプロパティー jboss.default.multicast.address を指定の値に設定します。 |
| -V | アプリケーションサーバーのバージョンを表示し、終了します。 |
| -v | アプリケーションサーバーのバージョンを表示し、終了します。 |
| --version | アプリケーションサーバーのバージョンを表示し、終了します。 |
2.2. サーバーの起動と停止
2.2.1. サーバーの起動と停止
shutdown 操作を使用してサーバーをシャットダウンできます。管理コンソールでは同等の操作が存在しません。これはお使いのファイルシステムを自由に使用して実行中のインスタンスをシャットダウンできるためです。
例2.6 管理 CLI より管理対象ドメインのサーバーグループを起動または停止する
# start server group named main /server-group=main:start-servers # stop server group named main /server-group=main:stop-servers
例2.7 管理 CLI より管理対象ドメインのサーバーインスタンスを起動または停止する
# start server instance named server-one /host=master/server-config=server-one:start # stop server instance named server-one /host=master/server-config=server-one:stop
例2.8 管理 CLI より管理対象ドメインのサーバーホストを停止する
# stop server host named master /host=master:shutdown
2.2.2. 管理コンソールを使用したサーバーの起動
手順2.5 サーバーの起動
管理コンソールの Server Instances に移動します。
- コンソールの右上から Runtime タブを選択します。
- コンソールの左側にあるメニューから Domain Status → Server Instances を選択します。

図2.1 サーバーインスタンス
サーバーの選択
Server Instances のリストから、起動するサーバーを選択します。実行されているサーバーはチェックマークで示されます。Start ボタンをクリックします。
サーバーリスト上部にある Start ボタンをクリックして、確認ダイアログボックスを開きます。Confirm ボタンをクリックしてサーバーを起動します。
図2.2 サーバーの変更の確認
選択したサーバーが起動し、稼働状態になります。

図2.3 起動されたサーバー
2.2.3. 管理コンソールを使用したサーバーの停止
手順2.6 管理コンソールを使用したサーバーの停止
管理コンソールの Server Instances に移動します。
- コンソールの右上から Runtime タブを選択します。
- コンソールの左側にあるメニューから Domain Status → Server Instances を選択します。

図2.4 サーバーインスタンス
サーバーの選択
Server Instances のリストから、停止するサーバーを選択します。実行されているサーバーはチェックマークで示されます。Stop ボタンをクリックします。
サーバーリスト上部にある Stop ボタンをクリックして、確認ダイアログボックスを開きます。Confirm ボタンをクリックしてサーバーを停止します。
選択されたサーバーが停止します。

図2.5 停止されたサーバー
2.3. ファイルシステムパス
2.3.1. ファイルシステムパス
domain.xml、host.xml、および standalone.xml の設定には、パスを宣言できるセクションが含まれます。設定の他のセクションは、各インスタンスの絶対パスを宣言せず論理名を使用することにより、これらのパスを参照できます。これにより、特定のホスト設定をユニバーサルな論理名に解決できるため、設定や管理がしやすくなります。
log ディレクトリーを参照する jboss.server.log.dir パスの参照が含まれます。
例2.9 ロギングディレクトリーの相対パス例
<file relative-to="jboss.server.log.dir" path="server.log"/>
表2.2 標準的なパス
| 値 | 説明 |
|---|---|
jboss.home | JBoss EAP 6 ディストリビューションのルートディレクトリー。 |
user.home | ユーザーホームディレクトリー。 |
user.dir | ユーザーのカレントワーキングディレクトリ。 |
java.home | Java インストールディレクトリー。 |
jboss.server.base.dir | 各サーバーインスタンスのルートディレクトリー。 |
jboss.server.data.dir | サーバーが永続データファイルストレージに使用するディレクトリー。 |
jboss.server.log.dir | サーバーがファイルストレージに使用するディレクトリー。 |
jboss.server.tmp.dir | サーバーが一時ファイルストレージに使用するディレクトリー。 |
jboss.domain.servers.dir | ホストコントロールが管理対象ドメインの各サーバーインスタンスに対して作業領域を作成するディレクトリー。 |
path 要素を設定ファイルに追加することにより、独自のパスを追加したり、上記の最初の 5 つを除くすべてをオーバーライドしたりできます。次の例は、各サーバーインスタンスのルートディレクトリーに対する新しい相対パス宣言を示しています。
例2.10 相対パスの形式
<path name="examplename" path="example/path" relative-to="jboss.server.data.dir"/>
表2.3 パス属性
| 属性 | 説明 |
|---|---|
name | パスの名前。 |
path | 実際のファイルシステムパス。relative-to 属性が指定されない限り、絶対パスとして処理され、値はそのパスの相対パスとして処理されます。 |
relative-to | 以前に指定された別のパスの名前を示すオプション属性、またはシステムにより提供される標準的ないずれかのパス。 |
domain.xml 設定ファイルの path 要素には、name 属性のみが必要です。以下の例のとおり、実際のファイルシステムパスを示す情報を含める必要はありません。
例2.11 ドメインパスの例
<path name="example"/>
domain.xml 設定の他の部分が参照できる example という名前のパスがあることを宣言します。example で宣言された実際のファイルシステムの場所は、ドメイングループに参加しているホストインスタンスの各 host.xml 設定ファイルに固有です。この方法が使用された場合は、実際のファイルシステムパスを指定する各マシンの host.xml にパス要素が含まれる必要があります。
例2.12 ホストパスの例
<path name="example" path="path/to/example" />
standalone.xml 内の path 要素には、実際のファイルシステムパスの指定を含める必要があります。
2.4. ファイルの履歴設定
2.4.1. JBoss Enterprise Application Platform 6 の設定ファイルについて
表2.4 設定ファイルの場所
| サーバーモード | 場所 | 目的 |
|---|---|---|
| domain.xml | EAP_HOME/domain/configuration/domain.xml | 管理対象ドメインの主要の設定ファイルです。ドメインマスターのみがこのファイルを読み取ります。他のドメインメンバーでは削除することが可能です。 |
| host.xml | EAP_HOME/domain/configuration/host.xml | このファイルには、管理対象ドメインの物理ホスト固有の設定情報が含まれています (ネットワークインターフェース、ソケットバインディング、ホスト名、その他のホスト固有の詳細など)。host.xml ファイルには、host-master.xml および host-slave.xml (詳細は下記参照) の両方の機能がすべて含まれています。このファイルはスタンドアロンサーバーの場合は存在しません。 |
| host-master.xml | EAP_HOME/domain/configuration/host-master.xml | このファイルには、サーバーを管理対象ドメインのマスターサーバーとして実行するために必要な設定情報のみが含まれています。このファイルはスタンドアロンサーバーでは存在しません。 |
| host-slave.xml | EAP_HOME/domain/configuration/host-slave.xml | このファイルには、サーバーを管理対象ドメインのスレーブサーバーとして実行するために必要な設定情報のみが含まれています。このファイルはスタンドアロンサーバーでは存在しません。 |
| standalone.xml | EAP_HOME/standalone/configuration/standalone.xml | スタンドアロンサーバーのデフォルトの設定ファイルです。このファイルにはサブシステム、ネットワーキング、デプロイメント、ソケットバインディング、その他の設定情報などを含むスタンドアロンサーバーに関するすべての情報が含まれています。スタンドアロンサーバーの起動時にこの設定が自動的に使用されます。 |
| standalone-full.xml | EAP_HOME/standalone/configuration/standalone-full.xml | スタンドアロンサーバーの設定例です。高可用性を要するサブシステムを除く、可能な全サブシステムのサポートが含まれます。使用するには、サーバーを停止し、次のコマンドを使用して再起動します: EAP_HOME/bin/standalone.sh -c standalone-full.xml |
| standalone-ha.xml | EAP_HOME/standalone/configuration/standalone-ha.xml | このサンプル設定ファイルは、デフォルトのサブシステムをすべて有効にし、高可用性または負荷分散クラスターに参加できるよう mod_cluster および JGroups サブシステムをスタンドアロンサーバーに対して追加します。このファイルは管理対象ドメインには適用されません。この設定を使用するには、サーバーを停止し、次のコマンドを使用して再起動します: EAP_HOME/bin/standalone.sh -c standalone-ha.xml |
| standalone-full-ha.xml | EAP_HOME/standalone/configuration/standalone-full-ha.xml | これはスタンドアロンサーバーの設定例です。高可用性に必要となるサブシステムを含む、可能なすべてのサブシステムのサポートが含まれます。使用するにはサーバーを停止し、次のコマンドを使用して再起動します: EAP_HOME/bin/standalone.sh -c standalone-full-ha.xml |
2.4.2. ファイルの履歴設定
standalone.xml、domain.xml、および host.xml ファイルが含まれます。これらのファイルは直接編集して変更できますが、管理 CLI や管理コンソールといった利用可能な管理操作でアプリケーションサーバーモデルを設定する方法が推奨されます。
2.4.3. サーバーを以前の設定で起動
standalone.xml を使用してスタンドアロンサーバーの以前の設定でアプリケーションサーバーを起動する方法を示しています。同じコンセプトは、domain.xml と host.xml それぞれを使用した監理対象ドメインに適用されます。
- 開始するバックアップバージョンを特定します。この例では、正常な起動後の最初の変更の前にサーバーモデルのインスタンスが呼び出されます。
EAP_HOME/configuration/standalone_xml_history/current/standalone.v1.xml jboss.server.config.dir下で相対ファイル名を渡し、バックアップモデルのこの設定を用いてサーバーを起動します。EAP_HOME/bin/standalone.sh --server-config=standalone_xml_history/current/standalone.v1.xml
アプリケーションサーバーが、選択された設定で起動されます。
2.4.4. 管理 CLI を使用した設定スナップショットの保存
設定スナップショットは、現在のサーバー設定のポイントインタイムコピーです。これらのコピーは、管理者が保存およびロードできます。
standalone.xml 設定ファイルを使用しますが、同じプロセスが domain.xml および host.xml 設定ファイルにも適用されます。
手順2.7 設定スナップショットの撮影および保存
スナップショットの保存
take-snapshot操作を実行して、現在のサーバー設定のコピーを取得します。[standalone@localhost:9999 /] :take-snapshot { "outcome" => "success", "result" => "/home/User/EAP_HOME/standalone/configuration/standalone_xml_history/snapshot/20110630-172258657standalone.xml"
現在のサーバー設定のスナップショットが保存されます。
2.4.5. 設定スナップショットのロード
standalone.xml ファイルを使用しますが、同じプロセスが domain.xml および host.xml ファイルにも適用されます。
手順2.8 設定スナップショットのロード
- ロードするスナップショットを識別します。この例では、スナップショットディレクトリーから以下のファイルが呼び出されます。スナップショットファイルのデフォルトのパスは以下のとおりです。
EAP_HOME/standalone/configuration/standalone_xml_history/snapshot/20110812-191301472standalone.xmlスナップショットは相対パスにより表されます。たとえば、上記の例は次のように記述できます。jboss.server.config.dir/standalone_xml_history/snapshot/20110812-191301472standalone.xml - ファイル名を渡し、選択したスナップショットを用いてサーバーを起動します。
EAP_HOME/bin/standalone.sh --server-config=standalone_xml_history/snapshot/20110913-164449522standalone.xml
ロードしたスナップショットに選択された設定を用いてサーバーが再起動します。
2.4.6. 管理 CLI を使用した設定スナップショットの削除
standalone.xml ファイルを使用しますが、同じプロセスが domain.xml および host.xml ファイルにも適用されます。
手順2.9 特定のスナップショットの削除
- ロードするスナップショットを指定します。この例では、スナップショットディレクトリーから以下のファイルが削除されます。
EAP_HOME/standalone/configuration/standalone_xml_history/snapshot/20110630-165714239standalone.xml
:delete-snapshotコマンドを実行して、特定のスナップショットを削除します。以下の例のようにスナップショットの名前を指定します。[standalone@localhost:9999 /]
:delete-snapshot(name="20110630-165714239standalone.xml"){"outcome" => "success"}
スナップショットが削除されます。
手順2.10 スナップショットすべてを削除
:delete-snapshot(name="all")コマンドを以下の例のとおりに実行し、スナップショットをすべて削除します。[standalone@localhost:9999 /]
:delete-snapshot(name="all"){"outcome" => "success"}
スナップショットがすべて削除されます。
2.4.7. 管理 CLI を使用したすべての設定スナップショットのリスト
standalone.xml ファイルを使用しますが、同じプロセスが domain.xml および host.xml ファイルにも適用されます。
手順2.11 すべての設定スナップショットのリスト
すべてのスナップショットのリスト
:list-snapshotsコマンドを実行して、保存されたすべてのスナップショットをリストします。[standalone@localhost:9999 /]
:list-snapshots{ "outcome" => "success", "result" => { "directory" => "/home/hostname/EAP_HOME/standalone/configuration/standalone_xml_history/snapshot", "names" => [ "20110818-133719699standalone.xml", "20110809-141225039standalone.xml", "20110802-152010683standalone.xml", "20110808-161118457standalone.xml", "20110912-151949212standalone.xml", "20110804-162951670standalone.xml" ] } }
スナップショットがリストされます。
第3章 管理インターフェース
3.1. アプリケーションサーバーの管理
3.2. 管理アプリケーションプログラミングインターフェース (API)
JBoss Enterprise Application Platform 6 は、サーバーを設定および管理する 3 つの方法 (Web インターフェース、コマンドラインクライアント、および XML 設定ファイルのセット) を提供します。設定ファイルを編集する推奨される方法には管理コンソールと管理 CLI が含まれますが、これら 3 つの方法で設定に行われた編集は、さまざまなビューで常に同期され、最終的に XML ファイルに永続化されます。サーバーインスタンスの実行中に XML 設定ファイルに行われた編集は、サーバーモデルによって上書きされることに注意してください。
管理コンソールは、Google Web Toolkit (GWT) で構築された Web インターフェースの例です。管理コンソールは、HTTP 管理インターフェースを使用してサーバーと通信します。HTTP API エンドポイントは、管理レイヤーと統合するために HTTP プロトコルに依存する管理クライアントのエントリポイントです。HTTP API エンドポイントは、 JSON エンコードプロトコルと de-typed な RPC スタイル API を使用して管理対象ドメインまたはスタンドアロンサーバーに対して管理操作を定義および実行します。HTTP API は Web コンソールによって使用されますが、さまざまな他のクライアントに対して統合機能を提供します。
例3.1 HTTP API 設定ファイルの例
<management-interfaces>
[...]
<http-interface interface="management" port="9990"/>
<management-interfaces>
表3.1 TableTitle
| URL | 説明 |
|---|---|
http://localhost:9990/console | ローカルホストでアクセスされる管理コンソール (管理対象ドメイン設定を制御します)。 |
http://hostname:9990/console | リモートでアクセスされる管理コンソール (ホストを指定し、管理対象ドメイン設定を制御します)。 |
http://hostname:9990/management | HTTP 管理 API は管理コンソールと同じポートで実行され、API に公開された raw 属性と値を表示します。 |
ネイティブ API ツールの例には管理 CLI があります。この管理ツールは管理対象ドメインまたはスタンドアロンサーバーインスタンスに使用できるため、ユーザーはドメインコントローラーまたはスタンドアロンサーバーインスタンスに接続して、de-typed 管理モデルを介して利用可能な管理操作を実行できます。
例3.2 ネイティブ API 設定ファイルの例
<management-interfaces>
<native-interface interface="management" port="9999"/>
[...]
<management-interfaces>
3.3. 管理コンソールと管理 CLI について
3.4. 管理コンソール
3.4.1. 管理コンソール
3.4.2. 管理コンソールへログイン
要件
- JBoss Enterprise Application Platform 6 が稼働している必要があります。
手順3.1 管理コンソールへログイン
管理コンソールのスタートページに移動
Web ブラウザーで管理コンソールに移動します。デフォルトの場所は http://localhost:9990/console/ です。ポート 9990 は管理コンソールのソケットバインディングとして事前定義されています。管理コンソールへログイン
以前作成したアカウントのユーザー名とパスワードを入力し、管理コンソールのログイン画面でログインします。
図3.1 管理コンソールのログイン画面
結果
- 管理対象ドメイン
- スタンドアロンサーバー
3.4.3. 管理コンソールの言語の変更
サポート言語
- ドイツ語 (de)
- 簡体中国語 (zh-Hans)
- ブラジルポルトガル語 (pt-BR)
- フランス語 (fr)
- スペイン語 (es)
- 日本語 (ja)
手順3.2 Web ベース管理コンソールの言語の変更
管理コンソールにログインします。
Web ベースの管理コンソールにログインします。Settings ダイアログを開きます。
画面の右下付近に Settings ラベルがあります。これをクリックして管理コンソールの設定を開きます。必要な言語を選択します。
Locale 選択ボックスから希望の言語を選択します。次に、Save を選択します。確認ボックスに、アプリケーションをリロードする必要があると表示されます。Confirm をクリックします。新しいロケールを使用するために Web ブラウザを更新します。
3.4.4. 管理コンソールを使用したサーバーの設定
手順3.3 サーバーの設定
管理コンソールでサーバーの Server Configuration パネルに移動します。
- コンソールの右上から Server タブを選択します。
- コンソールの左側にある Server Configurations メニュー項目を展開し、リストから該当するサーバーを選択します。

図3.2 サーバー設定
サーバー設定の編集
- サーバーリストの下にある Edit ボタンをクリックします。
- 設定属性を変更します。
- サーバーリストの下にある Save ボタンをクリックします。
サーバー設定が変更され、サーバーが次回再起動した時に変更が反映されます。
3.4.5. 管理コンソールでのデプロイメントの追加
手順3.4 デプロイメントの追加および検証
管理コンソールの Manage Deployments パネルに移動します。
- コンソールの右上から Runtime タブを選択します。
- スタンドアロンサーバーの場合、コンソールの左側にある Server メニューを展開し、Manage Deployments を選択します。管理対象ドメインの場合は、コンソールの左側にある Domain メニューを展開し、Manage Deployments を選択します。
Manage Deployments パネルが表示されます。
図3.3 スタンドアロンデプロイメントの管理
デプロイメントコンテンツの追加
Deployments パネルの右上の Add ボタンを選択します。Upload ダイアログボックスが表示されます。デプロイするファイルの選択
ダイアログボックスで、Choose File ボタンを選択します。デプロイしたいファイルを見つけ、アップロードするために選択します。ファイルを選択したら、Next ボタンを選択して作業を続行します。
図3.4 デプロイメント選択
デプロイメント名の確認
Upload ダイアログボックスに表示されるデプロイメント名とランタイム名を確認します。名前を確認したら、Save ボタンを選択してファイルをアップロードします。
図3.5 デプロイメント名の確認
選択したコンテンツがサーバーにアップロードされ、デプロイメント可能になります。

図3.6 スタンドアロンサーバーインスタンスのアップロードされたデプロイメント
3.4.6. 管理コンソールでのサーバーの新規作成
手順3.5 サーバー設定の新規作成
管理コンソールの Server Configurations ページに移動します。
コンソールの右上から Server タブを選択します。設定の新規作成
- Server Configuration パネルの上部にある Add ボタンを選択します。
- Create Server Configuration ダイアログで基本的なサーバー設定を編集します。
- Save ボタンを選択して、新しいサーバー設定を保存します。
新しいサーバーが作成され、Server Configurations リストに表示されます。
3.4.7. 管理コンソールを使用したデフォルトログレベルの変更
手順3.6 ロギングレベルの編集
管理コンソールの Logging パネルに移動します。
- 管理対象ドメインを使用している場合は、コンソールの右上の Profiles タブを選択し、次にコンソールの左側にあるドロップダウンリストから該当するプロファイルを選択します。
- 管理対象ドメインとスタンドアロンサーバーのどちらの場合でも、コンソールの左側にあるメニューより Core → Logging と選択します。
- コンソール上部の Log Categories タグをクリックします。

図3.7 ロギングパネル
ロガー詳細の編集
Log Categories テーブル内のエントリーの詳細を編集します。- Log Categories テーブル内のエントリを選択し、その下にある Details セクションの Edit ボタンを押します。
- Log Level ドロップダウンボックスでカテゴリーのログレベルを設定します。設定したら、Save ボタンを押します。
該当するカテゴリーのログレベルが更新されます。
3.4.8. 管理コンソールでのサーバーグループの新規作成
手順3.7 サーバーグループの新規作成および追加
Server Groups のビューに移動します。
右上隅の Host タブを選択します。- 左欄の Server Groups メニューにある Group Configurations タブを選択します。

図3.8 Server Groups ビュー
サーバーグループの追加
Add ボタンをクリックし新規サーバーグループを追加します。サーバーグループの設定
- サーバーグループ名を入力します。
- サーバーグループを追加するプロファイルを選択します。
- サーバーグループを追加するソケットバインディングを選択します。
- Save ボタンを押し、新規グループを保存します。

図3.9 Create Server Group ダイアログ
新規サーバーグループが管理コンソールに表示されるようになります。
3.5. 管理 CLI
3.5.1. 管理コマンドラインインターフェース (CLI) について
3.5.2. Management CLI の起動
要件
- 管理 CLI にアクセスする前に以下のいずれかを実行してください。
手順3.8 Linux または Windows での CLI の起動
Linux での CLI の起動
コマンドラインで以下のコマンドを入力して、EAP_HOME/bin/jboss-cli.shファイルを実行します。$ EAP_HOME/bin/jboss-cli.sh
Windows での CLI の起動
ダブルクリックするか、コマンドラインで以下のコマンドを入力して、EAP_HOME\bin\jboss-cli.batファイルを実行します。C:\>EAP_HOME\bin\jboss-cli.bat
3.5.3. 管理 CLI の終了
手順3.9 管理 CLI の終了
quitコマンドの実行管理 CLI で、quitコマンドを入力します。[domain@localhost:9999 /]
quitClosed connection to localhost:9999
3.5.4. 管理 CLI を使用した管理対象サーバーインスタンスへの接続
手順3.10 管理対象サーバーインスタンスへの接続
connectコマンドを実行します。管理 CLI で、connectコマンドを入力します。[disconnected /]
connectConnected to domain controller at localhost:9999- Linux システムで管理 CLI を起動する時に管理対象サーバーへ接続するには、
--connectパラメーターを使用します。$
EAP_HOME/bin/jboss-cli.sh --connect --connectパラメーターは、ホストとサーバーのポートを指定するために使用できます。ポートの値が9999であるアドレス192.168.0.1に接続するには、次のコマンドを使用します。$
EAP_HOME/bin/jboss-cli.sh --connect --controller=192.168.0.1:9999
3.5.5. 管理 CLI でのヘルプの使用
管理 CLI には、一般的なオプションと状況依存オプションから構成されるヘルプダイアログが組み込まれてます。運用状況に依存するヘルプコマンドでは、スタンドアロンまたはドメインコントローラーへの接続を確立する必要があります。接続が確立されない限り、これらのコマンドはリストに表示されません。
手順3.11 一般および状況依存ヘルプ
helpコマンドの実行管理 CLI で、helpコマンドを入力します。[standalone@localhost:9999 /]
help状況依存ヘルプの使用
管理 CLI で、help -commands拡張コマンドを入力します。[standalone@localhost:9999 /]
help --commands- 特定のコマンドの詳細については、
'--help'を引数としてhelpコマンドを実行してください。[standalone@localhost:9999 /]
deploy --help
CLI ヘルプ情報が表示されます。
3.5.6. バッチモードでの管理 CLI の使用
バッチ処理により、複数の操作をシーケンスでグループ化し、ユニットとして一緒に実行できます。シーケンス内のいずれかの操作要求が失敗したら、操作のグループ全体がロールバックされます。
手順3.12 バッチモードのコマンドおよび操作
バッチモードの開始
batchコマンドを使用してバッチモードを開始します。[standalone@localhost:9999 /] batch [standalone@localhost:9999 / #]
バッチモードは、プロンプトでハッシュ記号 (#) で示されます。バッチへの操作要求の追加
バッチモードが開始されたら、操作要求を通常どおり入力します。操作要求は、入力された順序でバッチに追加されます。操作要求のフォーマット化の詳細については、「管理 CLI での操作およびコマンドの使用」 を参照してください。バッチの実行
操作要求のシーケンス全体が入力されたら、run-batchコマンドを使用してバッチを実行します。[standalone@localhost:9999 / #] run-batch The batch executed successfully.
バッチの作業に使用できるコマンドの完全リストは 「CLI のバッチモードコマンド」 を参照してください。外部ファイルに保存されたバッチコマンド
頻繁に実行するバッチコマンドは、外部のテキストファイルに保存できます。これらのバッチコマンドをロードするには、ファイルへのフルパスを引数としてbatchコマンドに渡すか、run-batchコマンドの引数として直接実行します。テキストエディターを使用してバッチコマンドファイルを作成できます。1 行に 1 つのコマンドのみががあるようにし、CLI がコマンドにアクセスできなければなりません。次のコマンドは、バッチモードでmyscript.txtファイルをロードします。このファイルのすべてのコマンドは編集または削除できます。新しいコマンドを挿入できます。このバッチセッションで変更された内容はmyscript.txtファイルへ保持されません。[standalone@localhost:9999 /] batch --file=myscript.txt
次のコマンドは、myscript.txtファイルに保存されたバッチコマンドを即時実行します。[standalone@localhost:9999 /] run-batch --file=myscript.txt
操作要求の入力されたシーケンスはバッチとして完了します。
3.5.7. CLI のバッチモードコマンド
表3.2 CLI のバッチモードコマンド
| コマンド名 | 説明 |
|---|---|
| list-batch | 現在のバッチのコマンドおよび操作のリスト |
| edit-batch-line line-number edited-command | 編集する行番号と edited コマンドを提供し、現在のバッチの行を編集します。例: edit-batch-line 2 data-source disable --name=ExampleDS |
| move-batch-line fromline toline | 移動したい行の番号を最初の引数として指定し、移動先を 2 番目の引数として指定してバッチの行の順序を変更します。例: move-batch-line 3 1 |
| remove-batch-line linenumber | 特定の行でバッチコマンドを削除します。例: remove-batch-line 3 |
| holdback-batch [batchname] |
このコマンドを使用すると現在のバッチを延期または保存できます。バッチの外部にて急に CLI で実行するものがある場合にこのコマンドを使用します。保留したバッチへ戻るには、再度 CLI コマンドラインに
batch を入力します。
holdback-batch コマンドの使用中にバッチ名を指定すると、バッチがその名前で保存されます。名前が付けられたバッチに戻るには、batch batchname コマンドを使用します。バッチ名を指定せずに batch コマンドを呼び出すと、新しい (名前が付けられていない) バッチが開始します。名前が付けられていない保留バッチは 1 つのみ存在できます。
保留されたバッチをすべて一覧表示するには、
batch -l コマンドを使用します。
|
| discard-batch | 現在アクティブなバッチを破棄します。 |
3.5.8. 管理 CLI での操作およびコマンドの使用
手順3.13 リクエストの作成、設定、および実行
操作要求の構築
操作要求では、管理モデルとの低レベルの対話が可能です。この場合、サーバー設定を制御された方法で編集できます。操作要求は、以下の 3 つの部分から構成されます。- スラッシュ (
/) で始まる アドレス。 - コロン (
:) で始まる 操作名。 - 丸かっこ「
()」で囲まれたパラメーターのオプションセット。
アドレスの決定
設定はアドレス指定可能なリソースの階層ツリーとして表されます。各リソースノードは、異なる操作セットを提供します。アドレスは、操作を実行するリソースノードを指定します。アドレスでは以下の構文を使用します。/node-type=node-name
- node-type は、リソースノードタイプです。これは、設定 XML の要素名に対してマッピングされます。
- node-name はリソースノード名です。これは、設定 XML の要素の
name属性に対してマッピングされます。 - スラッシュ (
/) を使用してリソースツリーの各レベルを区切ります。
設定 XML ファイルを参照して必要なアドレスを決定します。EAP_HOME/standalone/configuration/standalone.xmlファイルは、スタンドアロンサーバーの設定を保持し、EAP_HOME/domain/configuration/domain.xmlファイルとEAP_HOME/domain/configuration/host.xmlファイルは管理対象ドメインの設定を保持します。例3.3 操作アドレスの例
ロギングサブシステムで操作を実行するには、操作要求に以下のアドレスを使用します。/subsystem=logging
Java データソースに対して操作を実行するには、操作要求に以下のアドレスを使用します。/subsystem=datasources/data-source=java
操作の決定
リソースノードのタイプによって操作は異なります。操作では以下の構文を使用します。:operation-name
- operation-name は、要求する操作の名前です。
利用可能な操作をリストするために、スタンドアロンサーバーの任意のリソースアドレスでread-operation-names操作を使用します。例3.4 利用可能な操作
ロギングサブシステムのすべての利用可能な操作をリストするために、スタンドアロンサーバーの以下の要求を入力します。[standalone@localhost:9999 /] /subsystem=logging:read-operation-names { "outcome" => "success", "result" => [ "add", "read-attribute", "read-children-names", "read-children-resources", "read-children-types", "read-operation-description", "read-operation-names", "read-resource", "read-resource-description", "remove", "undefine-attribute", "whoami", "write-attribute" ] }パラメーターの決定
各操作では異なるパラメーターが必要な場合があります。パラメーターは以下の構文を使用します。(parameter-name=parameter-value)
- parameter-name は、パラメーターの名前です。
- parameter-value は、パラメーターの値です。
- 複数のパラメーターは、カンマ (
,) で区切られます。
必要なパラメーターを決定するには、リソースノードで操作名をパラメーターとして渡し、read-operation-descriptionコマンドを実行します。詳細については、例3.5「操作パラメーターの決定」 を参照してください。例3.5 操作パラメーターの決定
ロギングサブシステムでread-children-types操作に必須のパラメーターを決定するには、以下のようにread-operation-descriptionコマンドを入力します。[standalone@localhost:9999 /] /subsystem=logging:read-operation-description(name=read-children-types) { "outcome" => "success", "result" => { "operation-name" => "read-children-types", "description" => "Gets the type names of all the children under the selected resource", "reply-properties" => { "type" => LIST, "description" => "The children types", "value-type" => STRING }, "read-only" => true } }
完全操作要求の入力
アドレス、操作、およびパラメーターが決定されたら、完全操作要求を入力します。例3.6 操作要求の例
[standalone@localhost:9999 /]
/subsystem=web/connector=http:read-resource(recursive=true)
管理インターフェースは、サーバー設定の操作要求を実行します。
3.5.9. 管理 CLI コマンドのリファレンス
トピック「管理 CLI でのヘルプの使用」では、一般オプションと状況依存オプションがあるヘルプダイアログが含まれる、管理 CLI ヘルプ機能のアクセス方法について説明しています。ヘルプコマンドは、操作コンテキストに依存し、スタンドアロンまたはドメインコントローラーへ確立された接続を必要とします。接続が確立されない限り、これらのコマンドはリストに表示されません。
表3.3
| コマンド | 説明 |
|---|---|
batch | 新しいバッチを作成してバッチモードを開始するか、既存の保留中のバッチに応じて、バッチを再びアクティベートします。保留中のバッチがない場合は、引数なしで呼び出されたこのコマンドによって新しいバッチが開始されます。名前がない保留中のバッチがある場合は、このコマンドによってそのバッチが再びアクティベートされます。名前がある保留中のバッチがある場合は、保留中のバッチの名前を引数にしてこのコマンドを実行することにより、これらのバッチをアクティベートできます。 |
cd | 現在のノードパスを引数に変更します。現在のノードパスはアドレス部分を含まない操作要求のアドレスとして使用されます。操作要求にアドレスが含まれる場合、そのアドレスは現在のノードパスに対して相対的であると見なされます。現在のノードパスは node-type で終わることがあります。その場合は、logging:read-resource などの node-name を指定すれば操作を実行できます。 |
clear | 画面を消去します。 |
command | 新しいタイプコマンドを追加し、既存の汎用タイプコマンドを削除およびリストできます。汎用タイプコマンドは、特定のノードタイプに割り当てられたコマンドであり、そのタイプのインスタンス向けの操作を実行可能にします。また、既存インスタンスのタイプにより公開された任意のプロパティーを変更することもできます。 |
connect | 指定されたホストおよびポートのコントローラに接続します。 |
connection-factory | 接続ファクトリーを定義します。 |
data-source | データソースサブシステムで JDBC データソース設定を管理します。 |
deploy | ファイルパスで指定されたアプリケーションをデプロイするか、リポジトリで無効な既存のアプリケーションを有効にします。引数なしで実行された場合は、このコマンドにより、既存のすべてのデプロイメントがリストされます。 |
help | ヘルプメッセージを表示します。該当するコマンドの状況依存の結果を提供するには、--commands 引数とともに使用します。 |
history | メモリー内の CLI コマンド履歴を表示し、履歴拡張が有効または無効であるかを表示します。必要に応じて履歴拡張をクリア、無効、および有効にするには、引数とともに使用します。 |
jms-queue | メッセージングサブシステムで JMS キューを定義します。 |
jms-topic | メッセージングサブシステムで JMS トピックを定義します。 |
ls | ノードパスの内容をリストします。デフォルトでは、ターミナルの全体の幅を使用して結果が列で出力されます。-l スイッチを使用すると、1 行あたり 1 つの名前で結果が出力されます。 |
pwd | 現在動作しているノードの完全ノードパスを出力します。 |
quit | コマンドラインインターフェースを終了します。 |
read-attribute | 値を出力し、引数によっては管理対象リソースの属性の説明も出力します。 |
read-operation | 指定された操作の説明を表示します。指定された操作がない場合は利用可能なすべての操作をリストします。 |
undeploy | 目的のアプリケーションの名前で実行された場合にアプリケーションをアンデプロイします。リポジトリからアプリケーションを削除するには引数とともに使用します。アプリケーションを指定せずに実行すると、既存のすべてのデプロイメントをリストします。 |
version | アプリケーションサーバーのバージョンと環境情報を出力します。 |
xa-data-source | データソースサブシステムで JDBC XA データソース設定を管理します。 |
3.5.10. 管理 CLI 操作のリファレンス
Management CLI の操作は、トピック 「管理 CLI を使用した操作名の表示」 で解説している read-operation-names を使用すると公開できます。また、操作の説明は、トピック 「管理 CLI を使用した操作説明の表示」 で解説している read-operation-descriptions 操作を使用すると公開できます。
表3.4 Management CLI の操作
| 操作名 | 説明 |
|---|---|
add-namespace | namespaces 属性のマップに名前空間プレフィックスマッピングを追加します。 |
add-schema-location | schema-locations 属性のマップにスキーマロケーションマッピングを追加します。 |
delete-snapshot | snapshots ディレクトリからサーバー設定のスナップショットを削除します。 |
full-replace-deployment | 以前にアップロードされたデプロイメントコンテンツを使用可能なコンテンツの一覧に追加して、ランタイムの同名の既存コンテンツを置き換え、その置き換えられたコンテンツを使用可能なコンテンツの一覧から削除します。詳細はリンク先を参照してください。 |
list-snapshots | snapshots ディレクトリに保存されているサーバー設定のスナップショットを一覧表示します。 |
read-attribute | 選択したリソースの属性値を表示します。 |
read-children-names | 指定タイプの選択したリソース配下にあるすべての子リソースの名前を表示します。 |
read-children-resources | 指定のタイプであるすべての子リソースに関する情報を表示します。 |
read-children-types | 選択したリソースの配下にあるすべての子リソースのタイプ名を表示します。 |
read-config-as-xml | 現在の設定を読み込み、XML 形式で表示します。 |
read-operation-description | 特定のリソースに対する操作の詳細を表示します。 |
read-operation-names | 特定のリソースに対する全操作の名前を表示します。 |
read-resource | モデルリソースの属性値および任意の子リソースの基本情報もしくは詳細情報を表示します。 |
read-resource-description | リソースの属性、子リソースのタイプ、および操作についての詳細を表示します。 |
reload | 全サービスをシャットダウンして再起動することにより、サーバーを再ロードします。 |
remove-namespace | namespaces 属性マップから名前空間プレフィックスマッピングを削除します。 |
remove-schema-location | schema-locations 属性マップからスキーマロケーションマッピングを削除します。 |
replace-deployment | ランタイムの既存コンテンツを新規コンテンツに置き換えます。新規コンテンツはデプロイメントコンテンツリポジトリに事前にアップロードしておく必要があります。 |
resolve-expression | 式を、式へ解析可能な入力または文字列として許可し、ローカルのシステムプロパティーおよび環境変数に対して解決する操作です。 |
resolve-internet-address | インターフェース解決基準のセットを取得し、基準に一致するローカルマシンで IP アドレスを見つけます。一致する IP アドレスがない場合は失敗します。 |
server-set-restart-required | 再起動が必要なモードにサーバーを設定します。 |
shutdown | System.exit(0) の呼び出しにより、サーバーをシャットダウンします。 |
start-servers | 現在実行されていないすべての設定済みサーバーを管理対象ドメインで起動します。 |
stop-servers | 管理対象ドメインで現在実行しているすべてのサーバーを停止します。 |
take-snapshot | サーバー設定のスナップショットを作成し、snapshots ディレクトリに保存します。 |
upload-deployment-bytes | 含まれるバイト配列のデプロイメントコンテンツは、デプロイメントコンテンツリポジトリに追加する必要があることを指定します。この操作は、コンテンツをランタイムへデプロイする必要があるとは指定しない点に注意してください。 |
upload-deployment-stream | 含まれる入力ストリームインデックスで利用可能なデプロイメントコンテンツは、デプロイメントコンテンツリポジトリに追加する必要があることを指定します。この操作は、コンテンツがランタイムにデプロイされる必要があることは指定しない点に注意してください。 |
upload-deployment-url | 含まれる URL で利用可能なデプロイメントコンテンツはデプロイメントコンテンツリポジトリに追加する必要があることを指定します。この操作は、コンテンツがランタイムにデプロイされる必要があることは指定しない点に注意してください。 |
validate-address | 操作のアドレスを検証します。 |
write-attribute | 選択したリソースの属性値を設定します。 |
3.6. 管理 CLI の操作
3.6.1. 管理 CLI によるリソースの属性の表示
read-attribute 操作は、選択した属性の現在のランタイム値を読み取るために使用されるグローバル操作です。この操作を使用すると、デフォルトの値や非定義の値を無視し、ユーザーが設定した値のみを表示できます。要求プロパティーには次のパラメーターが含まれます。
要求プロパティー
name- 選択したリソース下で値を取得する属性の名前。
include-defaultsfalseを設定すると、デフォルト値を無視し、ユーザーが設定した属性のみを表示するよう操作結果を制限できるブール値パラメーター。
手順3.14 選択した属性の現在のランタイム値を表示する
read-attribute操作の実行管理 CLI よりread-attributeを使用してリソース属性の値を表示します。操作要求の詳細は 「管理 CLI での操作およびコマンドの使用」 を参照してください。[standalone@localhost:9999 /]
:read-attribute(name=name-of-attribute)
read-attribute 操作の利点は、特定属性の現在のランタイム値を表示できることです。read-resource 操作でも同様の結果を得ることができますが、include-runtime 要求プロパティーを追加した場合のみ可能で、そのノードに対して使用できる全リソース一覧の一部のみを表示できます。次の例が示すように、read-attribute 操作は細粒度の属性クエリを対象としています。
例3.7 read-attribute 操作を実行してパブリックインターフェース IP を表示する
read-attribute を使用して現在のランタイムの厳密値を返します。
[standalone@localhost:9999 /] /interface=public:read-attribute(name=resolved-address)
{
"outcome" => "success",
"result" => "127.0.0.1"
}
resolved-address 属性はランタイム値であるため、標準的な read-resource 操作の結果には表示されません。
[standalone@localhost:9999 /] /interface=public:read-resource
{
"outcome" => "success",
"result" => {
"any" => undefined,
"any-address" => undefined,
"any-ipv4-address" => undefined,
"any-ipv6-address" => undefined,
"inet-address" => expression "${jboss.bind.address:127.0.0.1}",
"link-local-address" => undefined,
"loopback" => undefined,
"loopback-address" => undefined,
"multicast" => undefined,
"name" => "public",
"nic" => undefined,
"nic-match" => undefined,
"not" => undefined,
"point-to-point" => undefined,
"public-address" => undefined,
"site-local-address" => undefined,
"subnet-match" => undefined,
"up" => undefined,
"virtual" => undefined
}
}
resolved-address や他のランタイム値を表示するには、include-runtime 要求プロパティーを使用する必要があります。
[standalone@localhost:9999 /] /interface=public:read-resource(include-runtime=true)
{
"outcome" => "success",
"result" => {
"any" => undefined,
"any-address" => undefined,
"any-ipv4-address" => undefined,
"any-ipv6-address" => undefined,
"inet-address" => expression "${jboss.bind.address:127.0.0.1}",
"link-local-address" => undefined,
"loopback" => undefined,
"loopback-address" => undefined,
"multicast" => undefined,
"name" => "public",
"nic" => undefined,
"nic-match" => undefined,
"not" => undefined,
"point-to-point" => undefined,
"public-address" => undefined,
"resolved-address" => "127.0.0.1",
"site-local-address" => undefined,
"subnet-match" => undefined,
"up" => undefined,
"virtual" => undefined
}
}
現在のランタイム属性値が表示されます。
3.6.2. 管理 CLI でのアクティブユーザーの表示
whoami の操作は現在アクティブなユーザーの属性を識別するために使用されるグローバルな操作です。この操作はユーザー名の ID と割り当てられたレルムを公開します。whoami の操作は、管理者が複数のレルムで複数のユーザーを管理する場合や、複数のターミナルセッションやユーザーアカウントを持つドメインインスタンス全体でアクティブユーザーを追跡する場合に便利です。
手順3.15 whoami を使用した管理 CLI でのアクティブユーザーの表示
whoamiの実行管理 CLI よりwhoamiを使用し、アクティブユーザーのアカウントを表示します。[standalone@localhost:9999 /]
:whoami次の例はスタンドアロンサーバーでwhoamiを使用し、アクティブユーザーはusernameでManagementRealmレルムが割り当てられていることを表しています。例3.8 スタンドアロンインスタンスでの
whoamiの使用[standalone@localhost:9999 /]:whoami { "outcome" => "success", "result" => {"identity" => { "username" => "username", "realm" => "ManagementRealm" }} }
現在アクティブなユーザーのアカウントが表示されます。
3.6.3. 管理 CLI でのシステムおよびサーバー情報の表示
手順3.16 管理 CLI でのシステムおよびサーバー情報の表示
versionコマンドの実行管理 CLI で、versionコマンドを入力します。[domain@localhost:9999 /]
version
アプリケーションサーバーのバージョンと環境情報が表示されます。
3.6.4. 管理 CLI を使用した操作説明の表示
手順3.17 管理 CLI でのコマンドの実行
read-operation-description操作の実行管理 CLI で、read-operation-descriptionを使用して、操作に関する情報を表示します。操作ではキーと値のペアの形式でパラメーターを追加して、表示する操作を示す必要があります。操作結果の詳細については、「管理 CLI での操作およびコマンドの使用」 を参照してください。[standalone@localhost:9999 /]
:read-operation-description(name=name-of-operation)
例3.9 list-snapshots 操作の説明表示
list-snapshots 操作を説明する方法を示しています。
[standalone@localhost:9999 /] :read-operation-description(name=list-snapshots)
{
"outcome" => "success",
"result" => {
"operation-name" => "list-snapshots",
"description" => "Lists the snapshots",
"reply-properties" => {
"type" => OBJECT,
"value-type" => {
"directory" => {
"type" => STRING,
"description" => "The directory where the snapshots are stored"
},
"names" => {
"type" => LIST,
"value-type" => STRING,
"description" => "The names of the snapshots within the snapshots directory"
}
}
},
"read-only" => false
}
}
選択した操作に関する説明が表示されます。
3.6.5. 管理 CLI を使用した操作名の表示
手順3.18 管理 CLI でのコマンドの実行
read-operation-namesの実行管理 CLI よりread-operation-names操作を使用して利用可能な操作の名前を表示します。操作要求の詳細については、トピック「管理 CLI での操作およびコマンドの使用」を参照してください。[standalone@localhost:9999 /]
:read-operation-names
例3.10 管理 CLI を使用した操作名の表示
read-operation-names 操作を説明する方法を示しています。
[standalone@localhost:9999 /]:read-operation-names
{
"outcome" => "success",
"result" => [
"add-namespace",
"add-schema-location",
"delete-snapshot",
"full-replace-deployment",
"list-snapshots",
"read-attribute",
"read-children-names",
"read-children-resources",
"read-children-types",
"read-config-as-xml",
"read-operation-description",
"read-operation-names",
"read-resource",
"read-resource-description",
"reload",
"remove-namespace",
"remove-schema-location",
"replace-deployment",
"shutdown",
"take-snapshot",
"upload-deployment-bytes",
"upload-deployment-stream",
"upload-deployment-url",
"validate-address",
"write-attribute"
]
}
利用可能な操作名が表示されます。
3.6.6. 管理 CLI を使用した利用可能なリソースの表示
read-resource 操作は、リソース値を読み取るために使用されるグローバル操作です。この操作を使用すると、現在のノードまたは子ノードのリソースに関する基本または詳細情報を、操作結果の範囲を拡大または制限するさまざまな要求プロパティーとともに公開できます。要求プロパティーには、以下のパラメーターが含まれます。
要求プロパティー
recursive- 子リソースに関する詳細情報を再帰的に含めるかどうか。
recursive-depth- 含まれる子リソースの情報の深さ。
proxies- 再帰的なクエリにリモートリソースを含めるかどうか。たとえば、ドメインコントローラーのクエリにスレーブのホストコントローラーからのホストレベルのリソースを含めること。
include-runtime- 応答に、永続的な設定ではない属性値などのランタイム属性を含めるかどうか。この要求プロパティーは、デフォルトで false に設定されます。
include-defaults- デフォルト属性の読み取りを有効または無効にするブール値要求プロパティー。falseに設定された場合は、ユーザが設定した属性のみが返され、未定義のままの属性は無視されます。
手順3.19 管理 CLI でのコマンドの実行
read-resource操作の実行管理 CLI で、read-resource操作を使用して利用可能なリソースを表示します。[standalone@localhost:9999 /]
:read-resource以下の例は、スタンドアロンサーバーインスタンスでread-resource操作を使用して一般的なリソース情報を公開する方法を示しています。結果はstandalone.xml設定ファイルに類似し、サーバーインスタンス向けにインストールまたは設定されたシステムリソース、拡張機能、インターフェース、およびサブシステムを表示します。これらは、さらに直接問い合わせることができます。例3.11 ルートレベルでの
read-resource操作の使用[standalone@localhost:9999 /]:read-resource { "outcome" => "success", "result" => { "deployment" => undefined, "deployment-overlay" => undefined, "management-major-version" => 1, "management-micro-version" => 0, "management-minor-version" => 4, "name" => "longgrass", "namespaces" => [], "product-name" => "EAP", "product-version" => "6.1.0.GA", "release-codename" => "Janus", "release-version" => "7.2.0.Final-redhat-3", "schema-locations" => [], "system-property" => undefined, "core-service" => { "management" => undefined, "service-container" => undefined, "server-environment" => undefined, "platform-mbean" => undefined }, "extension" => { "org.jboss.as.clustering.infinispan" => undefined, "org.jboss.as.connector" => undefined, "org.jboss.as.deployment-scanner" => undefined, "org.jboss.as.ee" => undefined, "org.jboss.as.ejb3" => undefined, "org.jboss.as.jaxrs" => undefined, "org.jboss.as.jdr" => undefined, "org.jboss.as.jmx" => undefined, "org.jboss.as.jpa" => undefined, "org.jboss.as.jsf" => undefined, "org.jboss.as.logging" => undefined, "org.jboss.as.mail" => undefined, "org.jboss.as.naming" => undefined, "org.jboss.as.pojo" => undefined, "org.jboss.as.remoting" => undefined, "org.jboss.as.sar" => undefined, "org.jboss.as.security" => undefined, "org.jboss.as.threads" => undefined, "org.jboss.as.transactions" => undefined, "org.jboss.as.web" => undefined, "org.jboss.as.webservices" => undefined, "org.jboss.as.weld" => undefined }, "interface" => { "management" => undefined, "public" => undefined, "unsecure" => undefined }, "path" => { "jboss.server.temp.dir" => undefined, "user.home" => undefined, "jboss.server.base.dir" => undefined, "java.home" => undefined, "user.dir" => undefined, "jboss.server.data.dir" => undefined, "jboss.home.dir" => undefined, "jboss.server.log.dir" => undefined, "jboss.server.config.dir" => undefined, "jboss.controller.temp.dir" => undefined }, "socket-binding-group" => {"standard-sockets" => undefined}, "subsystem" => { "logging" => undefined, "datasources" => undefined, "deployment-scanner" => undefined, "ee" => undefined, "ejb3" => undefined, "infinispan" => undefined, "jaxrs" => undefined, "jca" => undefined, "jdr" => undefined, "jmx" => undefined, "jpa" => undefined, "jsf" => undefined, "mail" => undefined, "naming" => undefined, "pojo" => undefined, "remoting" => undefined, "resource-adapters" => undefined, "sar" => undefined, "security" => undefined, "threads" => undefined, "transactions" => undefined, "web" => undefined, "webservices" => undefined, "weld" => undefined } } }子ノードに対する
read-resource操作の実行read-resource操作は、ルートから子ノードを問い合わせるために実行できます。操作の構造は最初に公開するノードを定義し、ノードに対して実行する操作を追加します。[standalone@localhost:9999 /]
/subsystem=web/connector=http:read-resource以下の例では、特定の Web サブシステムノードに対してread-resource操作を行うことにより、Web サブシステムコンポーネントに関する固有のリソース情報を公開できます。例3.12 ルートノードからの子ノードリソースの公開
[standalone@localhost:9999 /] /subsystem=web/connector=http:read-resource { "outcome" => "success", "result" => { "configuration" => undefined, "enable-lookups" => false, "enabled" => true, "executor" => undefined, "max-connections" => undefined, "max-post-size" => 2097152, "max-save-post-size" => 4096, "name" => "http", "protocol" => "HTTP/1.1", "proxy-name" => undefined, "proxy-port" => undefined, "redirect-port" => 443, "scheme" => "http", "secure" => false, "socket-binding" => "http", "ssl" => undefined, "virtual-server" => undefined } }同じ結果は、cdコマンドを使用して子ノードに移動し、read-resource操作を直接実行することにより、得ることができます。例3.13 ディレクトリーを変更することにより子ノードリソースを公開
[standalone@localhost:9999 /] cd subsystem=web
[standalone@localhost:9999 subsystem=web] cd connector=http
[standalone@localhost:9999 connector=http] :read-resource { "outcome" => "success", "result" => { "configuration" => undefined, "enable-lookups" => false, "enabled" => true, "executor" => undefined, "max-connections" => undefined, "max-post-size" => 2097152, "max-save-post-size" => 4096, "name" => "http", "protocol" => "HTTP/1.1", "proxy-name" => undefined, "proxy-port" => undefined, "redirect-port" => 443, "scheme" => "http", "secure" => false, "socket-binding" => "http", "ssl" => undefined, "virtual-server" => undefined } }再帰的なパラメーターを使用して結果にアクティブな値を含める
再帰的なパラメーターを使用して、永続的でない値、起動時に渡された値、またはランタイムモデルでアクティブな他の属性を含むすべての属性の値を公開できます。[standalone@localhost:9999 /]
/interface=public:read-resource(include-runtime=true)以前の例と比較して、include-runtime要求プロパティーを含めることにより、HTTP コネクターにより送信されたバイトや受信されたバイトなどの追加のアクティブな属性が公開されます。例3.14
include-runtimeパラメーターを使用して追加でアクティブな値を公開[standalone@localhost:9999 /] /subsystem=web/connector=http:read-resource(include-runtime=true) { "outcome" => "success", "result" => { "any" => undefined, "any-address" => undefined, "any-ipv4-address" => undefined, "any-ipv6-address" => undefined, "inet-address" => expression "${jboss.bind.address:127.0.0.1}", "link-local-address" => undefined, "loopback" => undefined, "loopback-address" => undefined, "multicast" => undefined, "name" => "public", "nic" => undefined, "nic-match" => undefined, "not" => undefined, "point-to-point" => undefined, "public-address" => undefined, "resolved-address" => "127.0.0.1", "site-local-address" => undefined, "subnet-match" => undefined, "up" => undefined, "virtual" => undefined } }
3.6.7. 管理 CLI を使用した利用可能なリソース説明の表示
手順3.20 管理 CLI でのコマンドの実行
read-resource-descriptionの実行管理 CLI で、read-resource-description操作を使用して利用可能なリソースを読み取り、表示します。操作要求の詳細については、トピック「管理 CLI での操作およびコマンドの使用」を参照してください。[standalone@localhost:9999 /]
:read-resource-descriptionオプションパラメーターの使用
read-resource-description操作では、追加パラメーターを使用できます。- リソースの操作の説明を表示するには、
operationsパラメーターを使用します。[standalone@localhost:9999 /]
:read-resource-description(operations=true) - リソースの継承された操作の説明を表示または非表示にするには、
inheritedパラメーターを使用します。デフォルトの状態は true です。[standalone@localhost:9999 /]
:read-resource-description(inherited=false) - 子リソースの操作の再帰的な説明を表示するには、
recursiveパラメーターを使用します。[standalone@localhost:9999 /]
:read-resource-description(recursive=true) - リソースの説明を表示するには、
localeパラメーターを使用します。null の場合は、デフォルトのロケールが使用されます。[standalone@localhost:9999 /]
:read-resource-description(locale=true)
利用可能なリソースの説明が表示されます。
3.6.8. 管理 CLI を使用したアプリケーションサーバーのリロード
手順3.21 アプリケーションのリロード
reload操作の実行管理 CLI で、reload操作を使用してSystem.exit(0)システムコールを介してサーバーをシャットダウンします。操作要求の詳細については、トピック「管理 CLI での操作およびコマンドの使用」を参照してください。[standalone@localhost:9999 /]
:reload{"outcome" => "success"}
すべてのサービスをシャットダウンし、ランタイムを再び起動することにより、アプライアンスサーバーがリロードされます。管理 CLI が自動的に再接続されます。
3.6.9. 管理 CLI を使用したアプリケーションサーバーのシャットダウン
手順3.22 アプリケーションサーバーのシャットダウン
shutdown操作の実行- 管理 CLI で、
shutdown操作を使用しSystem.exit(0)システムコールを介してサーバーをシャットダウンします。操作要求の詳細については、トピック「管理 CLI での操作およびコマンドの使用」を参照してください。- スタンドアロンモードでは、次のコマンドを使用します。
[standalone@localhost:9999 /]
:shutdown - ドメインモードでは、適切なホスト名を指定して次のコマンドを使用します。
[domain@localhost:9999 /]
/host=master:shutdown
- デタッチした CLI インスタンスへ接続し、サーバーをシャットダウンするには、次のコマンドを実行します。
jboss-admin.sh --connect command=:shutdown
- リモート CLI インスタンスへ接続し、サーバーをシャットダウンするには、次のコマンドを実行します。
[disconnected /] connect IP_ADDRESS Connected to IP_ADDRESS:PORT_NUMBER [192.168.1.10:9999 /] :shutdown
IP_ADDRESS をインスタンスの IP アドレスに置き換えます。
アプリケーションサーバーがシャットダウンされます。ランタイムが利用できない場合に、管理 CLI が切断されます。
3.6.10. 管理 CLI での属性の設定
write-attribute 操作は、選択されたリソース属性を記述または変更するために使用するグローバル操作です。この操作を使用して永続的な変更を行い、管理対象サーバーインスタンスの設定を変更できます。要求プロパティーには以下のパラメーターが含まれます。
要求プロパティー
name- 選択されたリソース下で値を設定する属性の名前。
value- 選択されたリソース下の属性の必要な値。基礎となるモデルが null 値をサポートする場合は、null になることがあります。
手順3.23 管理 CLI でのリソース属性の設定
write-attribute操作の実行管理 CLI で、write-attribute操作を使用してリソース属性の値を変更します。操作は、完全リソースパスが指定されたリソースの子ノードまたは管理 CLI のルートノードで実行できます。
例3.15 write-attribute 操作によるデプロイメントスキャナーの無効化
write-attribute 操作を使用してデプロイメントスキャナーを無効にします。操作は、ルートノードから実行されます (タブ補完を使用して正しいリソースパスを入力します)。
[standalone@localhost:9999 /] /subsystem=deployment-scanner/scanner=default:write-attribute(name=scan-enabled,value=false)
{"outcome" => "success"}
read-attribute 操作を直接使用して確認できます。
[standalone@localhost:9999 /] /subsystem=deployment-scanner/scanner=default:read-attribute(name=scan-enabled)
{
"outcome" => "success",
"result" => false
}
read-resource 操作を使用し、すべてのノードの利用可能なリソース属性をリストして結果を確認することもできます。以下の例では、scan-enabled 属性が false に設定されていることが分かります。
[standalone@localhost:9999 /] /subsystem=deployment-scanner/scanner=default:read-resource
{
"outcome" => "success",
"result" => {
"auto-deploy-exploded" => false,
"auto-deploy-xml" => true,
"auto-deploy-zipped" => true,
"deployment-timeout" => 600,
"path" => "deployments",
"relative-to" => "jboss.server.base.dir",
"scan-enabled" => false,
"scan-interval" => 5000
}
}
リソース属性が更新されます。
3.7. 管理 CLI コマンド履歴
3.7.1. 管理 CLI コマンド履歴の利用
.jboss-cli-history として自動的に保存されるログファイルに追加されます。この履歴ファイルはデフォルトで、CLI コマンドを最大 500 件記録できるよう設定されます。
history コマンド自体は、現在のセッションの履歴を返しますが、引数を追加すると、セッションメモリーの履歴を無効化、有効化、または消去できます。管理 CLI では、キーボードの矢印キーを使用してコマンドや操作の履歴を前後に移動できます。
3.7.2. 管理 CLI コマンド履歴の表示
手順3.24 管理 CLI コマンド履歴の表示
historyコマンドの実行管理 CLI で、historyコマンドを入力します。[standalone@localhost:9999 /]
history
CLI の起動後または履歴削除コマンドの実行後にメモリーに格納された CLI コマンドの履歴が表示されます。
3.7.3. 管理 CLI コマンド履歴の消去
手順3.25 管理 CLI コマンド履歴の消去
history --clearコマンドの実行管理 CLI で、history --clearコマンドを入力します。[standalone@localhost:9999 /]
history --clear
CLI の起動後に記録されたコマンドの履歴がセッションメモリーから削除されます。コマンド履歴は、ユーザーのホームディレクトリに保存された .jboss-cli-history ファイルに保持されます。
3.7.4. 管理 CLI コマンド履歴の無効化
手順3.26 管理 CLI コマンド履歴の無効化
history --disableコマンドの実行管理 CLI で、history --disableコマンドを入力します。[standalone@localhost:9999 /]
history --disable
CLI で実行されたコマンドは、メモリー内およびユーザーのホームディレクトリに保存された .jboss-cli-history ファイルには記録されません。
3.7.5. 管理 CLI コマンド履歴の有効化
手順3.27 管理 CLI コマンド履歴の有効化
history --enableコマンドの実行管理 CLI で、history --enableコマンドを入力します。[standalone@localhost:9999 /]
history --enable
CLI で実行されたコマンドは、メモリー内およびユーザーのホームディレクトリに保存された .jboss-cli-history ファイルに記録されます。
第4章 ユーザー管理
4.1. ユーザー作成
4.1.1. 管理インターフェースの初期ユーザーの追加
グラフィカルインストーラーを使用してインストールしない限り、最初から使用可能なユーザーアカウントが存在しないため、JBoss Enterprise Application Platform 6 の管理インターフェースはデフォルトでセキュア化されています。これは、単純な設定ミスによるリモートシステムからのセキュリティー侵害を防ぐためのセキュリティー対策です。ローカルの HTTP 以外のアクセスは SASL メカニズムによって保護され、クライアントがローカルホストから初めて接続するたびにクライアントとサーバー間のネゴシエーションが発生します。
注記
手順4.1 リモート管理インターフェースに最初の管理ユーザーを作成
add-user.shまたはadd-user.batスクリプトを呼び出します。JPP_HOME/bin/ディレクトリへ移動します。オペレーティングシステムに対応するスクリプトを呼び出します。- Red Hat Enterprise Linux
[user@host bin]$./add-user.sh- Microsoft Windows Server
C:\bin>add-user.bat
管理ユーザーの追加を選択します。
オプションaを選択して管理ユーザーを追加します。このユーザーはManagementRealmに追加され、Web ベース管理コンソールまたはコマンドラインベース管理 CLI を使用して管理操作を実行することを許可されます。他のオプションbを選択すると、ユーザーがApplicationRealmに追加され、特定のパーミッションは提供されません。このレルムはアプリケーションで使用するために提供されます。ユーザーのレルムを選択します。
次のプロンプトは、ユーザーが追加されるレルムを示します。JBoss Enterprise Application Platform 6 を管理するパーミッションを持つユーザーの場合は、デフォルト値 (ManagementRealm) を選択します。希望のユーザー名とパスワードを入力します。
入力を促されたら、セキュリティーレルム、ユーザー名、パスワードを入力します。ENTER を押すと、管理インターフェースを使用してユーザーが JBoss Enterprise Application Platform 6 を管理できるManagementRealmのデフォルトレルムが選択されます。このレルムには最低でも 1 人のユーザーを追加する必要があります。情報を確認するよう促されます。内容が適切である場合はyesと入力します。ユーザーがリモート JBoss Enterprise Application Platform 6 サーバーインスタンスを表すかどうかを選択します。
管理者以外に、ManagementRealmで JBoss Enterprise Application Platform 6 に追加する必要がある場合がある他の種類のユーザーは、JBoss Enterprise Application Platform 6 の別のインスタンスを表すユーザーであり、メンバーとしてクラスターに参加することを認証できる必要があります。次のプロンプトでは、この目的のために追加されたユーザーを指定できます。yesを選択した場合は、異なる設定ファイルに追加する必要があるユーザーのパスワードを表すハッシュされたsecret値が提供されます。このタスクでは、この質問に対してnoと回答してください。追加ユーザーを入力します。
希望する場合はこの手順を繰り返して追加のユーザーを入力することができます。また、稼働中のシステムにいつでもユーザーを追加することが可能です。デフォルトのセキュリティーレルムを選択する代わりに他のレルムにユーザーを追加して、承認を細かく調整することが可能です。非対話的にユーザーを作成します。
コマンドラインで各パラメーターを渡すと非対話的にユーザーを作成することができます。ログや履歴ファイルにパスワードが表示されるため、この方法は共有システムでは推奨されません。監理レルムを使用した、コマンドの構文は次のとおりです。[user@host bin]$./add-user.sh usernamepasswordアプリケーションレルムを使用するには、-aパラメーターを使用します。[user@host bin]$./add-user.sh -a usernamepassword--silentパラメーターを渡すと add-user スクリプトの通常出力を無効にできます。これは、usernameおよびpasswordの最低限のパラメーターが指定されている場合のみ適用されます。エラーメッセージは表示されます。
追加したすべてのユーザーは、指定したセキュリティーレルム内でアクティベートされます。ManagementRealm レルム内でアクティブなユーザーは、リモートシステムから JBoss Enterprise Application Platform 6 を管理できます。
第5章 ネットワークおよびポート設定
5.1. インターフェース
5.1.1. インターフェースについて
domain.xml、host.xml、および standalone.xml 設定ファイルには、インターフェース宣言が含まれます。宣言基準はワイルドカードアドレスを参照したり、有効な一致候補にするためにインターフェースまたはアドレスで必要となる 1 つまたは複数の特徴を指定したりできます。次の例は、通常は standalone.xml 設定ファイルまたは host.xml 設定ファイルで定義される、インターフェース宣言の複数の設定を示しています。これにより、リモートホストグループが独自の固有インターフェース属性を維持できるようになる一方で、ドメインコントローラーの domain.xml 設定ファイルのインターフェースグループを引き続き参照できます。
management 相対名グループと public 相対名グループに対して指定された固有の inet-address 値を示します。
例5.1 inet-address 値で作成されたインターフェースグループ
<interfaces> <interface name="management"> <inet-address value="127.0.0.1"/> </interface> <interface name="public"> <inet-address value="127.0.0.1"/> </interface> </interfaces>
any-address 要素を使用してワイルドカードアドレスを宣言します。
例5.2 ワイルドカード宣言で作成されたグローバルグループ
<interface name="global"> <!-- Use the wild-card address --> <any-address/> </interface>
external で宣言します。
例5.3 NIC 値で作成された外部グループ
<interface name="external"> <nic name="eth0"/> </interface>
例5.4 特定の状況の値で作成されたデフォルトグループ
<interface name="default">
<!-- Match any interface/address on the right subnet if it's
up, supports multicast, and isn't point-to-point -->
<subnet-match value="192.168.0.0/16"/>
<up/>
<multicast/>
<not>
<point-to-point/>
</not>
</interface>
5.1.2. インターフェースの設定
standalone.xml 設定ファイルと host.xml 設定ファイルのデフォルトインターフェース設定は、それぞれの相対インターフェーストークンを持つ 3 つの名前付きインターフェースを提供します。管理コンソールまたは管理 CLI を使用して、以下の表で示されたような追加の属性と値を設定できます。また、必要に応じて、相対インターフェースバインディングを特定の値に置き換えることもできます。置き換える場合、-b スイッチは相対値のみを上書きできるため、サーバーの実行時にインターフェース値を渡すことはできません。
例5.5 デフォルトインターフェース設定
<interfaces>
<interface name="management">
<inet-address value="${jboss.bind.address.management:127.0.0.1}"/>
</interface>
<interface name="public">
<inet-address value="${jboss.bind.address:127.0.0.1}"/>
</interface>
<interface name="unsecure">
<inet-address value="${jboss.bind.address.unsecure:127.0.0.1}"/>
</interface>
</interfaces>
表5.1 インターフェース属性と値
| インターフェース要素 | 説明 |
|---|---|
any | 選択基準を制約するために使用されるアドレス除外タイプの空の要素。 |
any-address | このインターフェースを使用するソケットをワイルドカードアドレスにバインドする必要があることを示す空の要素。java.net.preferIpV4Stack システムプロパティーが true に設定されていない限り、IPv6 ワイルドカードアドレス (::) が使用されます。true に設定された場合は、IPv4 ワイルドカードアドレス (0.0.0.0) が使用されます。ソケットがデュアルスタックマシンの IPv6 anylocal アドレスにバインドされた場合は、IPv6 および IPv4 トラフィックを受け取ることができます。IPv4 (IPv4 マッピング) anylocal アドレスにバインドされた場合は、IPv4 トラフィックのみを受け取ることができます。 |
any-ipv4-address | このインターフェースを使用するソケットを IPv4 ワイルドカードアドレス (0.0.0.0) にバインドする必要があることを示す空の要素。 |
any-ipv6-address | このインターフェースを使用するソケットを IPv6 ワイルドカードアドレス (::) にバインドする必要があることを示す空の要素。 |
inet-address | IPv6 または IPv4 のドット区切り表記の IP アドレス、または IP アドレスに解決できるホスト名。 |
link-local-address | インターフェースの選択基準の一部として、関連付けられたアドレスがリンクローカルであるかどうかを示す空の要素。 |
loopback | インターフェースの選択基準の一部として、ループバックインターフェースであるかどうかを示す空の要素。 |
loopback-address | マシンのループバックインターフェースで実際には設定できないループバックアドレス。IP アドレスが関連付けられた NIC が見つからない場合であっても該当する値が使用されるため、inet-addressType とは異なります。 |
multicast | インターフェースの選択基準の一部として、マルチキャストをサポートするかどうかを示す空の要素。 |
nic | ネットワークインターフェースの名前 (eth0、eth1、lo など)。 |
nic-match | 使用できるインターフェースを見つけるために、マシンで利用可能なネットワークインターフェースの名前を検索する正規表現。 |
not | 選択基準を制約するために使用されるアドレス除外タイプの空の要素。 |
point-to-point | インターフェースの選択基準の一部として、ポイントツーポイントインターフェースであるかどうかを示す空の要素。 |
public-address | インターフェースの選択基準の一部として、公開されたルーティング可能なアドレスを持つかどうかを示す空の要素。 |
site-local-address | インターフェースの選択基準の一部として、関連付けられたアドレスがサイトローカルであるかどうかを示す空の要素。 |
subnet-match | 「スラッシュ表記法」で記述されたネットワーク IP アドレスとアドレスのネットワーク接頭辞のビット数 (たとえば、192.168.0.0/16)。 |
up | インターフェースの選択基準の一部として、現在稼動しているかどうかを示す空の要素。 |
virtual | インターフェースの選択基準の一部として、仮想インターフェースであるかどうかを示す空の要素。 |
インターフェース属性の設定
必要に応じて、インターフェース属性を設定するために、管理 CLI または管理コンソールを選択します。管理 CLI でのインターフェース属性の設定
管理 CLI を使用して、新しいインターフェースを追加し、インターフェース属性に新しい値を書き込みます。新しいインターフェースの追加
必要な場合は、add操作を使用して新しいインターフェースを作成します。このコマンドは、管理 CLI セッションのルートから実行できます。次の例では、新しいインターフェースの名前タイトル interfacename が 12.0.0.2 と宣言されたinet-addressとともに作成されます。/interface=interfacename/:add(inet-address=12.0.0.2)
インターフェース属性の編集
write操作を使用して新しい値を属性に書き込みます。タブ補完を使用して、入力するコマンド文字列を補完したり、利用可能な属性を公開したりできます。以下の例では、inet-address値を 12.0.0.8 に更新します。/interface=interfacename/:write(inet-address=12.0.0.8)
インターフェース属性の編集
read-resource操作でinclude-runtime=trueパラメーターを実行して値を変更し、サーバーモデルでアクティブな現在のすべての値を公開します。[standalone@localhost:9999 interface=public]
:read-resource(include-runtime=true)
管理コンソールでのインターフェース属性の設定
管理コンソールを使用して、新しいインターフェースを追加し、インターフェース属性に新しい値を書き込みます。管理コンソールにログインします。
管理対象ドメインまたはスタンドアロンサーバーインスタンスの管理コンソールにログインします。管理対象ドメインを使用する場合は、適切なプロファイルを選択します。
右上にある Profiles タブを選択し、次の画面の左上にある Profile メニューから適切なプロファイルを選択します。ナビゲーションメニューから [Interfaces] 項目を選択します。
ナビゲーションメニューから [Interfaces] 項目を選択します。新しいインターフェースの追加
- Add ボタンをクリックします。
- Name、Inet Address、および Address Wildcard に必要な値を入力します。
- Save をクリックして終了します。
インターフェース属性の編集
- 編集するインターフェースを選択し Edit ボタンをクリックします。
- Name、Inet Address、および Address Wildcard に必要な値を入力します。
- Save をクリックして終了します。
5.2. ソケットバインディンググループ
5.2.1. ソケットバインディンググループについて
domain.xml 設定ファイルと standalone.xml 設定ファイルの両方で見つけることができます。設定の他のセクションは、論理名でこれらのソケットを参照できます。ソケット設定の完全な詳細を含める必要はありません。これにより、さまざまなマシンで異なる可能性がある相対ソケットを参照できます。
例5.6 スタンドアロン設定のデフォルトソケットバインディング
standalone.xml 設定ファイルのデフォルトソケットバインディンググループは、standard-sockets 下でグループ化されます。このグループは、同じ論理参照方法を使用して public インターフェースでも参照されます。
<socket-binding-group name="standard-sockets" default-interface="public">
<socket-binding name="http" port="8080"/>
<socket-binding name="https" port="8443"/>
<socket-binding name="jacorb" port="3528"/>
<socket-binding name="jacorb-ssl" port="3529"/>
<socket-binding name="jmx-connector-registry" port="1090" interface="management"/>
<socket-binding name="jmx-connector-server" port="1091" interface="management"/>
<socket-binding name="jndi" port="1099"/>
<socket-binding name="messaging" port="5445"/>
<socket-binding name="messaging-throughput" port="5455"/>
<socket-binding name="osgi-http" port="8090" interface="management"/>
<socket-binding name="remoting" port="4447"/>
<socket-binding name="txn-recovery-environment" port="4712"/>
<socket-binding name="txn-status-manager" port="4713"/>
</socket-binding-group>
例5.7 ドメイン設定のデフォルトソケットバインディング
domain.xml 設定ファイルのデフォルトソケットバインディンググループには standard-sockets、ha-sockets、full-sockets、および full-ha-sockets の 4 つのグループが含まれます。これらのグループは public と呼ばれるインターフェースでも参照されます。
<socket-binding-groups>
<socket-binding-group name="standard-sockets" default-interface="public">
<!-- Needed for server groups using the 'default' profile -->
<socket-binding name="ajp" port="8009"/>
<socket-binding name="http" port="8080"/>
<socket-binding name="https" port="8443"/>
<socket-binding name="osgi-http" interface="management" port="8090"/>
<socket-binding name="remoting" port="4447"/>
<socket-binding name="txn-recovery-environment" port="4712"/>
<socket-binding name="txn-status-manager" port="4713"/>
<outbound-socket-binding name="mail-smtp">
<remote-destination host="localhost" port="25"/>
</outbound-socket-binding>
</socket-binding-group>
<socket-binding-group name="ha-sockets" default-interface="public">
<!-- Needed for server groups using the 'ha' profile -->
<socket-binding name="ajp" port="8009"/>
<socket-binding name="http" port="8080"/>
<socket-binding name="https" port="8443"/>
<socket-binding name="jgroups-mping" port="0" multicast-address="${jboss.default.multicast.address:230.0.0.4}" multicast-port="45700"/>
<socket-binding name="jgroups-tcp" port="7600"/>
<socket-binding name="jgroups-tcp-fd" port="57600"/>
<socket-binding name="jgroups-udp" port="55200" multicast-address="${jboss.default.multicast.address:230.0.0.4}" multicast-port="45688"/>
<socket-binding name="jgroups-udp-fd" port="54200"/>
<socket-binding name="modcluster" port="0" multicast-address="224.0.1.105" multicast-port="23364"/>
<socket-binding name="osgi-http" interface="management" port="8090"/>
<socket-binding name="remoting" port="4447"/>
<socket-binding name="txn-recovery-environment" port="4712"/>
<socket-binding name="txn-status-manager" port="4713"/>
<outbound-socket-binding name="mail-smtp">
<remote-destination host="localhost" port="25"/>
</outbound-socket-binding>
</socket-binding-group>
<socket-binding-group name="full-sockets" default-interface="public">
<!-- Needed for server groups using the 'full' profile -->
<socket-binding name="ajp" port="8009"/>
<socket-binding name="http" port="8080"/>
<socket-binding name="https" port="8443"/>
<socket-binding name="jacorb" interface="unsecure" port="3528"/>
<socket-binding name="jacorb-ssl" interface="unsecure" port="3529"/>
<socket-binding name="messaging" port="5445"/>
<socket-binding name="messaging-group" port="0" multicast-address="${jboss.messaging.group.address:231.7.7.7}" multicast-port="${jboss.messaging.group.port:9876}"/>
<socket-binding name="messaging-throughput" port="5455"/>
<socket-binding name="osgi-http" interface="management" port="8090"/>
<socket-binding name="remoting" port="4447"/>
<socket-binding name="txn-recovery-environment" port="4712"/>
<socket-binding name="txn-status-manager" port="4713"/>
<outbound-socket-binding name="mail-smtp">
<remote-destination host="localhost" port="25"/>
</outbound-socket-binding>
</socket-binding-group>
<socket-binding-group name="full-ha-sockets" default-interface="public">
<!-- Needed for server groups using the 'full-ha' profile -->
<socket-binding name="ajp" port="8009"/>
<socket-binding name="http" port="8080"/>
<socket-binding name="https" port="8443"/>
<socket-binding name="jacorb" interface="unsecure" port="3528"/>
<socket-binding name="jacorb-ssl" interface="unsecure" port="3529"/>
<socket-binding name="jgroups-mping" port="0" multicast-address="${jboss.default.multicast.address:230.0.0.4}" multicast-port="45700"/>
<socket-binding name="jgroups-tcp" port="7600"/>
<socket-binding name="jgroups-tcp-fd" port="57600"/>
<socket-binding name="jgroups-udp" port="55200" multicast-address="${jboss.default.multicast.address:230.0.0.4}" multicast-port="45688"/>
<socket-binding name="jgroups-udp-fd" port="54200"/>
<socket-binding name="messaging" port="5445"/>
<socket-binding name="messaging-group" port="0" multicast-address="${jboss.messaging.group.address:231.7.7.7}" multicast-port="${jboss.messaging.group.port:9876}"/>
<socket-binding name="messaging-throughput" port="5455"/>
<socket-binding name="modcluster" port="0" multicast-address="224.0.1.105" multicast-port="23364"/>
<socket-binding name="osgi-http" interface="management" port="8090"/>
<socket-binding name="remoting" port="4447"/>
<socket-binding name="txn-recovery-environment" port="4712"/>
<socket-binding name="txn-status-manager" port="4713"/>
<outbound-socket-binding name="mail-smtp">
<remote-destination host="localhost" port="25"/>
</outbound-socket-binding>
</socket-binding-group>
</socket-binding-groups>
standalone.xml ソースファイルと domain.xml ソースファイルで作成および編集できます。バインディングを管理する推奨方法は、管理コンソールまたは管理 CLI を使用することです。管理コンソールを使用する利点には、[General Configuration] セクション下に専用 [Socket Binding Group] 画面があるグラフィカルユーザーインターフェースが含まれます。管理 CLI は、API、バッチ処理とアプリケーションサーバー設定の上位および下位レベルでスクリプトの使用を可能にするコマンドライン方法に基づいたワークフローを提供します。両方のインターフェースにより、変更を永続化したり、サーバー設定に保存したりできます。
5.2.2. ソケットバインディングの設定
standard-sockets が含まれ、この他のグループを作成することはできません。この他のグループを作成するには、別のスタンドアロンサーバー設定ファイルを作成します。管理対象ドメインでは複数のソケットバインディンググループを作成することが可能で、必要に応じて含まれるソケットバインディングを設定できます。下表は各ソケットバインディングに使用できる属性を表しています。
表5.2 ソケットバインディングの属性
| コンポーネント | 説明 | ロール |
|---|---|---|
| 名前 | 設定の他の場所で使用する必要があるソケット設定の論理名。 | 必須 |
| ポート | この設定に基づいたソケットをバインドする必要がある基本ポート。すべてのポートの値をインクリメントまたはデクリメントすることにより、サーバーがこの基本値を上書きするよう設定できることに注意してください。 | 必須 |
| インターフェース | この設定に基づいたソケットをバインドする必要があるインターフェースの論理名。定義されない場合は、囲んでいるソケットバインディンググループから「default-interface」属性の値が使用されます。 | 任意 |
| 複数のアドレス | マルチキャストにソケットが使用される場合は、使用するマルチキャストアドレス。 | 任意 |
| マルチキャストポート | 会話のライフサイクルにバインドされます。会話スコープは、要求の長さとセッション長さの間にあり、アプリケーションによって制御されます。 | 任意 |
| 固定ポート | 上記のコンテキストでニーズが満たされない場合は、カスタムスコープを定義できます。 | 任意 |
ソケットバインディンググループのソケットバインディングの設定
管理 CLI または管理コンソールを選択して、必要に応じてソケットバインディングを設定します。管理 CLI を使用したソケットバインディングの設定
管理 CLI を使用してソケットバインディングを設定します。新しいソケットバインディングの追加
add操作を使用して、必要な場合に新しいアドレス設定を作成します。このコマンドは、管理 CLI セッションのルートから実行できます。この場合、以下の例では、newsocket という新しいソケットバインディングが作成され、port属性が 1234 として宣言されます。以下の例は、standard-socketsソケットバインディンググループ上で編集を行うスタンドアロンサーバーおよび管理対象ドメインの両方に適用されます。[domain@localhost:9999 /] /socket-binding-group=standard-sockets/socket-binding=newsocket/:add(port=1234)
パターン属性の編集
write操作を使用して新しい値を属性に書き込みます。タブ補完を使用して、入力するコマンド文字列を補完したり、利用可能な属性を公開したりできます。以下の例では、port値を 2020 に更新します。[domain@localhost:9999 /] /socket-binding-group=standard-sockets/socket-binding=newsocket/:write-attribute(name=port,value=2020)
パターン属性の確認
read-resource操作でinclude-runtime=trueパラメーターを実行して値を変更し、サーバーモデルでアクティブな現在のすべての値を公開します。[domain@localhost:9999 /] /socket-binding-group=standard-sockets/socket-binding=newsocket/:read-resource
管理コンソールを使用したソケットバインディングの設定
管理コンソールを使用してソケットバインディングを設定します。管理コンソールへのログイン
管理対象ドメインまたはスタンドアロンサーバーの管理コンソールにログインします。Profile tab の選択
右上の Profiles タブを選択します。ナビゲーションメニューより Socket Binding を選択
ナビゲーションメニューから Socket Binding メニュー項目を選択します。管理対象ドメインを使用している場合は Socket Binding Groups メニューから希望のグループを選択します。新しいソケットバインディングの追加
- Add ボタンをクリックします。
- Name、Port、および Binding Group に必要な値を入力します。
- Save をクリックして終了します。
インターフェース属性の編集
- 編集するソケットバインディングを選択し、Edit ボタンをクリックします。
- Name、Interface、または Port など、必要な値を入力します。
- Save をクリックして終了します。
5.2.3. JBoss Enterprise Application Platform 6 により使用されるネットワークポート
- サーバーグループがデフォルトのソケットバインディンググループのいずれかを使用するか、またはカスタムグループを使用するかどうか。
- 個別デプロイメントの要件。
注記
デフォルトのソケットバインディンググループ
full-ha-socketsfull-socketsha-socketsstandard-sockets
表5.3 デフォルトのソケットバインディングの参照
| 名前 | ポート | マルチキャストポート | 説明 | full-ha-sockets | full-sockets | ha-socket | standard-socket |
|---|---|---|---|---|---|---|---|
ajp | 8009 | Apache JServ プロトコル。HTTP クラスタリングおよび負荷分散に使用します。 | ○ | ○ | ○ | ○ | |
http | 8080 | デプロイされた Web アプリケーションのデフォルトポート。 | ○ | ○ | ○ | ○ | |
https | 8443 | デプロイされた Web アプリケーションとクライアント間の SSL 暗号化接続。 | ○ | ○ | ○ | ○ | |
jacorb | 3528 | JTS トランザクションおよび他の ORB 依存サービス用の CORBA サービス。 | ○ | ○ | × | × | |
jacorb-ssl | 3529 | SSL 暗号化 CORBA サービス。 | ○ | ○ | × | × | |
jgroups-diagnostics | 7500 | マルチキャスト。HA クラスターでピア検出に使用されます。 | ○ | × | ○ | × | |
jgroups-mping | 45700 | マルチキャスト。HA クラスタでの初期メンバーシップを検出するために使用されます。 | ○ | × | ○ | × | |
jgroups-tcp | 7600 | TCP を使用した、HA クラスター内でのユニキャストピア検出。 | ○ | × | ○ | × | |
jgroups-tcp-fd | 57600 | TCP を介した HA 障害検出に使用されます。 | ○ | × | ○ | × | |
jgroups-udp | 55200 | 45688 | UDP を使用した、HA クラスター内でのユニキャストピア検出。 | ○ | × | ○ | × |
jgroups-udp-fd | 54200 | UDP を介した HA 障害検出に使用されます。 | ○ | × | ○ | × | |
messaging | 5445 | JMS サービス。 | ○ | ○ | × | × | |
messaging-group | HornetQ JMS ブロードキャストと検出グループにより参照されます。 | ○ | ○ | × | × | ||
messaging-throughput | 5455 | JMS Remoting により使用されます。 | ○ | ○ | × | × | |
mod_cluster | 23364 | JBoss Enterprise Application Platform と HTTP ロードバランサー間の通信に対するマルチキャストポート。 | ○ | × | ○ | × | |
osgi-http | 8090 | OSGi サブシステムを使用する内部コンポーネントにより使用されます。 | ○ | ○ | ○ | ○ | |
remoting | 4447 | リモート EJB の呼び出しに使用されます。 | ○ | ○ | ○ | ○ | |
txn-recovery-environment | 4712 | JTA トランザクションリカバリーマネージャー。 | ○ | ○ | ○ | ○ | |
txn-status-manager | 4713 | JTA / JTS トランザクションマネージャー。 | ○ | ○ | ○ | ○ |
ソケットバインディンググループ以外に、各ホストコントローラーは管理用にさらに 2 つのポートを開きます。
- 9990 - Web 管理コンソールポート
- 9999 - 管理コンソールと管理 API により使用されるポート
5.2.4. ソケットバインディンググループのポートオフセットについて
5.2.5. ポートオフセットの設定
ポートオフセットの設定
管理 CLI または管理コンソールを選択してポートオフセットを設定します。管理 CLI を使用したポートオフセットの設定
管理 CLI を使用してポートオフセットを設定します。ポートオフセットの編集
write操作を使用して新しい値をポートオフセット属性に書き込みます。次の例は、server-two のsocket-binding-port-offset値を 250 に更新します。このサーバーはデフォルトローカルホストグループのメンバーです。変更を有効にするには再起動が必要となります。[domain@localhost:9999 /] /host=master/server-config=server-two/:write-attribute(name=socket-binding-port-offset,value=250)
ポートオフセット属性の確認
read-resource操作でinclude-runtime=trueパラメーターを実行して値を変更し、サーバーモデルで現在アクティブであるすべての値を公開します。[domain@localhost:9999 /] /host=master/server-config=server-two/:read-resource(include-runtime=true)
管理コンソールを使用したポートオフセットの設定
管理コンソールを使用してポートオフセットを設定します。管理コンソールにログインします。
管理対象ドメインの管理コンソールにログインします。Hosts タブの選択
右上の Hosts タブを選択します。ポートオフセット属性の編集
Configuration Nameセクションでサーバーを選択し、Edit ボタンをクリックします。- Port Offset フィールドで必要な値を入力します。
- Save ボタンをクリックして終了します。
5.3. IPv6
5.3.1. IPv6 ネットワーキング向け JVM スタック設定の指定
- 概要
- このトピックでは、JBoss Enterprise Application Platform 6 インストールでの IPv6 ネットワーキングの有効化について説明します。
手順5.1 IPv4 Stack Java プロパティーの無効化
- インストールに関連するファイルを開きます。
スタンドアロンサーバーの場合:
EAP_HOME/bin/standalone.confを開きます。管理対象ドメインの場合:
EAP_HOME/bin/domain.confを開きます。
- IPv4 Stack Java プロパティーを false に変更します。
-Djava.net.preferIPv4Stack=false
例:# Specify options to pass to the Java VM. # if [ "x$JAVA_OPTS" = "x" ]; then JAVA_OPTS="-Xms64m -Xmx512m -XX:MaxPermSize=256m -Djava.net.preferIPv4Stack=false -Dorg.jboss.resolver.warning=true -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Djava.net.preferIPv6Addresses=true" fi
5.3.2. IPv6 ネットワークに対するインターフェース宣言の設定
次の手順に従って、インターフェース inet アドレスを IPv6 のデフォルトに設定します。
手順5.2 IPv6 ネットワーキングのインターフェースの設定
- コンソールの右上にある Profile タブを選択します。
- General Configuration の Interfaces オプションを選択します。
- 設定する名前付きネットワークインターフェースを選択します。
- Edit ボタンをクリックします。
- 下記の inet アドレスを設定します。
${jboss.bind.address.management:[ADDRESS]} - Save ボタンをクリックして変更を保存します。
- サーバーを再起動し、変更を実装します。
5.3.3. IPv6 アドレス用 JVM スタック設定の指定
- 概要
- このトピックでは、JBoss Enterprise Application Platform 6 インストールで IPv6 アドレスを優先するよう設定ファイルで設定する方法について説明します。
手順5.3 IPv6 アドレスを優先するよう JBoss Enterprise Application Platform 6 インストールを設定する
- インストールに関連するファイルを開きます。
スタンドアロンサーバーの場合:
EAP_HOME/bin/standalone.confを開きます。管理対象ドメインの場合:
EAP_HOME/bin/domain.confを開きます。
- 以下の Java プロパティーを Java VM オプションに追加します。
-Djava.net.preferIPv6Addresses=true
例:# Specify options to pass to the Java VM. # if [ "x$JAVA_OPTS" = "x" ]; then JAVA_OPTS="-Xms64m -Xmx512m -XX:MaxPermSize=256m -Djava.net.preferIPv4Stack=false -Dorg.jboss.resolver.warning=true -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Djava.net.preferIPv6Addresses=true" fi
第6章 データソース管理
6.1. はじめに
6.1.1. JDBC について
6.1.2. JBoss Enterprise Application Platform 6 がサポートするデータベース
6.1.3. データソースの型
datasources と XA datasources の 2 つがあります。
6.1.4. データソースの例
警告
6.1.5. -ds.xml ファイルのデプロイメント
*-ds.xml データソース設定ファイルが必要でした。*-ds.xml を JBoss Enterprise Application Platform 6 にデプロイするには、http://docs.jboss.org/ironjacamar/schema/datasources_1_1.xsd のスキーマに従います。
警告
重要
*-ds.xml ファイルをデプロイする場合、すでにデプロイまたは定義されている <driver> エントリーへの参照を使用しなければなりません。
6.2. JDBC ドライバー
6.2.1. 管理コンソールで JDBC ドライバーをインストール
アプリケーションが JDBC データソースに接続する前に、データソースベンダーの JDBC ドライバーを JBoss Enterprise Application Platform が使用できる場所にインストールする必要があります。JBoss Enterprise Application サーバーを用いると、これらのドライバーを他のデプロイメントと同じようにデプロイできます。そのため、管理対象ドメインを使用する場合、サーバーグループ内の複数のサーバーに渡ってドライバーをデプロイできます。
注記
このタスクを実行する前に、以下の前提条件を満たしている必要があります。
- データベースベンダーから JDBC ドライバーをダウンロードします。
手順6.1 JDBC ドライバーのデプロイ
管理コンソールへのアクセス
JAR ファイルをサーバーあるいはサーバーグループにデプロイします。
管理対象ドメインを使用する場合は、JAR ファイルをサーバーグループにデプロイします。使用しない場合はサーバーにデプロイします。「管理コンソールを使用したアプリケーションのデプロイ」 を参照してください。
JDBC ドライバーがデプロイされ、アプリケーションが使用できるようになります。
6.2.2. コアモジュールとしての JDBC ドライバーのインストール
このタスクを実行する前に、以下の前提条件を満たしている必要があります。
- ご使用のデータベースのベンダーから JDBC ドライバーをダウンロードします。JDBC ドライバーをダウンロードする場所は 「JDBC ドライバーをダウンロードできる場所」 に記載しています。
- アーカイブを展開します。
手順6.2 コアモジュールとしての JDBC ドライバーのインストール
EAP_HOME/modules/ディレクトリ下にファイルパス構造を作成します。たとえば、MySQL JDBC ドライバーの場合には、EAP_HOME/modules/com/mysql/main/のようなディレクトリ構造を作成します。- JDBC ドライバー JAR を
main/サブディレクトリにコピーします。 main/サブディレクトリに、以下の例のようなmodule.xmlファイルを作成します。例6.1 module.xml ファイルの例
<?xml version="1.0" encoding="UTF-8"?> <module xmlns="urn:jboss:module:1.0" name="com.mysql"> <resources> <resource-root path="mysql-connector-java-5.1.15.jar"/> </resources> <dependencies> <module name="javax.api"/> <module name="javax.transaction.api"/> </dependencies> </module>モジュール名com.mysqlはそのモジュールのディレクトリ構造と一致する必要があります。- サーバーを起動します。
- 管理 CLI を起動します。
- 次の CLI コマンドを実行して、JDBC ドライバーモジュールをドライバーとして追加します。
/subsystem=datasources/jdbc-driver=DRIVER_NAME:add(driver-name=DRIVER_NAME,driver-module-name=MODULE_NAME,driver-xa-datasource-class-name=XA_DATASOURCE_CLASS_NAME)
例6.2 CLI コマンドの例
/subsystem=datasources/jdbc-driver=mysql:add(driver-name=mysql,driver-module-name=com.mysql,driver-xa-datasource-class-name=com.mysql.jdbc.jdbc2.optional.MysqlXADataSource)
JDBC ドライバーがインストールされ、コアモジュールとして設定されます。アプリケーションのデータソースが JDBC ドライバーを参照できる状態になります。
6.2.3. JDBC ドライバーをダウンロードできる場所
表6.1 JDBC ドライバーをダウンロードできる場所
| ベンダー | ダウンロード場所 |
|---|---|
| MySQL | |
| PostgreSQL | |
| Oracle | |
| IBM | |
| Sybase | |
| Microsoft |
6.2.4. ベンダー固有クラスへのアクセス
このトピックでは、JDBC 固有クラスを使用するのに必要な手順について説明します。これは、アプリケーションが JDBC API の一部でないベンダー固有の機能を使用する必要がある場合に必要です。
警告
重要
重要
手順6.3 アプリケーションへの依存関係の追加
MANIFEST.MFファイルの設定- テキストエディターでアプリケーションの
META-INF/MANIFEST.MFファイルを開きます。 - JDBC モジュールの依存関係を追加し、ファイルを保存します。
依存関係: MODULE_NAME
例6.3 依存関係の例
依存関係: com.mysql
jboss-deployment-structure.xmlファイルの作成アプリケーションのMETA-INF/またはWEB-INFフォルダーでjboss-deployment-structure.xmlという名前のファイルを作成します。例6.4 サンプル
jboss-deployment-structure.xmlファイル<jboss-deployment-structure> <deployment> <dependencies> <module name="com.mysql" /> </dependencies> </deployment> </jboss-deployment-structure>
例6.5 ベンダー固有 API へのアクセス
import java.sql.Connection; import org.jboss.jca.adapters.jdbc.WrappedConnection; Connection c = ds.getConnection(); WrappedConnection wc = (WrappedConnection)c; com.mysql.jdbc.Connection mc = wc.getUnderlyingConnection();
6.3. 非 XA データソース
6.3.1. 管理インターフェースによる非 XA データソースの作成
ここでは、管理コンソールまたは管理 CLI のいずれかを使用して非 XA データソースを作成する手順について取り上げます。
要件
- JBoss Enterprise Application Platform 6 サーバーが稼働している必要があります。
注記
手順6.4 管理 CLI または管理コンソールのいずれかを使用したデータソースの作成
管理 CLI
- CLI ツールを起動し、サーバーに接続します。
- 以下のコマンドを実行して非 XA データソースを作成し、適切に変数を設定します。
data-source add --name=DATASOURCE_NAME --jndi-name=JNDI_NAME --driver-name=DRIVER_NAME --connection-url=CONNECTION_URL
- データソースを有効にします。
data-source enable --name=DATASOURCE_NAME
管理コンソール
- 管理コンソールへログインします。
管理コンソールの Datasources パネルに移動します。
スタンドアロンモード
コンソールの右上より Profile タブを選択します。ドメインモード
- コンソールの右上より Profiles タブを選択します。
- 左上のドロップダウンボックスより該当するプロファイルを選択します。
- コンソールの左側にある Subsystems メニューを展開します。
- コンソールの左側にあるメニューより Connector → Datasources と選択します。

図6.1 データソースパネル
新しいデータソースの作成
- Datasources パネル上部にある Add ボタンを選択します。
- Create Datasource ウィザードで新しいデータソースの属性を入力し、Next ボタンを押します。
- Create Datasource ウィザードで JDBC ドライバーの詳細を入力し、Next ボタンを押します。
- Create Datasource ウィザードで接続設定を入力し、Done ボタンを押します。
非 XA データソースがサーバーに追加されます。standalone.xml または domain.xml ファイル、および管理インターフェースで追加を確認することができます。
6.3.2. 管理インターフェースによる非 XA データソースの編集
ここでは、管理コンソールまたは管理 CLI のいずれかを使用して非 XA データソースを編集する手順について取り上げます。
注記
jta パラメーターを true に設定してください。
手順6.5 非 XA データソースの編集
管理 CLI
write-attributeコマンドを使用してデータソース属性を設定します。/subsystem=datasources/data-source=DATASOURCE_NAME:write-attribute(name=ATTRIBUTE_NAME,value=ATTRIBUTE_VALUE)
- サーバーを再ロードして変更を確認します。
:reload
管理コンソール
管理コンソールの Datasources パネルに移動します。
スタンドアロンモード
コンソールの右上より Profile タブを選択します。ドメインモード
- コンソールの右上より Profiles タブを選択します。
- 左上のドロップダウンボックスより該当するプロファイルを選択します。
- コンソールの左側にある Subsystems メニューを展開します。
- コンソールの左側にあるメニューより Connector → Datasources と選択します。

図6.2 データソースパネル
データソースの編集
- Available Datasources リストより関連する データソースを選択します。下にある Attributes パネルにデータソースの属性が表示されます。
- Edit ボタンを選択してデータソース属性を編集します。
- データソース属性を編集し、作業が終了したら、Save ボタンを選択します。
非 XA データソースが設定されます。変更は standalone.xml または domain.xml ファイルのどちらかと、管理インターフェースで確認できます。
- 新しいデータソースを作成する場合は 「管理インターフェースによる非 XA データソースの作成」 を参照してください。
- データーソースを削除する場合は 「管理インターフェースによる非 XA データソースの削除」 を参照してください。
6.3.3. 管理インターフェースによる非 XA データソースの削除
ここでは、管理コンソールまたは管理 CLI のいずれかを使用して JBoss Enterprise Application Platform 6 から 非 XA データソースを削除する手順について説明します。
手順6.6 非 XA データソースの削除
管理 CLI
- 次のコマンドを実行して非 XA データソースを削除します。
data-source remove --name=DATASOURCE_NAME
管理コンソール
管理コンソールの Datasources パネルに移動します。
スタンドアロンモード
コンソールの右上より Profile タブを選択します。ドメインモード
- コンソールの右上より Profiles タブを選択します。
- 左上のドロップダウンボックスより該当するプロファイルを選択します。
- コンソールの左側にある Subsystems メニューを展開します。
- コンソールの左側にあるメニューより Connector → Datasources と選択します。

図6.3 データソースパネル
- 削除する登録済みのデータソースを選択し、コンソールの右上隅にある Remove ボタンをクリックします。
非 XA データソースがサーバーより削除されます。
- 新しいデータソースを追加する場合は 「管理インターフェースによる非 XA データソースの作成」 を参照してください。
6.4. XA データソース
6.4.1. 管理インターフェースによる XA データソースの作成
ここでは、管理コンソールまたは管理 CLI のいずれかを使用して XA データソースを作成する手順について取り上げます。
注記
手順6.7 管理 CLI または管理コンソールのいずれかを使用した XA データソースの作成
管理 CLI
- 以下のコマンドを実行して XA データソースを作成し、適切に変数を設定します。
xa-data-source add --name=XA_DATASOURCE_NAME --jndi-name=JNDI_NAME --driver-name=DRIVER_NAME --xa-datasource-class=XA_DATASOURCE_CLASS
XA データソースプロパティーの設定
サーバー名の設定
次のコマンドを実行し、ホストのサーバー名を設定します。/subsystem=datasources/xa-data-source=XA_DATASOURCE_NAME/xa-datasource-properties=ServerName:add(value=HOSTNAME)
データベース名の設定
次のコマンドを実行し、データベース名を設定します。/subsystem=datasources/xa-data-source=XA_DATASOURCE_NAME/xa-datasource-properties=DatabaseName:add(value=DATABASE_NAME)
- データソースを有効にします。
xa-data-source enable --name=XA_DATASOURCE_NAME
管理コンソール
管理コンソールの Datasources パネルに移動します。
スタンドアロンモード
コンソールの右上より Profile タブを選択します。ドメインモード
- コンソールの右上より Profiles タブを選択します。
- 左上のドロップダウンボックスより該当するプロファイルを選択します。
- コンソールの左側にある Subsystems メニューを展開します。
- コンソールの左側にあるメニューより Connector → Datasources と選択します。

図6.4 データソースパネル
- XA Datasource パネルを選択します。
新しい XA データソースの作成
- XA Datasource パネルの上にある Add ボタンを選択します。
- Create XA Datasource ウィザードに新しい XA データソースの属性を入力し、Next ボタンを押します。
- Create XA Datasource ウィザードに JDBC ドライバーの詳細を入力し、Next ボタンを押します。
- XA プロパティーを編集し、Next ボタンを押します。
- Create XA Datasource ウィザードに接続設定を入力し、Done ボタンを押します。
XA データソースがサーバーに追加されます。追加内容は standalone.xml または domain.xml ファイルのどちらかと、管理インターフェースで確認することができます。
- さらにデータソースを設定する場合は 「管理インターフェースによる XA データソースの編集」 を参照してください。
- データソースを削除する場合は 「管理インターフェースによる XA データソースの削除」 を参照してください。
6.4.2. 管理インターフェースによる XA データソースの編集
ここでは、管理コンソールまたは管理 CLI のいずれかを使用して XA データソースを編集する手順について取り上げます。
手順6.8 管理 CLI または管理コンソールのいずれかを使用した XA データソースの編集
管理 CLI
XA データソース属性の設定
write-attributeコマンドを使用してデータソース属性を設定します。/subsystem=datasources/xa-data-source=XA_DATASOURCE_NAME:write-attribute(name=ATTRIBUTE_NAME,value=ATTRIBUTE_VALUE)
XA データソースプロパティーの設定
次のコマンドを実行して XA データソースサブリソースを設定します。/subsystem=datasources/xa-data-source=DATASOURCE_NAME/xa-datasource-properties=PROPERTY_NAME:add(value=PROPERTY_VALUE)
- サーバーを再ロードして変更を確認します。
:reload
管理コンソール
管理コンソールの Datasources パネルに移動します。
スタンドアロンモード
コンソールの右上より Profile タブを選択します。ドメインモード
- コンソールの右上より Profiles タブを選択します。
- 左上のドロップダウンボックスより該当するプロファイルを選択します。
- コンソールの左側にある Subsystems メニューを展開します。
- コンソールの左側にあるメニューより Connector → Datasources と選択します。

図6.5 データソースパネル
- XA Datasource パネルを選択します。
データソースの編集
- Available XA Datasources リストより関連する XA データソースを選択します。下にある Attributes パネルに XA データソースの属性が表示されます。
- Edit ボタンを選択してデータソース属性を編集します。
- XA データソースの属性を編集し、終わったら Save ボタンを選択します。
XA データソースが設定されます。変更は standalone.xml または domain.xml ファイルのどちらかと、管理インターフェースで確認できます。
- 新しいデータソースを作成する場合は 「管理インターフェースによる XA データソースの作成」 を参照してください。
- データソースを削除する場合は 「管理インターフェースによる XA データソースの削除」 を参照してください。
6.4.3. 管理インターフェースによる XA データソースの削除
ここでは、管理コンソールまたは管理 CLI のいずれかを使用して JBoss Enterprise Application Platform 6 から XA データソースを削除する手順について説明します。
手順6.9 管理 CLI または管理コンソールのいずれかを使用した XA データソースの削除
管理 CLI
- 次のコマンドを実行して XA データソースを削除します。
xa-data-source remove --name=XA_DATASOURCE_NAME
管理コンソール
管理コンソールの Datasources パネルに移動します。
スタンドアロンモード
コンソールの右上より Profile タブを選択します。ドメインモード
- コンソールの右上より Profiles タブを選択します。
- 左上のドロップダウンボックスより該当するプロファイルを選択します。
- コンソールの左側にある Subsystems メニューを展開します。
- コンソールの左側にあるメニューより Connector → Datasources と選択します。

図6.6 データソースパネル
- XA Datasource パネルを選択します。
- 削除する登録済みの XA データソースを選択し、コンソールの右上隅にある Remove ボタンをクリックします。
XA データソースがサーバーより削除されます。
- 新しい XA データソースを追加する場合は 「管理インターフェースによる XA データソースの作成」 を参照してください。
6.4.4. XA 復元
6.4.4.1. XA リカバリーモジュールについて
com.arjuna.ats.jta.recovery.XAResourceRecovery を拡張する必要があります。
6.4.4.2. XA リカバリーモジュールの設定
表6.2 一般的な設定属性
| 属性 | 説明 |
|---|---|
| recovery-username |
リソースに接続してリカバリー行うためにリカバリーモジュールが使用する必要があるユーザー名。
|
| recovery-password |
リソースに接続してリカバリーを行うためにリカバリーモジュールが使用する必要があるパスワード。
|
| recovery-security-domain |
リソースに接続して復元を行うためにリカバリーモジュールが使用する必要があるセキュリティードメイン。
|
| recovery-plugin-class-name |
カスタムのリカバリーモジュールを使用する必要がある場合は、この属性をモジュールの完全修飾クラス名に設定します。モジュールはクラス
com.arjuna.ats.jta.recovery.XAResourceRecovery を拡張する必要があります。
|
| recovery-plugin-properties |
プロパティーを設定する必要があるカスタムのリカバリーモジュールを使用する場合は、この属性をプロパティーに対するカンマ区切りの key=value ペアのリストに設定します。
|
ベンダー固有の設定情報
- Oracle
- Oracle データソースが不適切に設定された場合は、ログ出力に次のようなエラーが示されることがあります。
WARN [com.arjuna.ats.jta.logging.loggerI18N] [com.arjuna.ats.internal.jta.recovery.xarecovery1] Local XARecoveryModule.xaRecovery got XA exception javax.transaction.xa.XAException, XAException.XAER_RMERR
このエラーを解決するには、recovery-usernameで設定された Oracle ユーザーがリカバリーに必要なテーブルにアクセスできる必要があります。以下の SQL ステートメントは、Oracle バグ 5945463 用のパッチが適用された Oracle 11g または Oracle 10g R2 インスタンスに対する適切なステートメントです。GRANT SELECT ON sys.dba_pending_transactions TO recovery-username; GRANT SELECT ON sys.pending_trans$ TO recovery-username; GRANT SELECT ON sys.dba_2pc_pending TO recovery-username; GRANT EXECUTE ON sys.dbms_xa TO recovery-username;
11g よりも前の Oracle 11 バージョンを使用する場合は、最後のEXECUTEステートメントを以下のように変更します。GRANT EXECUTE ON sys.dbms_system TO recovery-username;
- PostgreSQL
- 準備された (つまり、XA) トランザクションを有効にする手順については、PostgreSQL ドキュメンテーションを参照してください。PostgreSQL の JDBC ドライバーのバージョン 8.4-701 では、
org.postgresql.xa.PGXAConnectionにバグがあり、特定の状況でリカバリーが中断されます。このバグは新しいバージョンで修正されています。 - MySQL
- http://bugs.mysql.com/bug.php?id=12161 に基づき、XA トランザクションのリカバリーは一部の MySQL 5 バージョンでは動作しませんでした。この問題は MySQL 6.1 で修正されました。詳細については、バグの URL または MySQL ドキュメンテーションを参照してください。
- IBM DB2
- IBM DB2 では、クラッシュまたは障害の発生後にアプリケーションサーバーが再起動すると発生する、指定の再同期ステージの間でのみ
XAResource.recoverメソッドが呼び出されることを想定します。これは、DB2 実装の設計に関する決まりであり、本書の範囲外となります。
6.5. データソースセキュリティー
6.5.1. データソースセキュリティーについて
- セキュリティードメイン: 「セキュリティードメインについて」
- パスワード vault: 「クリアテキストファイルでの機密性が高い文字列のセキュア化について」
例6.6 セキュリティードメインの例
<security> <security-domain>mySecurityDomain</security-domain> </security>
例6.7 パスワード vault の例
<security>
<user-name>admin</user-name>
<password>${VAULT::ds_ExampleDS::password::N2NhZDYzOTMtNWE0OS00ZGQ0LWE4MmEtMWNlMDMyNDdmNmI2TElORV9CUkVBS3ZhdWx0}</password>
</security>
6.6. データソース設定
6.6.1. データソースのパラメーター
表6.3 非 XA および XA データソースに共通のデータソースパラメーター
| パラメーター | 説明 |
|---|---|
| jndi-name | データソースの一意の JNDI 名。 |
| pool-name | データソースの管理プール名。 |
| enabled | データソースが有効かどうか。 |
| use-java-context |
データソースをグローバルの JNDI にバインドするかどうか。
|
| spy |
JDBC レイヤーで
spy 機能を有効にします。この機能は、データソースへの JDBC トラフィックをすべてログに記録します。また、logging-category パラメーターを org.jboss.jdbc に設定する必要があります。
|
| use-ccm | キャッシュ接続マネージャーを有効にします。 |
| new-connection-sql | 接続プールに接続が追加された時に実行する SQL ステートメント。 |
| transaction-isolation |
次のいずれかになります。
|
| url-delimiter | 高可用性 (HA) クラスターデータベースの connection-url にある URL の区切り文字。 |
| url-selector-strategy-class-name | インターフェース org.jboss.jca.adapters.jdbc.URLSelectorStrategy を実装するクラス。 |
| security |
セキュリティー設定である子要素が含まれます。表6.8「セキュリティーパラメーター」 を参照してください。
|
| validation |
検証設定である子要素が含まれます。表6.9「検証パラメーター」 を参照してください。
|
| timeout |
タイムアウト設定である子要素が含まれます。表6.10「タイムアウトパラメーター」 を参照してください。
|
| statement |
ステートメント設定である子要素が含まれます。表6.11「ステートメントのパラメーター」 を参照してください。
|
表6.4 非 XA データソースのパラメーター
| パラメーター | 説明 |
|---|---|
| jta | 非 XA データソースの JTA 統合を有効にします。XA データソースには適用されません。 |
| connection-url | JDBC ドライバーの接続 URL。 |
| driver-class | JDBC ドライバークラスの完全修飾名。 |
| connection-property | Driver.connect(url,props) メソッドに渡される任意の接続プロパティー。各 connection-property は、文字列名と値のペアを指定します。プロパティー名は名前、値は要素の内容に基づいています。
|
| pool |
プーリング設定である子要素が含まれます。表6.6「非 XA および XA データソースに共通のプールパラメーター」 を参照してください。
|
表6.5 XA データソースのパラメーター
| パラメーター | 説明 |
|---|---|
| xa-datasource-property |
実装クラス
XADataSource に割り当てるプロパティー。name=value で指定。setNameという形式で setter メソッドが存在する場合、プロパティーは setName(value) という形式の setter メソッドを呼び出すことで設定されます。
|
| xa-datasource-class |
実装クラス
javax.sql.XADataSource の完全修飾名。
|
| driver |
JDBC ドライバーが含まれるクラスローダーモジュールへの一意参照。driverName#majorVersion.minorVersion の形式にのみ対応しています。
|
| xa-pool |
プーリング設定である子要素が含まれます。表6.6「非 XA および XA データソースに共通のプールパラメーター」 と 表6.7「XA プールパラメーター」 を参照してください。
|
| recovery |
リカバリ設定である子要素が含まれます。表6.12「リカバリーパラメーター」 を参照してください。
|
表6.6 非 XA および XA データソースに共通のプールパラメーター
| パラメーター | 説明 |
|---|---|
| min-pool-size | プールが保持する最小接続数 |
| max-pool-size | プールが保持可能な最大接続数 |
| prefill | 接続プールのプレフィルを試行するかどうか。要素が空の場合は true を示します。デフォルトは、false です。 |
| use-strict-min | pool-size が厳密かどうか。デフォルトは false に設定されています。 |
| flush-strategy |
エラーの場合にプールをフラッシュするかどうか。有効な値は次のとおりです。
デフォルトは
FailingConnectionOnly です。
|
| allow-multiple-users | 複数のユーザーが getConnection (user, password) メソッドを使いデータソースへアクセスするか、また内部プールタイプがこの動作に対応するかを指定します。 |
表6.7 XA プールパラメーター
| パラメーター | 説明 |
|---|---|
| is-same-rm-override | javax.transaction.xa.XAResource.isSameRM(XAResource) クラスが true あるいは false のどちらを返すか |
| interleaving | XA 接続ファクトリのインターリービングを有効にするかどうか |
| no-tx-separate-pools | コンテキスト毎に sub-pool を作成するかどうか。これには Oracle のデータソースが必要ですが、このデータソースは JTA トランザクションの内部、外部に関わらず、XA 接続の利用ができなくなります。 |
| pad-xid | Xid のパディングを行うかどうか |
| wrap-xa-resource |
XAResource を
org.jboss.tm.XAResourceWrapper インスタンスでラップするかどうか。
|
表6.8 セキュリティーパラメーター
| パラメーター | 説明 |
|---|---|
| user-name | 新規接続の作成に使うユーザー名 |
| password | 新規接続の作成に使うパスワード |
| security-domain | 認証処理を行う JAAS security-manager 名が入ります。この名前は、JAAS ログイン設定のapplication-policy/name 属性を相関します。 |
| reauth-plugin | 物理接続の再認証に使う再認証プラグインを定義します。 |
表6.9 検証パラメーター
| パラメーター | 説明 |
|---|---|
| valid-connection-checker | SQLException.isValidConnection(Connection e) メソッドを提供し接続を検証する インターフェース org.jboss.jca.adaptors.jdbc.ValidConnectionChecker の実装。例外が発生すると接続が破棄されます。存在する場合、check-valid-connection-sql パラメーターが上書きされます。
|
| check-valid-connection-sql | プール接続の妥当性を確認する SQL ステートメント。これは、管理接続をプールから取得し利用する場合に呼び出される場合があります。 |
| validate-on-match |
接続ファクトリが指定のセットに対して管理対象接続をマッチしようとした時に接続レベルの検証を実行するかどうかを示します。
通常、
validate-on-match に true を指定した時に background-validation を true に指定することはありません。クライアントが使用する前に接続を検証する必要がある場合に Validate-on-match が必要になります。このパラメーターはデフォルトでは true になっています。
|
| background-validation |
接続がバックグラウンドスレッドで検証されることを指定します。
validate-on-match を使用しない場合、バックグラウンドの検証はパフォーマンスを最適化します。validate-on-match が true の時に background-validation を使用すると、チェックが冗長になることがあります。バックグラウンド検証では、不良の接続がクライアントに提供される可能性があります (検証スキャンと接続がクライアントに提供されるまでの間に接続が悪くなります)。そのため、クライアントアプリケーションはこの接続不良の可能性に対応する必要があります。
|
| background-validation-millis | バックグラウンド検証を実行する期間 (ミリ秒単位)。 |
| use-fast-fail |
true の場合、接続が無効であれば最初に接続を割り当てしようとした時点で失敗します。デフォルトは
false です。
|
| stale-connection-checker |
ブール値の
isStaleConnection(SQLException e) メソッドを提供する org.jboss.jca.adapters.jdbc.StaleConnectionChecker のインスタンス。このメソッドが true を返すと、SQLException のサブクラスである org.jboss.jca.adapters.jdbc.StaleConnectionException に例外がラップされます。
|
| exception-sorter |
ブール値である
isExceptionFatal(SQLException e) メソッドを提供する org.jboss.jca.adapters.jdbc.ExceptionSorter のインスタンス。このメソッドは、例外が connectionErrorOccurred メッセージとして javax.resource.spi.ConnectionEventListener のすべてのインスタンスへブロードキャストされるべきであるかどうかを検証します。
|
表6.10 タイムアウトパラメーター
| パラメーター | 説明 |
|---|---|
| use-try-lock | lock() の代わりに tryLock() を使用します。これは、ロックが使用できない場合に即座に失敗するのではなく、設定された秒数間ロックの取得を試みます。デフォルトは 60 秒です。たとえば、タイムアウトを 5 分に設定するには、<use-try-lock>300</use-try-lock> を設定します。 |
| blocking-timeout-millis | 接続待機中にブロックする最大時間 (ミリ秒)。この時間を超過すると、例外がスローされます。これは、接続許可の待機中のみブロックし、新規接続の作成に長時間要している場合は例外をスローしません。デフォルトは 30000 (30 秒) です。 |
| idle-timeout-minutes |
アイドル接続が切断されるまでの最大時間 (分単位)。実際の最大時間は idleRemover のスキャン時間によって異なります。idleRemover のスキャン時間はプールの最小
idle-timeout-minutes の半分になります。
|
| set-tx-query-timeout |
トランザクションがタイムアウトするまでの残り時間を基にクエリのタイムアウトを設定するかどうか。トランザクションが存在しない場合は設定済みのクエリのタイムアウトが使用されます。デフォルトは
false です。
|
| query-timeout | クエリのタイムアウト (秒)。デフォルトはタイムアウトなしです。 |
| allocation-retry | 例外をスローする前に接続の割り当てを再試行する回数。デフォルトは 0 で、初回の割り当て失敗で例外がスローされます。 |
| allocation-retry-wait-millis |
接続の割り当てを再試行するまで待機する期間 (ミリ秒単位)。デフォルトは 5000 (5 秒) です。
|
| xa-resource-timeout |
ゼロでない場合、この値は
XAResource.setTransactionTimeout メソッドへ渡されます。
|
表6.11 ステートメントのパラメーター
| パラメーター | 説明 |
|---|---|
| track-statements |
接続がプールへ返され、ステートメントが準備済みステートメントキャッシュへ返された時に、閉じられていないステートメントをチェックするかどうか。false の場合、ステートメントは追跡されません。
有効な値
|
| prepared-statement-cache-size | LRU (Least Recently Used) キャッシュにある接続毎の準備済みステートメントの数。 |
| share-prepared-statements |
閉じずに同じステートメントを 2 回要求した場合に、同じ基盤の準備済みステートメントを使用するかどうか。デフォルトは
false です。
|
表6.12 リカバリーパラメーター
| パラメーター | 説明 |
|---|---|
| recover-credential | リカバリーに使用するユーザー名とパスワードのペア、あるいはセキュリティドメイン。 |
| recover-plugin |
リカバリーに使用される
org.jboss.jca.core.spi.recoveryRecoveryPlugin クラスの実装。
|
6.6.2. データソース接続 URL
表6.13
| データソース | 接続 URL |
|---|---|
| PostgreSQL | jdbc:postgresql://SERVER_NAME:PORT/DATABASE_NAME |
| MySQL | jdbc:mysql://SERVER_NAME:PORT/DATABASE_NAME |
| Oracle | jdbc:oracle:thin:@ORACLE_HOST:PORT:ORACLE_SID |
| IBM DB2 | jdbc:db2://SERVER_NAME:PORT/DATABASE_NAME |
| Microsoft SQLServer | jdbc:microsoft:sqlserver://SERVER_NAME:PORT;DatabaseName=DATABASE_NAME |
6.6.3. データソースの拡張
表6.14 データソースの拡張
| データソースの拡張 | 設定パラメーター | 説明 |
|---|---|---|
| org.jboss.jca.adapters.jdbc.spi.ExceptionSorter | <exception-sorter> | SQLException が発生した接続にとってこの例外は致命的かどうかを確認します。 |
| org.jboss.jca.adapters.jdbc.spi.StaleConnection | <stale-connection-checker> | org.jboss.jca.adapters.jdbc.StaleConnectionException の陳腐 SQLExceptions をラップします。 |
| org.jboss.jca.adapters.jdbc.spi.ValidConnection | <valid-connection-checker> | アプリケーションによる接続の使用が有効であるかどうかを確認します。 |
拡張の実装
- 汎用
- org.jboss.jca.adapters.jdbc.extensions.novendor.NullExceptionSorter
- org.jboss.jca.adapters.jdbc.extensions.novendor.NullStaleConnectionChecker
- org.jboss.jca.adapters.jdbc.extensions.novendor.NullValidConnectionChecker
- org.jboss.jca.adapters.jdbc.extensions.novendor.JDBC4ValidConnectionChecker
- PostgreSQL
- org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter
- org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker
- MySQL
- org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter
- org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLReplicationValidConnectionChecker
- org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker
- IBM DB2
- org.jboss.jca.adapters.jdbc.extensions.db2.DB2ExceptionSorter
- org.jboss.jca.adapters.jdbc.extensions.db2.DB2StaleConnectionChecker
- org.jboss.jca.adapters.jdbc.extensions.db2.DB2ValidConnectionChecker
- Sybase
- org.jboss.jca.adapters.jdbc.extensions.sybase.SybaseExceptionSorter
- org.jboss.jca.adapters.jdbc.extensions.sybase.SybaseValidConnectionChecker
- Microsoft SQLServer
- org.jboss.jca.adapters.jdbc.extensions.mssql.MSSQLValidConnectionChecker
- Oracle
- org.jboss.jca.adapters.jdbc.extensions.oracle.OracleExceptionSorter
- org.jboss.jca.adapters.jdbc.extensions.oracle.OracleExceptionSorter
- org.jboss.jca.adapters.jdbc.extensions.oracle.OracleValidConnectionChecker
6.6.4. データソース統計の表示
jdbc および pool の定義済みデータソースより統計を表示できます。
手順6.10
/subsystem=datasources/data-source=ExampleDS/statistics=jdbc:read-resource(include-runtime=true)
/subsystem=datasources/data-source=ExampleDS/statistics=pool:read-resource(include-runtime=true)
注記
false であるため、必ず include-runtime=true 引数を指定するようにしてください。
6.6.5. データソースの統計
サポートされるデータソースの主要統計は下表のとおりです。
表6.15 主要統計
| 名前 | 説明 |
|---|---|
ActiveCount |
アクティブな接続の数。各接続はアプリケーションによって使用されているか、プールで使用可能な状態であるかのいずれかになります。
|
AvailableCount |
プールの使用可能な接続の数。
|
AverageBlockingTime |
プールの排他ロックの取得をブロックするために費やされた平均時間。値はミリ秒単位です。
|
AverageCreationTime |
接続の作成に費やされた平均時間。値はミリ秒単位です。
|
CreatedCount |
作成された接続の数。
|
DestroyedCount |
破棄された接続の数。
|
InUseCount |
現在使用中の接続の数。
|
MaxCreationTime |
接続の作成にかかった最大時間。値はミリ秒単位です。
|
MaxUsedCount |
使用される接続の最大数。
|
MaxWaitCount |
同時に接続を待機するリクエストの最大数。
|
MaxWaitTime |
プールの排他ロックの待機に費やされた最大時間。
|
TimedOut |
タイムアウトした接続の数。
|
TotalBlockingTime |
プールの排他ロックの待機に費やされた合計時間。値はミリ秒単位です。
|
TotalCreationTime |
接続の作成に費やされた合計時間。値はミリ秒単位です。
|
WaitCount |
接続を待機する必要があるリクエストの数。
|
サポートされるデータソースの JDBC 統計は下表のとおりです。
表6.16 JDBC の統計
| 名前 | 説明 |
|---|---|
PreparedStatementCacheAccessCount |
ステートメントキャッシュがアクセスされた回数。
|
PreparedStatementCacheAddCount |
ステートメントキャッシュに追加されたステートメントの数。
|
PreparedStatementCacheCurrentSize |
ステートメントキャッシュに現在キャッシュされた準備済みおよび呼び出し可能ステートメントの数。
|
PreparedStatementCacheDeleteCount |
キャッシュから破棄されたステートメントの数。
|
PreparedStatementCacheHitCount |
キャッシュからのステートメントが使用された回数。
|
PreparedStatementCacheMissCount |
ステートメント要求がキャッシュのステートメントと一致しなかった回数。
|
6.7. データソース例
6.7.1. PostgreSQL のデータソースの例
例6.8
<datasources>
<datasource jndi-name="java:jboss/PostgresDS" pool-name="PostgresDS">
<connection-url>jdbc:postgresql://localhost:5432/postgresdb</connection-url>
<driver>postgresql</driver>
<security>
<user-name>admin</user-name>
<password>admin</password>
</security>
<validation>
<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker"></valid-connection-checker>
<exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter"></exception-sorter>
</validation>
</datasource>
<drivers>
<driver name="postgresql" module="org.postgresql">
<xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class>
</driver>
</drivers>
</datasources>
module.xml ファイルの例は次のとおりです。
<module xmlns="urn:jboss:module:1.1" name="org.postgresql">
<resources>
<resource-root path="postgresql-9.1-902.jdbc4.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>
6.7.2. PostgreSQL XA のデータソースの例
例6.9
<datasources>
<xa-datasource jndi-name="java:jboss/PostgresXADS" pool-name="PostgresXADS">
<driver>postgresql</driver>
<xa-datasource-property name="ServerName">localhost</xa-datasource-property>
<xa-datasource-property name="PortNumber">5432</xa-datasource-property>
<xa-datasource-property name="DatabaseName">postgresdb</xa-datasource-property>
<security>
<user-name>admin</user-name>
<password>admin</password>
</security>
<validation>
<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker">
</valid-connection-checker>
<exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter">
</exception-sorter>
</validation>
</xa-datasource>
<drivers>
<driver name="postgresql" module="org.postgresql">
<xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class>
</driver>
</drivers>
</datasources>
module.xml ファイルの例は次のとおりです。
<module xmlns="urn:jboss:module:1.1" name="org.postgresql">
<resources>
<resource-root path="postgresql-9.1-902.jdbc4.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>
6.7.3. MySQL のデータソースの例
例6.10
<datasources>
<datasource jndi-name="java:jboss/MySqlDS" pool-name="MySqlDS">
<connection-url>jdbc:mysql://mysql-localhost:3306/jbossdb</connection-url>
<driver>mysql</driver>
<security>
<user-name>admin</user-name>
<password>admin</password>
</security>
<validation>
<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker"></valid-connection-checker>
<exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter"></exception-sorter>
</validation>
</datasource>
<drivers>
<driver name="mysql" module="com.mysql">
<xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
</driver>
</drivers>
</datasources>
module.xml ファイルの例は次のとおりです。
<module xmlns="urn:jboss:module:1.1" name="com.mysql">
<resources>
<resource-root path="mysql-connector-java-5.0.8-bin.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>
6.7.4. MySQL XA のデータソースの例
例6.11
<datasources>
<xa-datasource jndi-name="java:jboss/MysqlXADS" pool-name="MysqlXADS">
<driver>mysql</driver>
<xa-datasource-property name="ServerName">localhost</xa-datasource-property>
<xa-datasource-property name="DatabaseName">mysqldb</xa-datasource-property>
<security>
<user-name>admin</user-name>
<password>admin</password>
</security>
<validation>
<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker"></valid-connection-checker>
<exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter"></exception-sorter>
</validation>
</xa-datasource>
<drivers>
<driver name="mysql" module="com.mysql">
<xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
</driver>
</drivers>
</datasources>
module.xml ファイルの例は次のとおりです。
<module xmlns="urn:jboss:module:1.1" name="com.mysql">
<resources>
<resource-root path="mysql-connector-java-5.0.8-bin.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>
6.7.5. Oracle のデータソースの例
注記
例6.12
<datasources>
<datasource jndi-name="java:/OracleDS" pool-name="OracleDS">
<connection-url>jdbc:oracle:thin:@localhost:1521:XE</connection-url>
<driver>oracle</driver>
<security>
<user-name>admin</user-name>
<password>admin</password>
</security>
<validation>
<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleValidConnectionChecker"></valid-connection-checker>
<stale-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleStaleConnectionChecker"></stale-connection-checker>
<exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleExceptionSorter"></exception-sorter>
</validation>
</datasource>
<drivers>
<driver name="oracle" module="com.oracle">
<xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
</driver>
</drivers>
</datasources>
module.xml ファイルの例は次のとおりです。
<module xmlns="urn:jboss:module:1.1" name="com.oracle">
<resources>
<resource-root path="ojdbc6.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>
6.7.6. Oracle XA のデータソースの例
注記
重要
user は、JBoss から Oracle に接続するために定義されたユーザーです。
- GRANT SELECT ON sys.dba_pending_transactions TO user;
- GRANT SELECT ON sys.pending_trans$ TO user;
- GRANT SELECT ON sys.dba_2pc_pending TO user;
- GRANT EXECUTE ON sys.dbms_xa TO user; (パッチ済みの Oracle 10g R2、または Oracle 11g を使用する場合)またはGRANT EXECUTE ON sys.dbms_system TO user; (パッチされていない 11g 以前のバージョンの Oracle を使用する場合)
例6.13
<datasources>
<xa-datasource jndi-name="java:/XAOracleDS" pool-name="XAOracleDS">
<driver>oracle</driver>
<xa-datasource-property name="URL">jdbc:oracle:oci8:@tc</xa-datasource-property>
<security>
<user-name>admin</user-name>
<password>admin</password>
</security>
<xa-pool>
<is-same-rm-override>false</is-same-rm-override>
<no-tx-separate-pools />
</xa-pool>
<validation>
<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleValidConnectionChecker"></valid-connection-checker>
<stale-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleStaleConnectionChecker"></stale-connection-checker>
<exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleExceptionSorter"></exception-sorter>
</validation>
</xa-datasource>
<drivers>
<driver name="oracle" module="com.oracle">
<xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
</driver>
</drivers>
</datasources>
module.xml ファイルの例は次のとおりです。
<module xmlns="urn:jboss:module:1.1" name="com.oracle">
<resources>
<resource-root path="ojdbc6.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>
6.7.7. Microsoft SQLServer のデータソースの例
例6.14
<datasources>
<datasource jndi-name="java:/MSSQLDS" pool-name="MSSQLDS">
<connection-url>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=MyDatabase</connection-url>
<driver>sqlserver</driver>
<security>
<user-name>admin</user-name>
<password>admin</password>
</security>
<validation>
<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mssql.MSSQLValidConnectionChecker"></valid-connection-checker>
</validation>
</datasource>
<drivers>
<driver name="sqlserver" module="com.microsoft">
<xa-datasource-class>com.microsoft.sqlserver.jdbc.SQLServerXADataSource</xa-datasource-class>
</driver>
</datasources>
module.xml ファイルの例は次のとおりです。
<module xmlns="urn:jboss:module:1.1" name="com.microsoft">
<resources>
<resource-root path="sqljdbc4.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>
6.7.8. Microsoft SQLServer XA のデータソースの例
例6.15
<datasources>
<xa-datasource jndi-name="java:/MSSQLXADS" pool-name="MSSQLXADS">
<driver>sqlserver</driver>
<xa-datasource-property name="ServerName">localhost</xa-datasource-property>
<xa-datasource-property name="DatabaseName">mssqldb</xa-datasource-property>
<xa-datasource-property name="SelectMethod">cursor</xa-datasource-property>
<security>
<user-name>admin</user-name>
<password>admin</password>
</security>
<xa-pool>
<is-same-rm-override>false</is-same-rm-override>
</xa-pool>
<validation>
<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mssql.MSSQLValidConnectionChecker"></valid-connection-checker>
</validation>
</xa-datasource>
<drivers>
<driver name="sqlserver" module="com.microsoft">
<xa-datasource-class>com.microsoft.sqlserver.jdbc.SQLServerXADataSource</xa-datasource-class>
</driver>
</drivers>
</datasources>
module.xml ファイルの例は次のとおりです。
<module xmlns="urn:jboss:module:1.1" name="com.microsoft">
<resources>
<resource-root path="sqljdbc4.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>
6.7.9. IBM DB2 のデータソースの例
例6.16
<datasources>
<datasource jndi-name="java:/DB2DS" pool-name="DB2DS">
<connection-url>jdbc:db2:ibmdb2db</connection-url>
<driver>ibmdb2</driver>
<pool>
<min-pool-size>0</min-pool-size>
<max-pool-size>50</max-pool-size>
</pool>
<security>
<user-name>admin</user-name>
<password>admin</password>
</security>
<validation>
<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.db2.DB2ValidConnectionChecker"></valid-connection-checker>
<stale-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.db2.DB2StaleConnectionChecker"></stale-connection-checker>
<exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.db2.DB2ExceptionSorter"></exception-sorter>
</validation>
</datasource>
<drivers>
<driver name="ibmdb2" module="com.ibm">
<xa-datasource-class>com.ibm.db2.jdbc.DB2XADataSource</xa-datasource-class>
</driver>
</drivers>
</datasources>
module.xml ファイルの例は次のとおりです。
<module xmlns="urn:jboss:module:1.1" name="com.ibm">
<resources>
<resource-root path="db2jcc.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>
6.7.10. IBM DB2 XA のデータソースの例
例6.17
<datasources>
<xa-datasource jndi-name="java:/DB2XADS" pool-name="DB2XADS">
<driver>ibmdb2</driver>
<xa-datasource-property name="DatabaseName">ibmdb2db</xa-datasource-property>
<security>
<user-name>admin</user-name>
<password>admin</password>
</security>
<xa-pool>
<is-same-rm-override>false</is-same-rm-override>
</xa-pool>
<validation>
<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.db2.DB2ValidConnectionChecker"></valid-connection-checker>
<stale-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.db2.DB2StaleConnectionChecker"></stale-connection-checker>
<exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.db2.DB2ExceptionSorter"></exception-sorter>
</validation>
<recovery>
<recovery-plugin class-name="org.jboss.jca.core.recovery.ConfigurableRecoveryPlugin">
<config-property name="EnableIsValid">false</config-property>
<config-property name="IsValidOverride">false</config-property>
<config-property name="EnableClose">false</config-property>
</recovery-plugin>
</recovery>
</xa-datasource>
<drivers>
<driver name="ibmdb2" module="com.ibm">
<xa-datasource-class>com.ibm.db2.jcc.DB2XADataSource</xa-datasource-class>
</driver>
</drivers>
</datasources>
module.xml ファイルの例は次のとおりです。
<module xmlns="urn:jboss:module:1.1" name="com.ibm">
<resources>
<resource-root path="db2jcc.jar"/>
<resource-root path="db2jcc_license_cisuz.jar"/>
<resource-root path="db2jcc_license_cu.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>
6.7.11. Sybase データソースの例
例6.18
<datasources>
<datasource jndi-name="java:jboss/SybaseDB" pool-name="SybaseDB" enabled="true">
<connection-url>jdbc:sybase:Tds:localhost:5000/DATABASE?JCONNECT_VERSION=6</connection-url>
<security>
<user-name>admin</user-name>
<password>admin</password>
</security>
<validation>
<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.sybase.SybaseValidConnectionChecker"></valid-connection-checker>
<exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.sybase.SybaseExceptionSorter"></exception-sorter>
</validation>
</datasource>
<drivers>
<driver name="sybase" module="com.sybase">
<datasource-class>com.sybase.jdbc2.jdbc.SybDataSource</datasource-class>
<xa-datasource-class>com.sybase.jdbc3.jdbc.SybXADataSource</xa-datasource-class>
</driver>
</drivers>
</datasources>
module.xml ファイルの例は次のとおりです。
<module xmlns="urn:jboss:module:1.1" name="com.sybase">
<resources>
<resource-root path="jconn2.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>
6.7.12. Sybase XA データソースの例
例6.19
<datasources>
<xa-datasource jndi-name="java:jboss/SybaseXADS" pool-name="SybaseXADS" enabled="true">
<xa-datasource-property name="NetworkProtocol">Tds</xa-datasource-property>
<xa-datasource-property name="ServerName">myserver</xa-datasource-property>
<xa-datasource-property name="PortNumber">4100</xa-datasource-property>
<xa-datasource-property name="DatabaseName">mydatabase</xa-datasource-property>
<security>
<user-name>admin</user-name>
<password>admin</password>
</security>
<validation>
<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.sybase.SybaseValidConnectionChecker"></valid-connection-checker>
<exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.sybase.SybaseExceptionSorter"></exception-sorter>
</validation>
</xa-datasource>
<drivers>
<driver name="sybase" module="com.sybase">
<datasource-class>com.sybase.jdbc2.jdbc.SybDataSource</datasource-class>
<xa-datasource-class>com.sybase.jdbc3.jdbc.SybXADataSource</xa-datasource-class>
</driver>
</drivers>
</datasources>
module.xml ファイルの例は次のとおりです。
<module xmlns="urn:jboss:module:1.1" name="com.sybase">
<resources>
<resource-root path="jconn2.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>
第7章 モジュールの設定
7.1. はじめに
7.1.1. モジュール
- 静的モジュール
- 静的モジュールは、アプリケーションサーバーの
EAP_HOME/modules/ディレクトリに事前定義されます。各サブディレクトリは 1 つのモジュールを表し、1 つまたは複数の JAR ファイルと設定ファイル (module.xml) が含まれます。モジュールの名前は、module.xmlファイルで定義されます。アプリケーションサーバーで提供されるすべての API (Java EE API や JBoss Logging などの他の API を含む) は、静的モジュールとして提供されます。カスタム静的モジュールの作成は、同じサードパーティーライブラリを使用する同じサーバー上に多くのアプリケーションがデプロイされる場合に役立ちます。これらのライブラリを各アプリケーションとバンドルする代わりに、JBoss 管理者はこれらのライブラリが含まれるモジュールを作成およびインストールできます。アプリケーションは、カスタム静的モジュールで明示的な依存関係を宣言できます。 - 動的モジュール
- 動的モジュールは、各 JAR または WAR デプロイメント (または、EAR 内のサブデプロイメント) に対してアプリケーションサーバーによって作成およびロードされます。動的モジュールの名前は、デプロイされたアーカイブの名前から派生されます。デプロイメントはモジュールとしてロードされるため、依存関係を設定でき、他のデプロイメントが依存関係として使用できます。
7.1.2. グローバルモジュール
7.1.3. モジュールの依存関係
例7.1 モジュールの依存関係
- モジュール A がモジュール C への明示的な依存関係を宣言する場合。
- または、モジュール B がモジュール B の依存関係をモジュール C でエクスポートする場合。
7.1.4. サブデプロイメントクラスローダーの分離
7.2. すべてのデプロイメントに対してサブデプロイメントモジュール隔離を無効化
警告
サーバーを停止する
JBoss Enterprise Application Platform サーバーを停止します。サーバー設定ファイルを開く
サーバー設定ファイルをテキストエディターで開きます。このファイルは、管理対象ドメインまたはスタンドアロンサーバーによって異なります。また、デフォルト以外の場所とファイル名が使用されることがあります。デフォルトの設定ファイルは、domain/configuration/domain.xml(管理対象ドメインの場合) とstandalone/configuration/standalone.xml(スタンドアロンサーバー) です。EE サブシステム設定を特定する
設定ファイルの EE サブシステム設定要素を特定します。設定ファイルの<profile>要素には、複数のサブシステム要素が含まれます。EE サブシステム要素にはurn:jboss:domain:ee:1.0のネームスペースがあります。<profile> ... <subsystem xmlns="urn:jboss:domain:ee:1.0" /> ...
デフォルト設定には単一の自己終了タグがありますが、カスタム設定は、以下のような個別の開始タグと終了タグ (タグ間に別の要素が含まれることがあります) を持つことがあります。<subsystem xmlns="urn:jboss:domain:ee:1.0" ></subsystem>
自己終了タグを置き換える (必要な場合)
EE サブシステム要素が単一の自己終了タグである場合は、以下のように適切な開始タグと終了タグで置き換えます。<subsystem xmlns="urn:jboss:domain:ee:1.0" ></subsystem>
ear-subdeployments-isolated 要素を追加する
以下のように、ear-subdeployments-isolated要素を EE サブシステム要素の子として追加し、falseの内容を追加します。<subsystem xmlns="urn:jboss:domain:ee:1.0" ><ear-subdeployments-isolated>false</ear-subdeployments-isolated></subsystem>
サーバーを起動する
JBoss Enterprise Application Platform サーバーを再起動し、新しい設定で実行します。
サーバーが、すべてのデプロイメントに対して、サブデプロイメントモジュールの隔離が無効化された状態で実行されます。
7.3. すべてのデプロイメントへのモジュールの追加
要件
- グローバルモジュールとして設定するモジュールの名前を覚えておく必要があります。JBoss Enterprise Application Platform 6 に含まれる静的モジュールのリストは 「含まれるモジュール」 を参照してください。モジュールが他のデプロイメントにある場合は 「動的モジュールの名前付け」 を参照してモジュール名を判断してください。
手順7.1 グローバルモジュールのリストへモジュールを追加する
- 管理コンソールへログインします。「管理コンソールへログイン」
- EE Subsystem パネルへ移動します。

図7.1 EE Subsystem パネル
- Global Modules にある Add ボタンをクリックすると、Create Module ダイアログが表示されます。
- モジュールの名前と任意でモジュールスロットを入力します。
- Save ボタンをクリックして新しいグローバルモジュールを追加するか、 Cancel リンクをクリックしてキャンセルします。
- Save ボタンをクリックすると、ダイアログが閉じられ指定のモジュールがグローバルモジュールのリストに追加されます。
- Cancel をクリックするとダイアログが閉じられ、何も変更されません。
グローバルモジュールのリストに追加されたモジュールは各デプロイメントへの依存関係に追加されます。
7.4. 参考資料
7.4.1. 含まれるモジュール
asm.asmch.qos.cal10ncom.google.guavacom.h2database.h2com.sun.jsf-implcom.sun.jsf-implcom.sun.xml.bindcom.sun.xml.messaging.saajgnu.getoptjavaee.apijavax.activation.apijavax.annotation.apijavax.apijavax.ejb.apijavax.el.apijavax.enterprise.apijavax.enterprise.deploy.apijavax.faces.apijavax.faces.apijavax.inject.apijavax.interceptor.apijavax.jms.apijavax.jws.apijavax.mail.apijavax.management.j2ee.apijavax.persistence.apijavax.resource.apijavax.rmi.apijavax.security.auth.message.apijavax.security.jacc.apijavax.servlet.apijavax.servlet.jsp.apijavax.servlet.jstl.apijavax.transaction.apijavax.validation.apijavax.ws.rs.apijavax.wsdl4j.apijavax.xml.bind.apijavax.xml.jaxp-providerjavax.xml.registry.apijavax.xml.rpc.apijavax.xml.soap.apijavax.xml.stream.apijavax.xml.ws.apijlinenet.sourceforge.cssparsernet.sourceforge.htmlunitnet.sourceforge.nekohtmlnu.xomorg.antlrorg.apache.antorg.apache.commons.beanutilsorg.apache.commons.cliorg.apache.commons.codecorg.apache.commons.collectionsorg.apache.commons.ioorg.apache.commons.langorg.apache.commons.loggingorg.apache.commons.poolorg.apache.cxforg.apache.httpcomponentsorg.apache.james.mime4jorg.apache.log4jorg.apache.neethiorg.apache.santuario.xmlsecorg.apache.velocityorg.apache.ws.scoutorg.apache.ws.securityorg.apache.ws.xmlschemaorg.apache.xalanorg.apache.xercesorg.apache.xml-resolverorg.codehaus.jackson.jackson-core-aslorg.codehaus.jackson.jackson-jaxrsorg.codehaus.jackson.jackson-mapper-aslorg.codehaus.jackson.jackson-xcorg.codehaus.woodstoxorg.dom4jorg.hibernateorg.hibernate.enversorg.hibernate.infinispanorg.hibernate.validatororg.hornetqorg.hornetq.raorg.infinispanorg.infinispan.cachestore.jdbcorg.infinispan.cachestore.remoteorg.infinispan.client.hotrodorg.jacorborg.javassistorg.jaxenorg.jboss.as.aggregateorg.jboss.as.appclientorg.jboss.as.cliorg.jboss.as.clustering.apiorg.jboss.as.clustering.commonorg.jboss.as.clustering.ejb3.infinispanorg.jboss.as.clustering.implorg.jboss.as.clustering.infinispanorg.jboss.as.clustering.jgroupsorg.jboss.as.clustering.serviceorg.jboss.as.clustering.singletonorg.jboss.as.clustering.web.infinispanorg.jboss.as.clustering.web.spiorg.jboss.as.cmporg.jboss.as.connectororg.jboss.as.consoleorg.jboss.as.controllerorg.jboss.as.controller-clientorg.jboss.as.deployment-repositoryorg.jboss.as.deployment-scannerorg.jboss.as.domain-add-userorg.jboss.as.domain-http-error-contextorg.jboss.as.domain-http-interfaceorg.jboss.as.domain-managementorg.jboss.as.eeorg.jboss.as.ee.deploymentorg.jboss.as.ejb3org.jboss.as.embeddedorg.jboss.as.host-controllerorg.jboss.as.jacorborg.jboss.as.jaxrorg.jboss.as.jaxrsorg.jboss.as.jdrorg.jboss.as.jmxorg.jboss.as.jpaorg.jboss.as.jpa.hibernateorg.jboss.as.jpa.hibernateorg.jboss.as.jpa.hibernate.infinispanorg.jboss.as.jpa.openjpaorg.jboss.as.jpa.spiorg.jboss.as.jpa.utilorg.jboss.as.jsr77org.jboss.as.loggingorg.jboss.as.mailorg.jboss.as.management-client-contentorg.jboss.as.messagingorg.jboss.as.modclusterorg.jboss.as.namingorg.jboss.as.networkorg.jboss.as.osgiorg.jboss.as.platform-mbeanorg.jboss.as.pojoorg.jboss.as.process-controllerorg.jboss.as.protocolorg.jboss.as.remotingorg.jboss.as.sarorg.jboss.as.securityorg.jboss.as.serverorg.jboss.as.standaloneorg.jboss.as.threadsorg.jboss.as.transactionsorg.jboss.as.weborg.jboss.as.webservicesorg.jboss.as.webservices.server.integrationorg.jboss.as.webservices.server.jaxrpc-integrationorg.jboss.as.weldorg.jboss.as.xtsorg.jboss.classfilewriterorg.jboss.com.sun.httpserverorg.jboss.common-coreorg.jboss.dmrorg.jboss.ejb-clientorg.jboss.ejb3org.jboss.iiop-clientorg.jboss.integration.ext-contentorg.jboss.interceptororg.jboss.interceptor.spiorg.jboss.invocationorg.jboss.ironjacamar.apiorg.jboss.ironjacamar.implorg.jboss.ironjacamar.jdbcadaptersorg.jboss.jandexorg.jboss.jaxbintrosorg.jboss.jboss-transaction-spiorg.jboss.jsfunit.coreorg.jboss.jtsorg.jboss.jts.integrationorg.jboss.loggingorg.jboss.logmanagerorg.jboss.logmanager.log4jorg.jboss.marshallingorg.jboss.marshalling.riverorg.jboss.metadataorg.jboss.modulesorg.jboss.mscorg.jboss.nettyorg.jboss.osgi.deploymentorg.jboss.osgi.frameworkorg.jboss.osgi.resolverorg.jboss.osgi.spiorg.jboss.osgi.vfsorg.jboss.remoting3org.jboss.resteasy.resteasy-atom-providerorg.jboss.resteasy.resteasy-cdiorg.jboss.resteasy.resteasy-jackson-providerorg.jboss.resteasy.resteasy-jaxb-providerorg.jboss.resteasy.resteasy-jaxrsorg.jboss.resteasy.resteasy-jsapiorg.jboss.resteasy.resteasy-multipart-providerorg.jboss.saslorg.jboss.security.negotiationorg.jboss.security.xacmlorg.jboss.shrinkwrap.coreorg.jboss.staxmapperorg.jboss.stdioorg.jboss.threadsorg.jboss.vfsorg.jboss.weld.apiorg.jboss.weld.coreorg.jboss.weld.spiorg.jboss.ws.apiorg.jboss.ws.commonorg.jboss.ws.cxf.jbossws-cxf-clientorg.jboss.ws.cxf.jbossws-cxf-factoriesorg.jboss.ws.cxf.jbossws-cxf-serverorg.jboss.ws.cxf.jbossws-cxf-transports-httpserverorg.jboss.ws.jaxws-clientorg.jboss.ws.jaxws-jboss-httpserver-httpspiorg.jboss.ws.native.jbossws-native-coreorg.jboss.ws.native.jbossws-native-factoriesorg.jboss.ws.native.jbossws-native-servicesorg.jboss.ws.saaj-implorg.jboss.ws.spiorg.jboss.ws.tools.commonorg.jboss.ws.tools.wsconsumeorg.jboss.ws.tools.wsprovideorg.jboss.xborg.jboss.xnioorg.jboss.xnio.nioorg.jboss.xtsorg.jdomorg.jgroupsorg.joda.timeorg.junitorg.omg.apiorg.osgi.coreorg.picketboxorg.picketlinkorg.python.jython.standaloneorg.scannotation.scannotationorg.slf4jorg.slf4j.extorg.slf4j.implorg.slf4j.jcl-over-slf4jorg.w3c.css.sacsun.jdk
7.4.2. 動的モジュールの名前付け
- WAR および JAR ファイルのデプロイメントは次の形式で名前が付けられます。
deployment.DEPLOYMENT_NAME
例えば、inventory.warのモジュール名はdeployment.inventory.warとなり、store.jarのモジュール名はdeployment.store.jarとなります。 - エンタープライズアーカイブ内のサブデプロイメントは次の形式で名前が付けられます。
deployment.EAR_NAME.SUBDEPLOYMENT_NAME
たとえば、エンタープライズアーカイブaccounts.ear内にあるreports.warのサブデプロイメントのモジュール名はdeployment.accounts.ear.reports.warになります。
第8章 グローバル値
8.1. バルブについて
8.2. グローバルバルブについて
8.3. オーセンティケーターバルブについて
org.apache.catalina.authenticator.AuthenticatorBase のサブクラスで、authenticate() メソッドを上書きします。
8.4. グローバルバルブのインストール
要件:
- バルブを作成し、JAR ファイルにパッケージ化する必要があります。
- モジュールに対して
module.xmlファイルを作成する必要があります。module.xmlファイルの例は 「コアモジュールとしての JDBC ドライバーのインストール」 を参照してください。
手順8.1 グローバルモジュールのインストール
モジュールインストールディレクトリの作成
インストールするモジュールのディレクトリはアプリケーションサーバーの modules ディレクトリに作成する必要があります。EAP_HOME/modules/system/layers/base/MODULENAME/main
$ mkdir -P /usr/share/jboss/modules/system/layers/base/MyValveModule/main
ファイルのコピー
JAR およびmodule.xmlファイルを 1. で作成したディレクトリにコピーします。$ cp MyValves.jar modules.xml /usr/share/jboss/modules/system/layers/base/MyValveModule/main
8.5. グローバルバルブの設定
手順8.2 グローバルバルブの設定
バルブの有効化
add操作を使用して新しいバルブエントリーを追加します。/subsystem=web/valve=VALVENAME:add(module="MODULENAME",class-name="CLASSNAME")
次の値を指定する必要があります。VALVENAME(アプリケーション設定でこのバルブの参照に使用される名前)MODULENAME(設定される値が含まれるモジュール)CLASSNAME(モジュールの特定バルブのクラス名)
/subsystem=web/valve=clientlimiter:add(module="clientlimitermodule",class-name="org.jboss.samplevalves.restrictedUserAgentsValve")
オプション: パラメーターの指定
バルブに設定パラメーターがある場合は、add-param操作で指定します。/subsystem=web/valve=testvalve:add-param(param-name="NAME", param-value="VALUE")
/subsystem=web/valve=testvalve:add-param( param-name="restricteduseragents", param-value="^.*MS Web Services Client Protocol.*$" )
第9章 アプリケーションデプロイメント
9.1. アプリケーションデプロイメントについて
管理
開発
9.2. 管理コンソールでのデプロイ
9.2.1. 管理コンソースでのアプリケーションデプロイメント管理
9.2.2. 管理コンソールを使用したアプリケーションのデプロイ
手順9.1 管理コンソールの使用によるアプリケーションのデプロイメント
管理コンソールの Manage Deployments パネルに移動します。
- コンソールの右上から Runtime タブを選択します。
- コンソールの左側のメニューから Deployments → Manage Deployments オプションを選択します。
アプリケーションのデプロイメント
デプロイメントの方法は、デプロイメント先がスタンドアロンサーバーインスタンスまたは管理対象ドメインのどちらになるかによって異なります。スタンドアロンサーバーインスタンスへのデプロイメント
Deployments の表に利用可能なアプリケーションデプロイメントとその状態が表示されます。
図9.1 利用可能なデプロイメント
スタンドアロンサーバーインスタンスでのアプリケーションの有効化
Deployments の表のEnable ボタンをクリックし、アプリケーションのデプロイメントを有効にします。確定
confirm ボタンをクリックし、サーバーインスタンスでのアプリケーションの有効化を確定します。
図9.2 スタンドアロンサーバーで利用可能なデプロイメント
管理対象ドメインへのデプロイメント
Deployment Content 部には、 Content Repository の表が含まれており、利用可能なアプリケーションデプロイメントとその状態がすべて表示されます。
図9.3 管理対象ドメインで利用可能なデプロイメント
管理対象ドメインでのアプリケーションの有効化
Content Repository の表から Add to Groups ボタンをクリックします。サーバーグループの選択
アプリケーションを追加したいサーバーグループのボックスにチェックマークを付け、Save ボタンをクリックして続行します。
図9.4 アプリケーションデプロイメントでのサーバーグループの選択
確定
Server Group Deployments タブをクリックし、Server Groups の表を表示します。お使いのアプリケーションは先ほど選択したサーバーグループにデプロイされています。
図9.5 サーバーグループにアプリケーションがデプロイされているかを確認
該当のサーバーあるいはサーバーグループにアプリケーションがデプロイされます。
9.2.3. 管理コンソールを使用したアプリケーションのアンデプロイ
手順9.2 管理コンソールを使用してアプリケーションをアンデプロイ
管理コンソールの Manage Deployments パネルに移動します。
- コンソールの右上から Runtime タブを選択します。
- コンソールの左側のメニューから Deployments → Manage Deployments オプションを選択します。
アプリケーションのアンデプロイ
アンデプロイする方法は、デプロイ先がスタンドアロンサーバーインスタンスまたは管理対象ドメインのどちらになるかによって異なります。スタンドアロンサーバーインスタンスからのアンデプロイ
Deployments の表で利用可能なアプリケーションデプロイメントとその状態が表示されます。
図9.6 利用可能なデプロイメント
スタンドアロンサーバーインスタンスでのアプリケーションの無効化
Deployments の表の Disable ボタンをクリックし、アプリケーションを無効にします。アプリケーションの無効化を確定
confirm ボタンをクリックし、サーバーインスタンスでのアプリケーションの無効化を確定します。
図9.7 アプリケーションの無効化を確定
管理対象ドメインからのアンデプロイ
Deployment Content 部には、 Content Repository の表が含まれており、利用可能なアプリケーションデプロイメントとその状態がすべて表示されます。
図9.8 管理対象ドメインで利用可能なデプロイメント
管理対象ドメインのアプリケーションを無効化
Server Group Deployments をクリックすると、サーバーグループとそのグループにデプロイされたアプリケーションの状態が表示されます。
図9.9 サーバーグループのデプロイメント
サーバーグループの選択
Server Group の表からサーバー名をクリックし、そのサーバーからアプリケーションをアンデプロイします。選択したサーバーからアプリケーションを無効化
disable ボタンをクリックし、選択したサーバーのアプリケーションを無効にします。アプリケーションの無効化を確定
confirm ボタンをクリックし、サーバーインスタンスでのアプリケーションの無効化を確定します。
図9.10 アプリケーションの無効化を確定
残りのサーバーグループを繰り返しアンデプロイ
必要に応じて、他のサーバーグループにも同じ手順を繰り返します。Deployments の表の各サーバーグループに対してアプリケーションの状態が確定されます。
図9.11 サーバーグループにアプリケーションがデプロイされているかを確認
該当のサーバーあるいはサーバーグループからアプリケーションがアンデプロイされます。
9.3. 管理 CLI でのデプロイ
9.3.1. 管理 CLI でのアプリケーションデプロイメントの管理
9.3.2. 管理 CLI を使用した管理対象ドメインでのアプリケーションのデプロイ
手順9.3 管理対象ドメインにアプリケーションをデプロイ
deployコマンドの実行管理 CLI で、アプリケーションデプロイメントへのパスを指定してdeployコマンドを入力します。すべてのサーバーグループをデプロイするために--all-server-groupsパラメーターを追加します。[domain@localhost:9999 /]
deploy /path/to/test-application.war --all-server-groups'test-application.war' deployed successfully.- または、
--server-groupsパラメーターを追加して、デプロイメントに固有なサーバーグループを定義します。[domain@localhost:9999 /]
deploy /path/to/test-application.war --server-groups server_group_1, server_group_2'test-application.war' deployed successfully.
指定のアプリケーションが、管理対象ドメインのサーバーグループにデプロイされます。
9.3.3. 管理 CLI を使用した管理対象ドメインでのアプリケーションのアンデプロイ
手順9.4 管理対象ドメインでアプリケーションをアンデプロイ
undeployコマンドの実行管理 CLI で、アプリケーションデプロイメントのファイル名を指定してundeployコマンドを入力します。--all-relevant-server-groupsパラメーターを追加すると、アプリケーションがデプロイされたすべてのサーバーグループからアプリケーションをアンデプロイできます。[domain@localhost:9999 /]undeploytest-application.war--all-relevant-server-groupsSuccessfully undeployed test-application.war.
指定のアプリケーションがアンデプロイされます。
9.3.4. 管理 CLI を使用したスタンドアロンサーバーでのアプリケーションのデプロイ
手順9.5 スタンドアロンサーバーにアプリケーションをデプロイ
deployコマンドの実行管理 CLI で、アプリケーションデプロイメントへのパスを指定してdeployコマンドを入力します。[standalone@localhost:9999 /]
deploy /path/to/test-application.war'test-application.war' deployed successfully.
指定のアプリケーションが、スタンドアロンサーバーにデプロイされます。
9.3.5. 管理 CLI を使用したスタンドアロンサーバーでのアプリケーションのアンデプロイ
手順9.6 スタンドアロンサーバーのアプリケーションをアンデプロイ
undeployコマンドの実行管理 CLI で、アプリケーションデプロイメントのファイル名を指定してundeployコマンドを入力します。[standalone@localhost:9999 /]
undeploy test-application.warSuccessfully undeployed test-application.war.
指定のアプリケーションがアンデプロイされます。
9.4. デプロイメントスキャナーでのデプロイ
9.4.1. デプロイメントスキャナーでのアプリケーションデプロイメント管理
9.4.2. デプロイメントスキャナーを使用したスタンドアロンサーバーインスタンスへのアプリケーションのデプロイ
このタスクでは、デプロイメントスキャナーを使用してスタンドアロンサーバーインスタンスにアプリケーションをデプロイする方法を説明します。「アプリケーションデプロイメントについて」 で説明があるとおり、この方法は開発者の利便性のために保持され、本番稼働環境でのアプリケーション管理には、管理コンソールと管理 CLI の方法が推奨されます。
手順9.7 デプロイメントスキャナーを使用してアプリケーションをデプロイ
デプロイメントフォルダーへのコンテンツのコピー
アプリケーションファイルを、EAP_HOME/standalone/deployments/にあるデプロイメントフォルダーにコピーします。デプロイメントスキャンモード
アプリケーションデプロイメントは、デプロイメントスキャナーモードが自動または手動であるかによって異なります。自動デプロイメント
デプロイメントスキャナーは、フォルダー状態の変更を検出し、「デプロイメントスキャナーマーカーファイルのリファレンス」 で定義されたようにマーカーファイルを作成します。手動デプロイメント
デプロイメントスキャナーでは、デプロイメントプロセスをトリガーするマーカーファイルが必要です。以下の例では、Unixtouchコマンドを使用して新しい.dodeployファイルを作成します。例9.1
touchコマンドを使用したデプロイ[user@host bin]$
touch$EAP_HOME/standalone/deployments/example.war.dodeploy
アプリケーションファイルがアプリケーションサーバーにデプロイされます。マーカーファイルがデプロイメントフォルダーで作成され、デプロイメントが正常に終了したことを示します。アプリケーションは、管理コンソールで、Enabled と示されます。
例9.2 デプロイメント後のデプロイメントフォルダーコンテンツ
example.war example.war.deployed
9.4.3. デプロイメントスキャナーを使用したスタンドアロンサーバーインスタンスのアプリケーションのアンデプロイ
このタスクでは、デプロイメントスキャナーを使用してデプロイされたスタンドアロンサーバーインスタンスからアプリケーションをアンデプロイする方法を説明します。「アプリケーションデプロイメントについて」 で説明があるとおり、この方法は開発者の利便性のために保持され、本番稼働環境でのアプリケーション管理には管理コンソールと管理 CLI の方法が推奨されます。
注記
手順9.8 1 つの方法を用いてアプリケーションをアンデプロイ
アプリケーションのアンデプロイ
アプリケーションをデプロイする方法は 2 つありますが、アプリケーションをデプロイメントフォルダーから削除する場合と、デプロイメントの状態のみを変更する場合によって、使用する方法が異なります。マーカーファイルの削除によるアンデプロイ
デプロイされたアプリケーションのexample.war.deployedマーカーファイルを削除して、ランタイムからアプリケーションのアンデプロイを開始するためにデプロイメントスキャナーをトリガーします。- 結果
- デプロイメントスキャナーは、アプリケーションをアンデプロイし、
example.war.undeployedマーカーファイルを作成します。アプリケーションは、デプロイメントフォルダーに維持されます。
アプリケーションの削除によるアンデプロイ
デプロイメントディレクトリからアプリケーションを削除して、ランタイムからアプリケーションのアンデプロイを開始するためにデプロイメントスキャナーをトリガーします。- 結果
- デプロイメントスキャナーは、アプリケーションをアンデプロイし、
filename.filetype.undeployedマーカーファイルを作成します。アプリケーションはデプロイメントフォルダーに存在しません。
アプリケーションファイルは、アプリケーションサーバーからアンデプロイされ、管理コンソールの Deployments 画面に表示されません。
9.4.4. デプロイメントスキャナーを使用したスタンドアロンサーバーインスタンスへのアプリケーションの再デプロイ
このタスクでは、デプロイメントスキャナーを使用してデプロイされたスタンドアロンサーバーインスタンスへアプリケーションを再デプロイする方法を説明します。「アプリケーションデプロイメントについて」 で説明があるとおり、この方法は開発者の利便性のために保持され、本番稼働環境でのアプリケーション管理には管理コンソールと管理 CLI の方法が推奨されます。
手順9.9 アプリケーションをスタンドアロンサーバーへ再デプロイ
アプリケーションの再デプロイ
デプロイメントスキャナーでデプロイされたアプリケーションを再デプロイするには、3 つの方法があります。これらの方法はデプロイメントサイクルを開始するためにデプロイメントスキャナーをトリガーし、個々の設定に応じて選択できます。マーカーファイルの変更による再デプロイ
マーカーファイルのアクセスと変更タイムスタンプを変更して、デプロイメントスキャナーの再デプロイメントをトリガーします。次の Linux の例では、touchコマンドが使用されます。例9.3
touchコマンドを使用した再デプロイ[user@host bin]$
touchEAP_HOME/standalone/deployments/example.war.dodeploy結果デプロイメントスキャナーは、マーカーファイルの変更を検出し、アプリケーションを再デプロイします。新しい
.deployedファイルマーカーは以前のファイルを置き換えます。新しい
.dodeployマーカーファイルの作成による再デプロイ新しい.dodeployマーカーファイルを作成することにより、デプロイメントスキャナーが再デプロイをトリガーします。「デプロイメントスキャナーを使用したスタンドアロンサーバーインスタンスへのアプリケーションのデプロイ」に記載された手動デプロイメント手順を参照してください。マーカーファイルの削除による再デプロイ
「デプロイメントスキャナーマーカーファイルのリファレンス」で説明されているように、デプロイされたアプリケーションの.deployedマーカーファイルを削除すると、アンデプロイメントがトリガーされ、.undeployedマーカーが作成されます。アンデプロイメントマーカーを削除すると、デプロイメントサイクルが再びトリガーされます。詳細については、「デプロイメントスキャナーを使用したスタンドアロンサーバーインスタンスのアプリケーションのアンデプロイ」を参照してください。
アプリケーションファイルが再デプロイされます。
9.4.5. デプロイメントスキャナーマーカーファイルのリファレンス
マーカーファイルは、デプロイメントスキャナーサブシステムの一部です。これらのファイルは、スタンドアロンサーバーインスタンスのデプロイメントディレクリー内にあるアプリケーションの状態をマークします。マーカーファイルは、アプリケーションと同じ名前を持ち、ファイル接尾辞はアプリケーションのデプロイメントの状態を示します。以下の表に、各マーカーファイルのタイプおよび応答の定義を示します。
例9.4 マーカーファイル例
testapplication.war という名前のアプリケーションの正常にデプロイされたインスタンスのマーカーファイルを示します。
testapplication.war.deployed表9.1 マーカーファイルタイプ定義
| ファイル名接尾辞 | 生成元 | 説明 |
|---|---|---|
.dodeploy | ユーザー生成 | コンテンツをランタイムにデプロイまたは再デプロイする必要があることを示します。 |
.skipdeploy | ユーザー生成 | アプリケーションの自動デプロイを無効にします。展開されたコンテンツの自動デプロイメントを一時的にブロックする方法として役に立ち、不完全なコンテンツ編集がライブでプッシュされることを防ぎます。スキャナーは zip 形式のコンテンツに対する処理中の変更を検出し、完了するまで待機しますが、zip 形式のコンテンツとともに使用できます。 |
.isdeploying | システム生成 | デプロイメントの開始を示します。デプロイメントプロセスが完了すると、マーカーファイルが削除されます。 |
.deployed | システム生成 | コンテンツがデプロイされたことを示します。このファイルが削除された場合、コンテンツはアンデプロイされます。 |
.failed | システム生成 | デプロイメントの失敗を示します。マーカーファイルには、失敗の原因に関する情報が含まれます。マーカーファイルが削除された場合、コンテンツは自動デプロイメントで再び可視状態になります。 |
.isundeploying | システム生成 | .deployed ファイルの削除に対する応答を示します。コンテンツはアンデプロイされ、完了時にマーカーは自動的に削除されます。 |
.undeployed | システム生成 | コンテンツがアンデプロイされたことを示します。マーカーファイルを削除しても、コンテンツの再デプロイメントには影響ありません。 |
.pending | システム生成 | デプロイメントの指示が、検出された問題の解決を待っているサーバーに送信されます。このマーカーは、グローバルデプロイメントロードブロックとして機能します。この状態が存在する場合、スキャナーは他のコンテンツをデプロイまたはデプロイ解除するようサーバーに指示しません。 |
9.4.6. デプロイメントスキャナー属性のリファレンス
write-attribute 操作を使用して設定できます。設定オプションの詳細については、トピック 「管理 CLI でのデプロイメントスキャナーの設定」 を参照してください。
表9.2 デプロイメントスキャナー属性
| 名前 | 説明 | タイプ | デフォルト値 |
|---|---|---|---|
auto-deploy-exploded | .dodeploy マーカーファイルなしで、展開されたコンテンツの自動デプロイメントを許可します。基本的な開発シナリオに対してのみ推奨され、開発者またはオペレーティングシステムによる変更中に、展開されたアプリケーションデプロイメントが行われないようにします。 | Boolean | False |
auto-deploy-xml | .dodeploy マーカーファイルなしでの XML コンテンツの自動デプロイメントを許可します。 | Boolean | True |
auto-deploy-zipped | .dodeploy マーカーファイルなしでの zip 形式のコンテンツの自動デプロイメントを許可します。 | Boolean | True |
deployment-timeout | デプロイメントスキャナーでデプロイメントをキャンセルするまでのデプロイメント試行許可時間 (秒単位)。 | Long | 60 |
path | スキャンする実際のファイルシステムパスを定義します。relative-to 属性が指定された場合は、path 値が、そのディレクトリーまたはパスに対する相対追加分として機能します。 | String | Deployments |
relative-to | サーバー設定 XML ファイルの paths セクションで定義されたファイルシステムパスの参照。 | String | jboss.server.base.dir |
scan-enabled | scan-interval により起動時にアプリケーションの自動スキャンを許可します。 | Boolean | True |
scan-interval | リポジトリーのスキャン間の時間 (ミリ秒単位)。値が 1 未満の場合は、スキャナーが起動時にのみ動作します。 | Int | 5000 |
9.4.7. デプロイメントスキャナーの設定
9.4.8. 管理 CLI でのデプロイメントスキャナーの設定
デプロイメントスキャナーを設定するには複数の方法がありますが、管理 CLI を使用すると、バッチスクリプトを使用して、またはリアルタイムで属性を公開および変更できます。read-attribute および write-attribute グローバルコマンドライン操作を使用することにより、デプロイメントスキャナーの動作を変更できます。デプロイメントスキャナー属性に関する詳細は、トピック「デプロイメントスキャナー属性のリファレンス」で定義されています。
standalone.xml で参照できます。
<subsystem xmlns="urn:jboss:domain:deployment-scanner:1.1">
<deployment-scanner path="deployments" relative-to="jboss.server.base.dir" scan-interval="5000"/>
</subsystem>
手順9.10 デプロイメントスキャナーの設定
設定するデプロイメントスキャナー属性を決定
管理 CLI を使用してデプロイメントスキャナーを設定するには、最初に正しい属性名を公開する必要があります。これは、ルートノードでread-resources操作を使用するか、またはcdコマンドを使用してサブシステム子ノードに移動することにより、行えます。また、このレベルでlsコマンドを使用して属性を表示することもできます。read-resource操作を使用して、デプロイメントスキャナー属性を公開read-resource操作を使用して、デフォルトのデプロイメントスキャナーリソースで定義された属性を公開します。[standalone@localhost:9999 /]/subsystem=deployment-scanner/scanner=default:read-resource { "outcome" => "success", "result" => { "auto-deploy-exploded" => false, "auto-deploy-xml" => true, "auto-deploy-zipped" => true, "deployment-timeout" => 60, "path" => "deployments", "relative-to" => "jboss.server.base.dir", "scan-enabled" => true, "scan-interval" => 5000 } }lsコマンドを使用してデプロイメントスキャナー属性を公開lsコマンドにオプションの-l引数を指定して、サブシステムノード属性、値、およびタイプを含む結果の表を表示します。lsコマンドとその引数の詳細を確認するには、ls --helpと入力して CLI ヘルプエントリを表示します。管理 CLI のヘルプメニューの詳細については、トピック「管理 CLI でのヘルプの使用」を参照してください。[standalone@localhost:9999 /] ls -l /subsystem=deployment-scanner/scanner=default ATTRIBUTE VALUE TYPE auto-deploy-exploded false BOOLEAN auto-deploy-xml true BOOLEAN auto-deploy-zipped true BOOLEAN deployment-timeout 60 LONG path deployments STRING relative-to jboss.server.base.dir STRING scan-enabled true BOOLEAN scan-interval 5000 INT
write-attribute操作を使用してデプロイメントスキャナーを設定変更する属性の名前を決定したら、write-attributeを使用して、書き込む属性名と新しい値を指定します。以下のサンプルは、すべて子ノードレベルで実行されます。サンプルを使用するには、cdコマンドとタブ補完を使用してデフォルトスキャナーノードを表示し、移動します。[standalone@localhost:9999 /] cd subsystem=deployment-scanner/scanner=default
展開されたコンテンツの自動デプロイメントを有効化
write-attribute操作を使用して、展開されたアプリケーションコンテンツの自動デプロイメントを有効にします。[standalone@localhost:9999 scanner=default] :write-attribute(name=auto-deploy-exploded,value=true) {"outcome" => "success"}XML コンテンツの自動デプロイメントを無効化
write-attribute操作を使用して XML アプリケーションコンテンツの自動デプロイメントを無効にします。[standalone@localhost:9999 scanner=default] :write-attribute(name=auto-deploy-xml,value=false) {"outcome" => "success"}zip 形式のコンテンツの自動デプロイメントを無効化
write-attributeコマンドを使用して zip 形式のアプリケーションコンテンツの自動デプロイメントを無効にします。[standalone@localhost:9999 scanner=default] :write-attribute(name=auto-deploy-zipped,value=false) {"outcome" => "success"}パス属性の設定
write-attribute操作を使用して、パス属性を変更し、例のnewpathname値を監視するデプロイメントスキャナーの新しいパス名に置き換えます。変更を反映するにはサーバーでリロードする必要があります。[standalone@localhost:9999 scanner=default] :write-attribute(name=path,value=newpathname) { "outcome" => "success", "response-headers" => { "operation-requires-reload" => true, "process-state" => "reload-required" } }相対パス属性の設定
write-attribute操作を使用して、設定 XML ファイルのパスセクションで定義されたファイルシステムパスに対する相対参照を変更します。変更を反映するには、サーバーでリロードする必要があります。[standalone@localhost:9999 scanner=default] :write-attribute(name=relative-to,value=new.relative.dir) { "outcome" => "success", "response-headers" => { "operation-requires-reload" => true, "process-state" => "reload-required" } }デプロイメントスキャナーの無効化
write-attribute操作を使用して、scan-enabled値を false に設定することにより、デプロイメントスキャナーを無効にします。[standalone@localhost:9999 scanner=default] :write-attribute(name=scan-enabled,value=false) {"outcome" => "success"}スキャン間隔の変更
write-attribute操作を使用してスキャン間隔を 5000 ミリ秒から 10000 ミリ秒に変更します。[standalone@localhost:9999 scanner=default] :write-attribute(name=scan-interval,value=10000) {"outcome" => "success"}
設定の変更が、デプロイメントスキャナーに保存されます。
9.5. Maven でのデプロイ
9.5.1. Maven によるアプリケーションデプロイメントの管理
9.5.2. Maven によるアプリケーションのデプロイ
ここでは、Maven を使用してアプリケーションをデプロイする方法を説明します。ここの例では、JBoss Enterprise Application Platform 6 Quick Starts コレクションに含まれる jboss-as-helloworld.war アプリケーションを使用します。helloworld プロジェクトには、jboss-as-maven-plugin を初期化する POM ファイルが含まれます。このプラグインは、アプリケーションサーバーに対してアプリケーションをデプロイおよびアンデプロイする単純な操作を提供します。
手順9.11 Maven によるアプリケーションのデプロイ
ターミナルウィンドウで Maven デプロイコマンドを実行
ターミナルセッションを開き、quickstart サンプルが含まれるディレクリに移動します。- Maven デプロイコマンドを実行してアプリケーションをデプロイします。アプリケーションがすでに実行されている場合、アプリケーションは再デプロイされます。
[localhost]$ mvn package jboss-as:deploy
アプリケーションデプロイメントの確認
ターミナルウィンドウでの結果の参照
デプロイメントは、ターミナルウィンドウで操作ログを参照して確認できます。例9.5 Maven での helloworld アプリケーションの確認
[INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------------ [INFO] Total time: 3 seconds [INFO] Finished at: Mon Oct 10 17:22:05 EST 2011 [INFO] Final Memory: 21M/343M [INFO] ------------------------------------------------------------------------
サーバーターミナルウィンドウでの結果の参照
また、デプロイメントは、アクティブアプリケーションサーバーインスタンスのステータスストリームで確認することもできます。例9.6 アプリケーションサーバーでの helloworld アプリケーションの確認
17:22:04,922 INFO [org.jboss.as.server.deployment] (pool-1-thread-3) Content added at location /home/username/EAP_HOME/standalone/data/content/2c/39607b0c8dbc6a36585f72866c1bcfc951f3ff/content 17:22:04,924 INFO [org.jboss.as.server.deployment] (MSC service thread 1-1) Starting deployment of "jboss-as-helloworld.war" 17:22:04,954 INFO [org.jboss.weld] (MSC service thread 1-3) Processing CDI deployment: jboss-as-helloworld.war 17:22:04,973 INFO [org.jboss.weld] (MSC service thread 1-2) Starting Services for CDI deployment: jboss-as-helloworld.war 17:22:04,979 INFO [org.jboss.weld] (MSC service thread 1-4) Starting weld service 17:22:05,051 INFO [org.jboss.web] (MSC service thread 1-2) registering web context: /jboss-as-helloworld 17:22:05,064 INFO [org.jboss.as.server.controller] (pool-1-thread-3) Deployed "jboss-as-helloworld.war"
アプリケーションが、アプリケーションサーバーにデプロイされます。
9.5.3. Maven によるアプリケーションのアンデプロイ
ここでは、Maven を使用してアプリケーションをアンデプロイする方法を説明します。例では、Enterprise Application Server Quick Starts コレクションに含まれる jboss-as-helloworld.war アプリケーションを使用します。helloworld プロジェクトには、jboss-as-maven-plugin を初期化する POM ファイルが含まれます。このプラグインは、アプリケーションサーバーに対してアプリケーションをデプロイおよびアンデプロイする単純な操作を提供します。
手順9.12 Maven によるアプリケーションのアンデプロイ
ターミナルウィンドウで Maven デプロイコマンドを実行
ターミナルセッションを開き、quickstart サンプルが含まれるディレクリに移動します。例9.7 helloworld アプリケーションディレクリーに移動します。
[localhost]$ cd /path/to/EAP_Quickstarts/helloworld
- Maven アンデプロイコマンドを実行してアプリケーションをアンデプロイします。
[localhost]$ mvn jboss-as:undeploy
アプリケーションのアンデプロイを確認
ターミナルウィンドウでの結果の参照
アンデプロイメントは、ターミナルウィンドウの操作ログを参照して確認できます。例9.8 Maven での helloworld アプリケーションの確認
[INFO] ------------------------------------------------------------------------ [INFO] Building JBoss AS Quickstarts: Helloworld [INFO] task-segment: [jboss-as:undeploy] [INFO] ------------------------------------------------------------------------ [INFO] [jboss-as:undeploy {execution: default-cli}] [INFO] Executing goal undeploy for /home/username/EAP_Quickstarts/helloworld/target/jboss-as-helloworld.war on server localhost (127.0.0.1) port 9999. Oct 10, 2011 5:33:02 PM org.jboss.remoting3.EndpointImpl <clinit> INFO: JBoss Remoting version 3.2.0.Beta2 Oct 10, 2011 5:33:02 PM org.xnio.Xnio <clinit> INFO: XNIO Version 3.0.0.Beta2 Oct 10, 2011 5:33:02 PM org.xnio.nio.NioXnio <clinit> INFO: XNIO NIO Implementation Version 3.0.0.Beta2 [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------------ [INFO] Total time: 1 second [INFO] Finished at: Mon Oct 10 17:33:02 EST 2011 [INFO] Final Memory: 11M/212M [INFO] ------------------------------------------------------------------------サーバーターミナルウィンドウでの結果の参照
また、アンデプロイメントは、アクティブアプリケーションサーバーインスタンスのステータスストリームで確認することもできます。例9.9 アプリケーションサーバーでの helloworld アプリケーションの確認
17:33:02,334 INFO [org.jboss.weld] (MSC service thread 1-3) Stopping weld service 17:33:02,342 INFO [org.jboss.as.server.deployment] (MSC service thread 1-3) Stopped deployment jboss-as-helloworld.war in 15ms 17:33:02,352 INFO [org.jboss.as.server.controller] (pool-1-thread-5) Undeployed "jboss-as-helloworld.war"
アプリケーションが、アプリケーションサーバーからアンデプロイされます。
9.6. JBoss Enterprise Application Platform でデプロイされたアプリケーションの順序を制御
手順9.13 EAP 6.0.X におけるデプロイメント順序の制御
- サーバーの起動または停止時に、順番にアプリケーションをデプロイおよびアンデプロイする CLI スクリプトを作成します。
- CLI はバッチモードの概念をサポートします。バッチモードでは、コマンドや操作をグループ化でき、グループ化したコマンドや操作をアトミックユニットとして一緒に実行できます。1 つ以上のコマンドや操作が失敗すると、正常に実行された他のコマンドや操作はロールバックされます。
手順9.14 EAP 6.1.X におけるデプロイメント順序の制御
jboss-all.xmlファイルがない場合は、app.ear/META-INFフォルダーに作成します。app.earはアプリケーションアーカイブで、このアーカイブの前にデプロイされる他のアプリケーションアーカイブに依存します。- 次のように、このファイルに
jboss-deployment-dependenciesエントリーを作成します。下記では、framework.earは依存されるアプリケーションアーカイブで、app.earアプリケーションアーカイブの前にデプロイする必要があります。<jboss umlns="urn:jboss:1.0"> <jboss-deployment-dependencies xmlns="urn:jboss:deployment-dependencies:1.0"> <dependency name="framework.ear" /> </jboss-deployment-dependencies> </jboss>
第10章 JBoss Enterprise Application Platform のセキュア化
10.1. セキュリティーサブシステムについて
ディープコピーサブジェクトモードが無効化されている場合 (デフォルト)、セキュリティーデータ構造をコピーすると、データ構造全体をコピーするのではなく、オリジナルが参照されます。この動作はより効率的ですが、フラッシュまたはログアウトの操作によって同一 ID の複数のスレッドが件名を消去すると、データの破損が発生する傾向にあります。
java.security.Security クラスに適用されるシステム全体のセキュリティープロパティーを設定できます。
セキュリティードメインとは、認証、承認、監査、およびマッピングを制御するために単一または複数のアプリケーションが使用する Java Authentication and Authorization Service (JAAS) 宣言型セキュリティー設定のセットです。デフォルトでは、jboss-ejb-policy、jboss-web-policy、および other の 3 つのセキュリティードメインが含まれています。アプリケーションの必要性に対応するため、セキュリティードメインは必要に応じていくつでも作成できます。
10.2. セキュリティーサブシステムの構造について
例10.1 セキュリティーサブシステムの設定例
<subsystem xmlns="urn:jboss:domain:security:1.2">
<security-management>
...
</security-management>
<security-domains>
<security-domain name="other" cache-type="default">
<authentication>
<login-module code="Remoting" flag="optional">
<module-option name="password-stacking" value="useFirstPass"/>
</login-module>
<login-module code="RealmUsersRoles" flag="required">
<module-option name="usersProperties" value="${jboss.domain.config.dir}/application-users.properties"/>
<module-option name="rolesProperties" value="${jboss.domain.config.dir}/application-roles.properties"/>
<module-option name="realm" value="ApplicationRealm"/>
<module-option name="password-stacking" value="useFirstPass"/>
</login-module>
</authentication>
</security-domain>
<security-domain name="jboss-web-policy" cache-type="default">
<authorization>
<policy-module code="Delegating" flag="required"/>
</authorization>
</security-domain>
<security-domain name="jboss-ejb-policy" cache-type="default">
<authorization>
<policy-module code="Delegating" flag="required"/>
</authorization>
</security-domain>
</security-domains>
<vault>
...
</vault>
</subsystem>
<security-management>、 <subject-factory> および <security-properties> 要素はデフォルト設定では存在しません。<subject-factory> および <security-properties> 要素は JBoss Enterprise Application Platform 6.1 およびそれ以降のバージョンで廃止になりました。
10.3. セキュリティーサブシステムの設定
- <security-management>
- このセクションはセキュリティーサブシステムのハイレベルの挙動を上書きします。各設定は任意です。ディープコピーサブジェクトモード以外で、これらの設定を変更することはほとんどありません。
オプション 説明 deep-copy-subject-mode スレッドの安全性を高めるため、セキュリティートークンへコピーまたはリンクするかどうかを指定します。authentication-manager-class-name 使用する代替の AuthenticationManager 実装クラス名を指定します。default-callback-handler-class-name ログインモジュールで使用される CallbackHandler 実装のグローバルクラス名を指定します。authorization-manager-class-name 使用する代替の AuthorizationManager 実装クラス名を指定します。audit-manager-class-name 使用する代替の AuditManager 実装クラス名を指定します。identity-trust-manager-class-name 使用する代替の IdentityTrustManager 実装クラス名を指定します。mapping-manager-class-name 使用する MappingManager 実装クラス名を指定します。 - <subject-factory>
- サブジェクトファクトリはサブジェクトインスタンスの作成を制御します。呼び出し側を検証するため、認証マネージャーを使用することがあります。サブジェクトファクトリは、主に JCA コンポーネントがサブジェクトを確立するために使用されます。サブジェクトファクトリを変更する必要はあまりありません。
- <security-domains>
- 複数のセキュリティードメインを保持するコンテナ要素です。セキュリティードメインには認証、承認、マッピング、監査モジュール、JASPI 認証、および JSSE 設定の情報が含まれることがあります。アプリケーションはセキュリティードメインを指定してセキュリティー情報を管理します。
- <security-properties>
- java.security.Security クラスに設定されるプロパティーの名前と値が含まれます。
10.4. ディープコピーサブジェクトモードについて
10.5. ディープコピーサブジェクトモードの有効化
手順10.1 管理コンソールからディープコピーセキュリティーモードを有効化
管理コンソールにログインします。
通常、管理コンソールは http://127.0.0.1:9990/ のような URL で使用できます。環境に合わせて適切な URL を使用してください。管理対象ドメイン: 適切なプロファイルを選択します。
管理対象ドメインではプロファイルごとにセキュリティーサブシステムが設定されているため、各プロファイルに対して個別にディープコピーセキュリティーモードを有効または無効にできます。プロファイルを選択するには、コンソール表示の右上にある Profiles ラベルをクリックし、左上にある Profiles 選択ボックスより変更したいプロファイルを選択します。Security Subsystem 設定メニューを開きます。
管理コンソールの右にある Security メニュー項目を展開し、Security Subsystem リンクをクリックします。deep-copy-subject-mode の値を変更します。
Edit ボタンをクリックします。Deep Copy Subjects: の横にあるボックスにチェックを入れ、ディープコピーサブジェクトモードを有効にします。
管理 CLI を使用してこのオプションを有効にしたい場合、以下のコマンドの 1 つを使用します。
例10.2 管理対象ドメイン
/profile=full/subsystem=security:write-attribute(name=deep-copy-subject-mode,value=TRUE)
例10.3 スタンドアロンサーバー
/subsystem=security:write-attribute(name=deep-copy-subject-mode,value=TRUE)
10.6. セキュリティードメイン
10.6.1. セキュリティードメインについて
10.6.2. Picketbox について
- 「承認について」 およびアクセス制御
- プリンシパル、ロール、および属性の 「セキュリティーマッピングについて」
10.6.3. 認証について
10.6.4. セキュリティードメインでの認証の設定
手順10.2 セキュリティードメインの認証設定
セキュリティードメインの詳細ビューを開きます。
管理コンソールの右上にある Profiles ラベルをクリックします。管理対象ドメインで、Profile ビューの左上にある Profile 選択ボックスから変更するプロファイルを選択します。左側の Security メニュー項目をクリックし、展開されたメニューで Security Domains をクリックします。編集するセキュリティードメインの View リンクをクリックします。認証サブシステム設定に移動します。
ビューの最上部の Authentication ラベルをクリックします (まだ設定されていない場合)。設定領域が Login Modules と Details の 2 つの領域に分割されます。ログインモジュールは、設定の基本単位です。セキュリティードメインには複数のログインモジュールを含めることができ、各ログインモジュールには複数の属性とオプションを含めることができます。認証モジュールを追加します。
Add ボタンをクリックして JAAS 認証モジュールを追加します。モジュールの詳細を記入します。Code がモジュールのクラス名です。Flags は、モジュールが同じセキュリティードメイン内で他の認証モジュールにどのように関係するかを制御します。フラグの説明Java Enterprise Edition 6 の仕様では、セキュリティーモジュールの次の説明が提供されます。次のリストは、http://docs.oracle.com/javase/6/docs/technotes/guides/security/jaas/JAASRefGuide.html#AppendixA に記載されています。詳細については、このドキュメントを参照してください。
フラグ 詳細 required LoginModule は成功する必要があります。成功または失敗すると、LoginModule リストで認証が引き続き続行されます。requisite LoginModule は成功する必要があります。成功すると、LoginModule リストで認証が続行されます。失敗すると、制御がアプリケーションにすぐに戻ります (認証は LoginModule リストで続行されません)。sufficient LoginModule は成功する必要はありません。成功した場合は、制御がアプリケーションにすぐに戻ります (認証は LoginModule リストで続行されません)。失敗すると、認証は LoginModule リストで続行されます。optional LoginModule は成功する必要がありません。成功または失敗した場合、認証は LoginModule リストで続行されます。モジュールを追加したら、画面の Details セクションで Edit をクリックすることにより、Code または Flags を変更できます。Attributes タブが選択されていることを確認します。モジュールオプションを追加、編集、または削除します (任意)。
モジュールにオプションを追加する必要がある場合は、Login Modules リストのエントリーをクリックし、ページの Details セクションの Module Options タブを選択します。Add ボタンをクリックし、オプションのキーと値を提供します。すでに存在するオプションを編集するには、キーをクリックするか、変更します。Remove ボタンを使用してオプションを削除します。
認証モジュールが、セキュリティードメインに追加され、セキュリティードメインを使用するアプリケーションですぐに利用できます。
jboss.security.security_domain モジュールのオプション
デフォルトでは、セキュリティードメインに定義された各ログインモジュールには jboss.security.security_domain モジュールオプションが自動的に追加されます。既知のオプションのみが定義されるようチェックを行うログインモジュールでは、このオプションが問題の原因となります。このようなログインモジュールの 1 つが IBM Kerberos ログインモジュールの com.ibm.security.auth.module.Krb5LoginModule です。
true に設定します。以下を起動パラメーターに追加します。
-Djboss.security.disable.secdomain.option=true
10.6.5. 承認について
10.6.6. セキュリティードメインにおける承認の設定
手順10.3 セキュリティードメインの承認設定
セキュリティードメインの詳細ビューを開きます。
管理コンソールの右上にある Profiles ラベルをクリックします。管理対象ドメインで、Profile ビューの左上にある Profile 選択ボックスから変更するプロファイルを選択します。左側の Security メニュー項目をクリックし、展開されたメニューで Security Domains をクリックします。編集するセキュリティードメインの View リンクをクリックします。承認サブシステム設定に移動します。
ビューの最上部にある Authorization ラベルをクリックします (選択されていない場合)。設定領域が Policies と Details の 2 つの領域に分割されます。ログインモジュールは、設定の基本単位です。セキュリティードメインには複数の承認ポリシーを含めることができ、各ログインモジュールには複数の属性とオプションを含めることができます。ポリシーを追加します。
Add ボタンをクリックして JAAS 承認ポリシーモジュールを追加します。モジュールの詳細を記入します。Code がモジュールのクラス名です。Flags は、モジュールが同じセキュリティードメイン内で他の承認ポリシーモジュールにどのように関係するかを制御します。フラグの説明Java Enterprise Edition 6 の仕様では、セキュリティーモジュールの次の説明が提供されます。次のリストは、http://docs.oracle.com/javase/6/docs/technotes/guides/security/jaas/JAASRefGuide.html#AppendixA に記載されています。詳細については、このドキュメントを参照してください。
フラグ 詳細 required LoginModule は成功する必要があります。成功または失敗すると、LoginModule リストで承認が引き続き続行されます。requisite LoginModule は成功する必要があります。成功すると、LoginModule リストで承認が続行されます。失敗すると、制御がアプリケーションにすぐに戻ります (承認は LoginModule リストで続行されません)。sufficient LoginModule は成功する必要はありません。成功した場合は、制御がアプリケーションにすぐに戻ります (承認は LoginModule リストで続行されません)。失敗すると、承認は LoginModule リストで続行されます。optional LoginModule は成功する必要がありません。成功または失敗した場合、承認は LoginModule リストで続行されます。モジュールを追加したら、画面の Details セクションで Edit をクリックすることにより、Code または Flags を変更できます。Attributes タブが選択されていることを確認します。モジュールオプションを追加、編集、または削除します (任意)。
モジュールにオプションを追加する必要がある場合は、Login Modules リストのエントリーをクリックし、ページの Details セクションの Module Options タブを選択します。Add ボタンをクリックし、オプションのキーと値を提供します。すでに存在するオプションを編集するには、キーをクリックするか、変更します。Remove ボタンを使用してオプションを削除します。
承認ポリシーモジュールが、セキュリティードメインに追加され、セキュリティードメインを使用するアプリケーションですぐに利用できます。
10.6.7. セキュリティー監査について
10.6.8. セキュリティー監査の設定
手順10.4 セキュリティードメインのセキュリティー監査の設定
セキュリティードメインの詳細ビューを開きます。
管理コンソールの右上にある Profiles ラベルをクリックします。スタンドアロンサーバーでは、タブに Profile ラベルがあります。管理対象ドメインでは、Profile ビューの左上にある Profile 選択ボックスから変更するプロファイルを選択します。左側の Security メニュー項目をクリックし、展開されたメニューで Security Domains をクリックします。編集するセキュリティードメインの View リンクをクリックします。監査サブシステム設定に移動します。
ビューの最上部の Audit ラベルをクリックします (まだ設定されていない場合)。設定領域が Provider Modules と Details の 2 つの領域に分割されます。プロバイダーモジュールは、設定の基本単位です。セキュリティードメインには複数のプロバイダーモジュールを含めることができ、各ログインモジュールには属性とオプションを含めることができます。プロバイダーモジュールを追加します。
Add ボタンをクリックしてプロアクティブモジュールを追加します。Code セクションに、プロバイダーモジュールのクラス名を入力します。モジュールを追加したら、画面の Details セクションで Edit をクリックすることにより、Code を変更できます。Attributes タブが選択されていることを確認します。モジュールの挙動を確認します。
監査モジュールの目的は、セキュリティーサブシステムのイベントを監視する方法を提供することです。ログファイルの記述、メールによる通知、またはその他の監査メカニズムによって監視を行うことが可能です。たとえば、JBoss Enterprise Application Server にはデフォルトでLogAuditProviderモジュールが含まれています。この監査モジュールを前述の手順に従って有効にすると、EAP_HOMEディレクトリ内のlogサブフォルダーにあるaudit.logファイルにセキュリティー通知を書き込みます。前述の手順がLogAuditProviderのコンテキスト内で動作するか確認するには、通知が発生するようなアクションを実行した後、監査ログファイルをチェックします。含まれるセキュリティー監査プロバイダーモジュールの完全一覧は 「含まれるセキュリティー監査プロバイダーモジュール」 を参照してください。モジュールオプションを追加、編集、または削除します (任意)。
モジュールにオプションを追加する必要がある場合は、Modules リストのエントリーをクリックし、ページの Details セクションの Module Options タブを選択します。Add ボタンをクリックし、オプションのキーと値を提供します。すでに存在するオプションを編集するには、Remove ラベルをクリックして削除するか、Add ボタンをクリックして正しいオプションで再び追加します。
セキュリティー監査モジュールは、セキュリティードメインに追加され、セキュリティードメインを使用するアプリケーションですぐに利用できます。
10.6.9. セキュリティーマッピングについて
10.6.10. セキュリティードメインでのセキュリティーマッピングの設定
手順10.5 セキュリティードメインでのセキュリティーマッピングの設定
セキュリティードメインの詳細ビューを開きます。
管理コンソールの右上にある Profiles ラベルをクリックします。スタンドアロンサーバーでは、タブに Profile ラベルがあります。管理対象ドメインでは、Profile ビューの左上にある Profile 選択ボックスから変更するプロファイルを選択します。左側の Security メニュー項目をクリックし、展開されたメニューで Security Domains をクリックします。編集するセキュリティードメインの View リンクをクリックします。マッピングサブシステム設定に移動します。
ビューの最上部の Mapping ラベルをクリックします (まだ設定されていない場合)。設定領域が Modules と Details の 2 つの領域に分割されます。マッピングモジュールは、設定の基本単位です。セキュリティードメインには複数のマッピングモジュールを含めることができ、各ログインモジュールには複数の属性とオプションを含めることができます。モジュールを追加します。
Add ボタンをクリックしてセキュリティーマッピングモジュールを追加します。モジュールの詳細を記入します。Code がモジュールのクラス名です。Type フィールドは、このモジュールが実行するマッピングのタイプを示します。許可される値は principal、role、attribute、または credential です。モジュールを追加したら、画面の Details セクションで Edit をクリックすることにより、Code または Type を変更できます。Attributes タブが選択されていることを確認します。モジュールオプションを追加、編集、または削除します (任意)。
モジュールにオプションを追加する必要がある場合は、Modules リストのエントリーをクリックし、ページの Details セクションの Module Options タブを選択します。Add ボタンをクリックし、オプションのキーと値を提供します。すでに存在するオプションを編集するには、Remove ラベルキーをクリックして削除するか、新しい値で再び追加します。Remove ボタンを使用してオプションを削除します。
セキュリティーマッピングモジュールは、セキュリティードメインに追加され、セキュリティードメインを使用するアプリケーションですぐに利用できます。
10.6.11. アプリケーションでのセキュリティードメインの使用
アプリケーションでセキュリティードメインを使用するには、最初にサーバーの設定ファイルまたはアプリケーションの記述子ファイルのいずれかにドメインを設定する必要があります。その後、使用する EJB に必要なアノテーションを追加する必要があります。ここでは、アプリケーションでセキュリティードメインを使用するために必要な手順について取り上げます。
手順10.6 セキュリティードメインを使用するようアプリケーションを設定
セキュリティードメインの定義
セキュリティードメインは、サーバーの設定ファイルまたはアプリケーションの記述子ファイルのいずれかに定義できます。サーバーの設定ファイルへセキュリティードメインを設定
セキュリティードメインは、サーバーの設定ファイルのsecurityサブシステムに設定されます。JBoss Enterprise Application Platform インスタンスが管理対象ドメインで実行されている場合、domain/configuration/domain.xmlファイルになります。JBoss Enterprise Application Platform インスタンスがスタンドアロンサーバーとして実行されている場合はstandalone/configuration/standalone.xmlファイルになります。other、jboss-web-policyおよびjboss-ejb-policyセキュリティードメインはデフォルトとして JBoss Enterprise Application Platform 6 に提供されます。次の XML の例は、サーバーの設定ファイルのsecurityサブシステムよりコピーされました。<subsystem xmlns="urn:jboss:domain:security:1.2"> <security-domains> <security-domain name="other" cache-type="default"> <authentication> <login-module code="Remoting" flag="optional"> <module-option name="password-stacking" value="useFirstPass"/> </login-module> <login-module code="RealmDirect" flag="required"> <module-option name="password-stacking" value="useFirstPass"/> </login-module> </authentication> </security-domain> <security-domain name="jboss-web-policy" cache-type="default"> <authorization> <policy-module code="Delegating" flag="required"/> </authorization> </security-domain> <security-domain name="jboss-ejb-policy" cache-type="default"> <authorization> <policy-module code="Delegating" flag="required"/> </authorization> </security-domain> </security-domains> </subsystem>管理コンソールまたは CLI を使用して、追加のセキュリティードメインを必要に応じて設定することができます。アプリケーションの記述子ファイルにセキュリティードメインを設定
セキュリティードメインはアプリケーションのWEB-INF/web.xmlファイルにある<jboss-web>要素の<security-domain>子要素に指定されます。次の例はmy-domainという名前のセキュリティードメインを設定します。<jboss-web> <security-domain>my-domain</security-domain> </jboss-web>これがWEB-INF/jboss-web.xml記述子に指定できる多くの設定の 1 つになります。
EJB へ必要なアノテーションを追加
@SecurityDomainおよび@RolesAllowedアノテーションを使用してセキュリティーを EJB に設定します。次の EJBコードの例は、guestロールのユーザーによるotherセキュリティードメインへのアクセスを制限します。package example.ejb3; import java.security.Principal; import javax.annotation.Resource; import javax.annotation.security.RolesAllowed; import javax.ejb.SessionContext; import javax.ejb.Stateless; import org.jboss.ejb3.annotation.SecurityDomain; /** * Simple secured EJB using EJB security annotations * Allow access to "other" security domain by users in a "guest" role. */ @Stateless @RolesAllowed({ "guest" }) @SecurityDomain("other") public class SecuredEJB { // Inject the Session Context @Resource private SessionContext ctx; /** * Secured EJB method using security annotations */ public String getSecurityInfo() { // Session context injected using the resource annotation Principal principal = ctx.getCallerPrincipal(); return principal.toString(); } }その他のコード例は、Red Hat カスタマーポータルより入手できる JBoss Enterprise Application Platform 6 Quickstarts バンドルのejb-securityクイックスタートを参照してください。
10.6.12. JACC (Java Authorization Contract for Containers)
10.6.12.1. JACC (Java Authorization Contract for Containers) について
10.6.12.2. JACC (Java Authorization Contract for Containers) のセキュリティーの設定
jboss-web.xml を編集する必要があります。
セキュリティードメインに JACC サポートを追加するには、required フラグセットで JACC 承認ポリシーをセキュリティードメインの承認スタックへ追加します。以下は JACC サポートを持つセキュリティードメインの例になりますが、セキュリティードメインは 直接 XML には設定されず、管理コンソールまたは管理 CLI で設定されます。
<security-domain name="jacc" cache-type="default">
<authentication>
<login-module code="UsersRoles" flag="required">
</login-module>
</authentication>
<authorization>
<policy-module code="JACC" flag="required"/>
</authorization>
</security-domain>
jboss-web.xml は デプロイメントの META-INF/ または WEB-INF/ ディレクトリに存在し、Web コンテナに対する追加の JBoss 固有の設定を格納し、上書きします。JACC が有効になっているセキュリティードメインを使用するには、<security-domain> 要素が含まれるようにし、 さらに <use-jboss-authorization> 要素を true に設定する必要があります。以下は、上記の JACC セキュリティードメインを使用するよう適切に設定されているアプリケーションになります。
<jboss-web>
<security-domain>jacc</security-domain>
<use-jboss-authorization>true</use-jboss-authorization>
</jboss-web>
セキュリティードメインと JACC を使用するよう EJB を設定する方法は Web アプリケーションの場合とは異なります。EJB の場合、ejb-jar.xml 記述子にてメソッドまたはメソッドのグループ上でメソッドパーミッションを宣言できます。<ejb-jar> 要素内では、すべての子 <method-permission> 要素に JACC ロールに関する情報が含まれます。詳細は設定例を参照してください。EJBMethodPermission クラスは Java Enterprise Edition 6 API の一部で、http://docs.oracle.com/javaee/6/api/javax/security/jacc/EJBMethodPermission.html で説明されています。
例10.4 EJB の JACC メソッドパーミッション例
<ejb-jar>
<method-permission>
<description>The employee and temp-employee roles may access any method of the EmployeeService bean </description>
<role-name>employee</role-name>
<role-name>temp-employee</role-name>
<method>
<ejb-name>EmployeeService</ejb-name>
<method-name>*</method-name>
</method>
</method-permission>
</ejb-jar>
<security> 子要素の jboss-ejb3.xml 記述子に宣言されます。セキュリティードメインの他に、EJB が実行されるプリンシパルを変更する run-as プリンシパル を指定することもできます。
例10.5 EJB におけるセキュリティードメイン宣言の例
<security> <ejb-name>*</ejb-name> <security-domain>myDomain</s:security-domain> <run-as-principal>myPrincipal</s:run-as-principal> </s:security>
10.6.13. JASPI (Java Authentication SPI for Containers)
10.6.13.1. JASPI (Java Authentication SPI for Containers) のセキュリティーについて
10.6.13.2. JASPI (Java Authentication SPI for Containers) のセキュリティーの設定
<authentication-jaspi> 要素をセキュリティードメインに追加します。設定は標準的な認証モジュールと似ていますが、ログインモジュール要素は <login-module-stack> 要素で囲まれています。設定の構成は次のとおりです。
例10.6 authentication-jaspi 要素の構成
<authentication-jaspi> <login-module-stack name="..."> <login-module code="..." flag="..."> <module-option name="..." value="..."/> </login-module> </login-module-stack> <auth-module code="..." login-module-stack-ref="..."> <module-option name="..." value="..."/> </auth-module> </authentication-jaspi>
EAP_HOME/domain/configuration/domain.xml または EAP_HOME/standalone/configuration/standalone.xml へ直接追加する必要があります。
10.7. 管理インターフェースセキュリティー
10.7.1. デフォルトのユーザーセキュリティー設定
JBoss Enterprise Application Platform 6 のすべての管理インターフェースはデフォルトで保護されます。このセキュリティーには、2 つの形式があります。
- ローカルインターフェースは、ローカルクライアントとローカルクライアントが接続するサーバーとの間の SASL コントラクトによって保護されます。このセキュリティーメカニズムは、ローカルファイルシステムにアクセスするクライアントの機能に基づきます。ローカルシステムへアクセスできるとクライアントによるユーザーの追加が可能で、他のセキュリティーメカニズムを無効にするよう設定を変更できるからです。これにより、ファイルシステムへ物理的にアクセスできると、他のセキュリティーメカニズムが不要になるという原則が厳守されます。このメカニズムは 4 つの手順で実現されます。
注記
HTTP を使用してローカルホストへ接続する場合でも、HTTP のアクセスはリモートと見なされます。- ローカル SASL メカニズムを用いて認証する要求が含まれるメッセージをクライアントがサーバーに送信します。
- サーバーはワンタイムトークンを生成し、固有のファイルに書き込み、ファイルのフルパスが含まれるメッセージをクライアントへ送信します。
- クライアントはファイルよりトークンを読み取り、サーバーへ送信し、ファイルシステムへローカルアクセスできるかを検証します。
- サーバーはトークンを検証し、ファイルを削除します。
- ローカル HTTP クライアントを含むリモートクライアントはレルムベースのセキュリティーを使用します。管理インターフェースを使用して JBoss Enterprise Application Platform 6 をリモートで設定するパーミッションを持つデフォルトのレルムは
ManagementRealmです。このレルム (またはユーザーが作成したレルム) にユーザーを追加できるスクリプトが提供されます。ユーザーの追加の詳細については、JBoss Enterprise Application Platform 6 のインストールガイドの章「JBoss Enterprise Application Platform 6 を初めて使用」を参照してください。ユーザーごとに、ユーザー名、ハッシュ化されたパスワード、およびレルムがファイルに格納されます。- スタンドアロンサーバー
JPP_HOME/standalone/configuration/mgmt-users.properties
mgmt-users.propertiesの内容はマスクされていますが、機密ファイルとして取り扱うようにしてください。ファイルモードを、ファイル所有者による読み書きアクセスのみが許可される600に設定することが推奨されます。
10.7.2. 管理インターフェースの詳細設定の概要
EAP_HOME/domain/configuration/host.xml または EAP_HOME/standalone/configuration/standalone.xml の管理インターフェース設定は、ホストコントローラープロセスのバインド先となるネットワークインターフェース、利用可能な管理インターフェースのタイプ、各インターフェースでユーザー認証に使用する認証システムのタイプを制御します。本トピックでは、ご使用の環境に合わせて管理インターフェースを設定する方法について説明します。
<management> 要素と、以下の 3 つの設定可能な子要素で構成されます。セキュリティーレルムと送信接続はそれぞれ最初に定義されてから、管理インターフェースに属性として適用されます。
<security-realms><outbound-connections><management-interfaces>
セキュリティーレルムは、管理 API、管理 CLI、または Web ベースの管理コンソールを介して JBoss Enterprise Application Platform の管理を許可されているユーザーの認証と認証を行います。
ManagementRealm と ApplicationRealm です。これらのセキュリティレルムはそれぞれ -users.properties ファイルを使用してユーザーおよびハッシュ化されたパスワードを保管し、-roles.properties でユーザーとロール間のマッピングを保管します。サポートは LDAP 対応のセキュリティーレルムにも含まれています
注記
一部のセキュリティーレルムは、LDAP サーバーなどの外部インターフェースに接続します。送信接続は、この接続の確立方法を定義します。 事前に定義された接続タイプ ldap-connection は、LDAP サーバーに接続して資格情報を検証するための必須およびオプションの属性をすべて設定します。
管理インターフェースには、JBoss Enterprise Application Platform の接続および設定方法に関するプロパティーが含まれています。この情報には、名前付きのネットワークインターフェース、ポート、セキュリティーレルム、およびインターフェースに関するその他の設定可能な情報が含まれます。デフォルトのインストールには 2 つのインターフェースが含まれています。
http-interfaceは Web ベースの管理コンソールの設定です。native-interfaceはコマンドライン管理 CLI および REST ライクな管理 API の設定です。
10.7.3. LDAP について
10.7.4. 管理インターフェースに対する LDAP を使用した認証
- LDAP サーバーへの送信接続を作成します。
- LDAP 対応のセキュリティーレルムを作成します。
- 管理インターフェースの新規セキュリティードメインを参照します。
LDAP 送信接続には、以下の属性を使用することができます。
表10.1 LDAP 送信接続の属性
| 属性 | 必要性 | 説明 |
|---|---|---|
| name | 必要 |
この接続を識別するための名前。この名前はセキュリティーレルムの定義に使用されます。
|
| url | 必要 |
ディレクトリサーバーの URL アドレス。
|
| search-dn | 必要 |
検索の実行を許可されているユーザーの完全識別名 (DN)
|
| search-credentials | 必要 |
検索の実行を許可されているユーザーのパスワード。
|
| initial-context-factory | 不必要 |
接続を確立する際に使用する初期コンテキストファクトリ。デフォルトでは
com.sun.jndi.ldap.LdapCtxFactory に設定されています。
|
例10.7 LDAP 送信接続の追加
- DN の検索:
cn=search,dc=acme,dc=com - 証明情報の検索:
myPass - URL:
ldap://127.0.0.1:389
/host=master/core-service=management/ldap-connection=ldap_connection/:add(search-credential=myPass,url=ldap://127.0.0.1:389,search-dn="cn=search,dc=acme,dc=com")
例10.8 LDAP 送信出力を示す XML
<outbound-connections> <ldap name="ldap_connection" url="ldap://127.0.0.1:389" search-dn="cn=search,dc=acme,dc=com" search-credential="myPass" /> </outboundconnections>
管理インターフェースは、デフォルトで設定されているプロパティーファイルをベースとするセキュリティーレルムの代わりに LDAP サーバーに対して認証を行うことができます。LDAP のオーセンティケーターは、最初にリモートディレクトリサーバーへの接続を確立します。次に、LDAP レコードの完全修飾識別名 (DN) を探すため、ユーザーが認証システムに渡したユーザー名を使用して検索を実行します。認証情報としてユーザーの DN とユーザー提供のパスワードを使用して、新規接続が確立されます。 このLDAP サーバーに対するこの検証に成功すると、DN が有効であることが検証されます。
- connection
<outbound-connections>に定義されている接続の名前。LDAP ディレクトリへの接続に使用します。- base-dn
- ユーザー検索を開始するためのコンテキストの識別名
- recursive
- LDAP ディレクトリツリー全体にわたって再帰的に検索を行うか、指定のコンテキストのみを検索するかを指定します。デフォルトでは
falseに設定されています。 - user-dn
- 識別名を持つするユーザーの属性。これは、後で認証のテストに使用されます。デフォルトでは
dnに設定されています。 - 子要素として、
username-filterまたはadvanced-filterのいずれか。 username-filterはattributeという単一の属性を取り、値はuserNameやsambaAccountNameなどのユーザー名を持つ LDAP 属性の名前です。advanced-filterはfilterと呼ばれる単一の属性を取ります。この属性には、標準的な LDAP 構文のフィルタークエリが含まれています。&文字を&に変更し、エスケープすることに注意してください。フィルターの例は次のとおりです。(&(sAMAccountName={0})(memberOf=cn=admin,cn=users,dc=acme,dc=com))アンパサンド文字をエスケープすると、フィルターは次のようになります。(&(sAMAccountName={0})(memberOf=cn=admin,cn=users,dc=acme,dc=com))
例10.9 LDAP 対応のセキュリティーレルムを示す XML
- connection -
ldap_connection - base-dn -
cn=users,dc=acme,dc=com. - username-filter -
attribute="sambaAccountName"
<security-realm name="TestRealm">
<authentication>
<ldap connection="ldap_connection" base-dn="cn=users,dc=acme,dc=com">
<username-filter attribute="sambaAccountName" />
</ldap>
</authentication>
</security-realm>
警告
例10.10 LDAP セキュリティーレルムの追加
/host=master/core-service=management/security-realm=ldap_security_realm/authentication=ldap:add(base-dn="DC=mycompany,DC=org", recursive=true, username-attribute="MyAccountName", connection="ldap_connection")
セキュリティーレルムの作成が完了したら、管理インターフェースの設定でそのドメインを参照する必要があります。管理インターフェースは、HTTP ダイジェスト認証用のセキュリティーレルムを使用します。
例10.11 HTTP インターフェースへのセキュリティーレルムの適用
/host=master/core-service=management/management-interface=http-interface/:write-attribute(name=security-realm,value=TestRealm)
10.7.5. HTTP 管理インターフェースの無効化
注記
console-enabled-attribute を false に設定できます。
/host=master/core-service=management/management-interface=http-interface/:write-attribute(name=console-enabled,value=false)
例10.12 HTTP インターフェースの設定の読み込み
/host=master/core-service=management/management-interface=http-interface/:read-resource(recursive=true,proxies=false,include-runtime=false,include-defaults=true)
{
"outcome" => "success",
"result" => {
"console-enabled" => true,
"interface" => "management",
"port" => expression "${jboss.management.http.port:9990}",
"secure-port" => undefined,
"security-realm" => "ManagementRealm"
}
}
例10.13 HTTP インターフェースの削除
/host=master/core-service=management/management-interface=http-interface/:remove
例10.14 HTTP インターフェースの再作成
/host=master/core-service=management/management-interface=http-interface/:write-attribute(name=console-enabled,value=true)
/host=master/core-service=management/management-interface=http-interface/:write-attribute(name=interface,value=management)
/host=master/core-service=management/management-interface=http-interface/:write-attribute(name=port,value=${jboss.management.http.port:9990})/host=master/core-service=management/management-interface=http-interface/:write-attribute(name=security-realm,value=ManagementRealm)
10.7.6. デフォルトセキュリティーレルムからのサイレント認証の削除
JBoss Enterprise Application Platform 6 には、ローカル管理 CLI ユーザーに対するサイレント認証方法が含まれます。これにより、ローカルユーザーは、ユーザー名またはパスワード認証なしで管理 CLI にアクセスできるようになります。この機能は、利便性のために有効であり、ローカルユーザーが認証なしで管理 CLI スクリプトを実行する場合に役に立ちます。この機能は、ローカル設定へのアクセスにより、ユーザーが独自のユーザー詳細を追加できる (または、セキュリティーチェックを無効にする) ため、役に立つ機能です。
security-realm セクション内で local 要素を削除することにより、実現できます。これは、スタンドアロンサーバーインスタンス用の standalone.xml と管理対象ドメイン用の host.xml の両方に適用されます。特定のサーバー設定に与える可能性がある影響を考えると、local 要素を削除することをお勧めします。
local 要素を直接削除することです。
例10.15 security-realm の local 要素の例
<security-realms>
<security-realm name="ManagementRealm">
<authentication>
<local default-user="$local"/>
<properties path="mgmt-users.properties" relative-to="jboss.server.config.dir"/>
</authentication>
</security-realm>
<security-realm name="ApplicationRealm">
<authentication>
<local default-user="$local" allowed-users="*"/>
<properties path="application-users.properties" relative-to="jboss.server.config.dir"/>
</authentication>
<authorization>
<properties path="application-roles.properties" relative-to="jboss.server.config.dir"/>
</authorization>
</security-realm>
</security-realms>
手順10.7 デフォルトセキュリティーレルムからのサイレント認証の削除
管理 CLI でのサイレント認証の削除
必要に応じて、管理レルムとアプリケーションレルムからlocal要素を削除します。- 管理レルムから
local要素を削除します。スタンドアロンの場合
/core-service=management/security-realm=ManagementRealm/authentication=local:remove
管理対象ドメインの場合
/host=HOST_NAME/core-service=management/security-realm=ManagementRealm/authentication=local:remove
- アプリケーションレルムから
local要素を削除します。スタンドアロンの場合
/core-service=management/security-realm=ApplicationRealm/authentication=local:remove
管理対象ドメインの場合
/host=HOST_NAME/core-service=management/security-realm=ApplicationRealm/authentication=local:remove
サイレント認証モードが、ManagementRealm と ApplicationRealm から削除されます。
10.7.7. JMX サブシステムへのリモートアクセスの無効化
/profile=default の部分を変更します。スタンドアロンサーバーの場合には、この部分を完全に削除してください。
注記
例10.16 JMX サブシステムからのリモートコネクターの削除
/profile=default/subsystem=jmx/remoting-connector=jmx/:remove
例10.17 JMX サブシステムの削除
/profile=default/subsystem=jmx/:remove
10.7.8. 管理インターフェースのセキュリティーレルムの設定
以下の例は、ManagementRealm セキュリティーレルムのデフォルト設定を示しています。mgmt-users.properties というファイルを使用して設定情報を保管します。
例10.18 デフォルトの ManagementRealm
/host=master/core-service=management/security-realm=ManagementRealm/:read-resource(recursive=true,proxies=false,include-runtime=false,include-defaults=true)
{
"outcome" => "success",
"result" => {
"authorization" => undefined,
"server-identity" => undefined,
"authentication" => {"properties" => {
"path" => "mgmt-users.properties",
"plain-text" => false,
"relative-to" => "jboss.domain.config.dir"
}}
}
}
以下のコマンドは TestRealm というセキュリティーレルムを作成し、関連プロパティーファイルの名前とディレクトリを設定します。
例10.19 セキュリティーレルムの書き込み
/host=master/core-service=management/security-realm=TestRealm/:add/host=master/core-service=management/security-realm=TestRealm/authentication=properties/:add(path=TestUsers.properties, relative-to=jboss.domain.config.dir)
セキュリティーレルムを追加したら、その名前を管理インターフェースへの参照として指定します。
例10.20 管理インターフェースへのセキュリティーレルムの追加
host=master/core-service=management/management-interface=http-interface/:write-attribute(name=security-realm,value=TestRealm)
10.8. ネットワークセキュリティー
10.8.1. 管理インターフェースのセキュア化
テスト環境では、管理コンソール、管理 CLI および他の API 実装で構成される管理インターフェース上で、セキュリティーレイヤーがない状態で JBoss Enterprise Application Platform 6 を実行することがよくあります。これにより、開発や設定を迅速に変更できます。
10.8.2. JBoss Enterprise Application Platform が使用するネットワークインターフェースの指定
サービスを必要なクライアントにのみアクセスできるようサービスを隔離すると、ネットワークのセキュリティーが強化されます。JBoss Enterprise Application Platform には、デフォルト設定の 2 つのインターフェースが含まれ、どちらもデフォルトで IP アドレス 127.0.0.1 または localhost にバインドされます。インターフェースの 1 つは management と呼ばれ、管理コンソール、CLI、および API によって使用されます。他のインターフェースは public と呼ばれ、アプリケーションをデプロイするために使用されます。これらのインターフェースは、特別なものではありませんが、作業を始める土台として提供されます。
management インターフェースはデフォルトでポート 9990 と 9999 を使用し、public インターフェースはポート 8080 または 8443 (HTTPS を使用する場合) を使用します。
警告
JBoss Enterprise Application Platform を停止します。
オペレーティングシステムに適切な方法で割り込みを送信して JBoss Enterprise Application Platform を停止します。JBoss Enterprise Application Platform をフォアグラウンドアプリケーションとして実行している場合、通常は Ctrl+C を押してこれを行います。バインドアドレスを指定して JBoss Enterprise Application Platform を再起動します。
-bコマンドラインスイッチを使用して特定のインターフェースで JBoss Enterprise Application Platform を起動します。例10.21 パブリックインターフェースを指定します。
EAP_HOME/bin/domain.sh -b 10.1.1.1
例10.22 管理インターフェースを指定します。
EAP_HOME/bin/domain.sh -bmanagement=10.1.1.1
例10.23 各インターフェースに異なるアドレスを指定します。
EAP_HOME/bin/domain.sh -bmanagement=127.0.0.1 -b 10.1.1.1
例10.24 すべてのネットワークインターフェースにパブリックインターフェースをバインドします。
EAP_HOME/bin/domain.sh -b 0.0.0.0
-b コマンドラインスイッチを使用してランタイム時に IP アドレスを指定できなくなるため、お勧めしません。この作業を行う場合は、XML ファイルを編集する前に JBoss Enterprise Application Platform を完全に停止する必要があります。
10.8.3. JBoss Enterprise Application Platform 6 で動作するようネットワークファイアウォールを設定
ほとんどの本番稼動環境では、ネットワークセキュリティー全体の方針の一部としてファイアウォールを使用します。複数のインスタンスが相互に通信したり、Web サーバーやデータベースなどの外部サービスと通信したりする必要がある場合は、ファイアウォールでこれを考慮する必要があります。適切に管理されたファイアウォールでは、操作する必要があるポートのみが開かれ、特定の IP アドレス、サブネット、およびネットワークプロトコルに対するポートへのアクセスが制限されます。
要件
- 開く必要があるポートを決定します。それぞれの環境のポートのリストを決定するには、「JBoss Enterprise Application Platform 6 により使用されるネットワークポート」を参照してください。
- ファイアウォールソフトウェアについて理解する必要があります。この手順では、Red Hat Enterprise Linux 6 の
system-config-firewallコマンドを使用します。Microsoft Windows Server には、ファイアウォールが組み込まれ、各プラットフォーム用の複数のサードパーティー製ファイアウォールソリューションが利用可能です。
この手順では、以下の前提で環境のファイアウォールを設定します。
- オペレーティングシステムは Red Hat Enterprise Linux 6 です。
- JBoss Enterprise Application Platform 6 がホスト
10.1.1.2で実行されます。オプションで、サーバーには独自のファイアウォールがあります。 - ネットワークファイアウォールサーバーは、ホスト
10.1.1.1のインターフェースeth0で実行され、外部インターフェースeth1を持ちます。 - ポート 5445 (JMS で使用されるポート) のトラフィックを JBoss Enterprise Application Platform 6 に転送します。ネットワークファイアウォールで他のトラフィックは許可されません。
手順10.8 ネットワークファイアウォールと JBoss Enterprise Application Platform 6 が共に動作するよう管理
管理コンソールにログインします。
管理コンソールにログインします。デフォルトでは、http://localhost:9990/console/ で実行されます。ソケットバインディンググループが使用するソケットバインディングを決定します。
管理コンソールの右上にある Profiles ラベルをクリックします。画面の左側に一連のメニューが表示されます。下部のメニュー見出しは General Configuration です。この見出しの下の Socket Binding Groups 項目をクリックします。Socket Binding Declarations 画面が表示されます。最初に、standard-socketsグループが表示されます。異なるグループは、右側のコンボボックスで選択することにより選択できます。注記
スタンドアロンサーバーを使用する場合は、1 つのソケットバインディンググループのみが存在します。ソケット名とポートのリストが表示されます (1 ページあたり 6 つの値)。テーブルの矢印ナビゲーションを使用してページを移動できます。開く必要があるポートを決定します。
お使いの環境の特別なポートの機能とニーズによっては、一部のポートがファイアウォールを介してアクセスできる必要があります。ソケットバインディングの目的がわからない場合は、「JBoss Enterprise Application Platform 6 により使用されるネットワークポート」を参照して、デフォルトのソケットバインディングとその目的のリストを確認してください。JBoss Enterprise Application Platform 6 にトラフィックを転送するようファイアウォールを設定します。
以下の手順を実行して、必要なポートでトラフィックを許可するようネットワークファイアウォールを設定します。- root ユーザーとしてファイアウォールマシンにログインし、コマンドプロンプトにアクセスします。
system-config-firewallコマンドを実行してファイアウォール設定ユーティリティーを起動します。ファイアウォールシステムにログインした方法に応じて、GUI またはコマンドラインユーティリティーが起動します。このタスクでは、SSH 経由でコマンドラインインターフェースを使用してログインしていることを前提とします。- キーボードで TAB キーを使用して Customize ボタンに移動し、ENTER キーを押します。Trusted Services 画面が表示されます。
- どの値も変更せずに、TAB キーを使用して Forward ボタンに移動し、ENTER を押して次の画面に進みます。Other Ports 画面が表示されます。
- TAB キーを使用して <Add> ボタンに移動し、ENTER を押します。Port and Protocol 画面が表示されます。
- Port / Port Range フィールドに
5445と入力し、TAB キーを使用して Protocol フィールドに移動し、tcpと入力します。TAB キーを使用して OK ボタンに移動し、ENTER を押します。 - TAB キーを使用して、Forward ボタンに移動し、Port Forwarding 画面にアクセスします。
- TAB キーを使用して <Add> ボタンに移動し、ENTER キーを押します。
- 以下の値を入力してポート 5445 のポート転送を設定します。
- 送信元インターフェース: eth1
- プロトコル: tcp
- ポート/ポート範囲: 5445
- 送信先 IP アドレス: 10.1.1.2
- ポート/ポート範囲: 5445
TAB キーを使用して OK ボタンに移動し、ENTER を押します。 - TAB キーを使用して Close ボタンに移動し、ENTER を押します。
- TAB キーを使用して OK ボタンに移動し、ENTER を押します。変更内容を適用するには、警告を読み、Yes をクリックします。
JBoss Enterprise Application Platform 6 ホストでファイアウォールを設定します。
一部の組織では、JBoss Enterprise Application Platform 6 サーバー自体でファイアウォールを設定し、運用に必要ないすべてのポートを閉じます。「JBoss Enterprise Application Platform 6 により使用されるネットワークポート」 を参照して開くポートを決定し、残りのポートを閉じます。Red Hat Enterprise Linux 6 のデフォルトの設定では、22 (Secure Shell (SSH) 用) と 5353 (マルチキャスト DNS 用) 以外のすべてのポートが閉じられます。ポートを設定する場合は、間違ってロックアウトされないよう物理的にアクセスしてください。
ファイアウォールが、ファイアウォール設定で指定したように、内部 JBoss Enterprise Application Platform 6 サーバーにトラフィックを転送します。サーバーでファイアウォールを有効にした場合は、アプリケーションを実行するために必要なポート以外はすべて閉じられます。
10.8.4. JBoss Enterprise Application Platform 6 により使用されるネットワークポート
- サーバーグループがデフォルトのソケットバインディンググループのいずれかを使用するか、またはカスタムグループを使用するかどうか。
- 個別デプロイメントの要件。
注記
デフォルトのソケットバインディンググループ
full-ha-socketsfull-socketsha-socketsstandard-sockets
表10.2 デフォルトのソケットバインディングの参照
| 名前 | ポート | マルチキャストポート | 説明 | full-ha-sockets | full-sockets | ha-socket | standard-socket |
|---|---|---|---|---|---|---|---|
ajp | 8009 | Apache JServ プロトコル。HTTP クラスタリングおよび負荷分散に使用します。 | ○ | ○ | ○ | ○ | |
http | 8080 | デプロイされた Web アプリケーションのデフォルトポート。 | ○ | ○ | ○ | ○ | |
https | 8443 | デプロイされた Web アプリケーションとクライアント間の SSL 暗号化接続。 | ○ | ○ | ○ | ○ | |
jacorb | 3528 | JTS トランザクションおよび他の ORB 依存サービス用の CORBA サービス。 | ○ | ○ | × | × | |
jacorb-ssl | 3529 | SSL 暗号化 CORBA サービス。 | ○ | ○ | × | × | |
jgroups-diagnostics | 7500 | マルチキャスト。HA クラスターでピア検出に使用されます。 | ○ | × | ○ | × | |
jgroups-mping | 45700 | マルチキャスト。HA クラスタでの初期メンバーシップを検出するために使用されます。 | ○ | × | ○ | × | |
jgroups-tcp | 7600 | TCP を使用した、HA クラスター内でのユニキャストピア検出。 | ○ | × | ○ | × | |
jgroups-tcp-fd | 57600 | TCP を介した HA 障害検出に使用されます。 | ○ | × | ○ | × | |
jgroups-udp | 55200 | 45688 | UDP を使用した、HA クラスター内でのユニキャストピア検出。 | ○ | × | ○ | × |
jgroups-udp-fd | 54200 | UDP を介した HA 障害検出に使用されます。 | ○ | × | ○ | × | |
messaging | 5445 | JMS サービス。 | ○ | ○ | × | × | |
messaging-group | HornetQ JMS ブロードキャストと検出グループにより参照されます。 | ○ | ○ | × | × | ||
messaging-throughput | 5455 | JMS Remoting により使用されます。 | ○ | ○ | × | × | |
mod_cluster | 23364 | JBoss Enterprise Application Platform と HTTP ロードバランサー間の通信に対するマルチキャストポート。 | ○ | × | ○ | × | |
osgi-http | 8090 | OSGi サブシステムを使用する内部コンポーネントにより使用されます。 | ○ | ○ | ○ | ○ | |
remoting | 4447 | リモート EJB の呼び出しに使用されます。 | ○ | ○ | ○ | ○ | |
txn-recovery-environment | 4712 | JTA トランザクションリカバリーマネージャー。 | ○ | ○ | ○ | ○ | |
txn-status-manager | 4713 | JTA / JTS トランザクションマネージャー。 | ○ | ○ | ○ | ○ |
ソケットバインディンググループ以外に、各ホストコントローラーは管理用にさらに 2 つのポートを開きます。
- 9990 - Web 管理コンソールポート
- 9999 - 管理コンソールと管理 API により使用されるポート
10.9. Java セキュリティマネージャー
10.9.1. Java Security Manager について
Java Security Manager は、Java 仮想マシン (JVM) サンドボックスの外部境界を管理するクラスで、JVM 内で実行するコードが JVM 外のリソースと対話する方法を制御します。Java Security Manager が有効な場合、Java API は安全でない可能性のある操作を行う前に Security Manager が承認するか確認します。
10.9.2. Java Security Manager 内での JBoss Enterprise Application Platform の実行
domain.sh スクリプトまたは standalone.sh スクリプトにパラメーターをオプションとして渡すことはできません。次の手順を実行すると、インスタンスが Java Security Manager ポリシー内で実行されるよう設定できます。
要件
- この手順を実行する前に、Java Development Kit (JDK) に含まれる
policytoolコマンドを使用してセキュリティーポリシーを記述する必要があります。この手順では、ポリシーがEAP_HOME/bin/server.policyにあることを前提としています。 - 設定ファイルを編集する前に、ドメインまたはスタンドアロンサーバーを完全に停止する必要があります。
手順10.9 設定ファイルの編集
設定ファイルを開きます。
編集のために設定ファイルを開きます。このファイルは、管理対象ドメインを使用しているか、スタンドアロンサーバーを使用しているかに応じて、2 つの場所のいずれかに存在します。これは、サーバーまたはドメインを起動するために使用される実行可能ファイルではありません。管理対象ドメイン
EAP_HOME/bin/domain.confスタンドアロンサーバー
EAP_HOME/bin/standalone.conf
ファイルの最後に Java オプションを追加します。
以下の行をファイルの最後に追加します。-Djava.security.policy値を変更してセキュリティーポリシーの場所を指定できます。改行をせずに 1 行で指定する必要があります。デバッグレベルを指定して-Djava.security.debugを変更し、さらに多くの情報または少ない情報をログに記録できます。最も冗長なのはfailure,access,policyです。JAVA_OPTS="$JAVA_OPTS -Djava.security.manager -Djboss.home.dir=$PWD/.. -Djava.security.policy==$PWD/server.policy -Djava.security.debug=failure"
ドメインサーバーを起動します。
ドメインまたはサーバーを通常どおり起動します。
10.9.3. Java Security Manager のポリシーについて
様々なコードのクラスに対する定義済みのパーミッションセット。Java Security Manager はアプリケーションが要求したアクションと、このセキュリティーポリシーを比較します。ポリシーでアクションが許可された場合、Security Manager により、アクションの実行が許可されます。ポリシーによりアクションが許可されない場合、Security Manager はこのアクションを拒否します。セキュリティーポリシーは、コードの場所やコードのシグネチャーを基にパーミッションを定義することができます。
java.security.manager や java.security.policy を使用して設定されます。
10.9.4. Java Security Manager ポリシーの記述
ほとんどの JDK および JRE ディストリビューションには、Java Security Manager セキュリティーポリシーを作成および編集するための policytool という名前のアプリケーションが含まれます。policytool の詳細については、http://docs.oracle.com/javase/6/docs/technotes/tools/ を参照してください。
セキュリティーポリシーは、次の設定要素から構成されます。
- CodeBase
- コードの元の URL の場所 (ホストとドメイン情報を除外)。オプションのパラメーターです。
- SignedBy
- コードを署名するためにプライベートキーが使用された署名者を参照するキーストアで使用されたエイリアス。これは、単一値またはカンマ区切りの値リストになります。オプションのパラメーターです。省略された場合は、署名の有無に関わらず Java Security Manager に影響はありません。
- Principals
- principal_type/principal_name ペアのリスト。これは、実行スレッドのプリンシパルセット内に存在する必要があります。Principals エントリはオプションです。省略された場合は、「任意のプリンシパル」を意味します。
- Permissions
- パーミッションは、コードに与えられるアクセスです。多くのパーミッションは、Java Enterprise Edition 6 (Java EE 6) 仕様の一部として提供されます。本書では、JBoss Enterprise Application Platform で提供される追加のパーミッションについてのみ説明します。
手順10.10 新しい Java Security Manager ポリシーの設定
policytoolを起動します。policytoolツールを次のいずれかの方法で起動します。Red Hat Enterprise Linux
GUI またはコマンドプロンプトで、/usr/bin/policytoolを実行します。Microsoft Windows Server
スタート メニューまたは Java インストールのbin\から、policytool.exeを実行します。場所は異なることがあります。
ポリシーを新規作成します。
ポリシーを新規作成するには、Add Policy Entry を選択します。必要なパラメーターを追加し、Done をクリックします。既存のポリシーの編集
既存のポリシーのリストからポリシーを選択し、Edit Policy Entry ボタンを選択します。必要に応じて、パラメーターを編集します。既存のポリシーを削除します。
既存のポリシーのリストからポリシーを選択し、Delete Policy Entry ボタンを選択します。
JBoss Enterprise Application Platform に固有なパーミッション
- org.jboss.security.SecurityAssociation.getPrincipalInfo
org.jboss.security.SecurityAssociation.getPrincipal()メソッドとgetCredential()メソッドにアクセスを提供します。このランタイムパーミッションを使用する場合、現在のスレッド呼び出し元プリンシパルとクレデンシャルを設定できるというリスクが発生します。- org.jboss.security.SecurityAssociation.getSubject
org.jboss.security.SecurityAssociationgetSubject()メソッドにアクセスを提供します。- org.jboss.security.SecurityAssociation.setPrincipalInfo
org.jboss.security.SecurityAssociation.setPrincipal()メソッド、setCredential()メソッド、setSubject()メソッド、pushSubjectContext()メソッド、およびpopSubjectContext()メソッドにアクセスを提供します。このランタイムパーミッションを使用する場合、現在のスレッド呼び出し元プリンシパルとクレデンシャルを見ることができるというリスクが発生します。- org.jboss.security.SecurityAssociation.setServer
org.jboss.security.SecurityAssociation.setServer()メソッドにアクセスを提供します。このランタイムパーミッションを使用する場合、呼び出し元プリンシパルとクレデンシャルのマルチスレッドストレージを有効または無効にできるというリスクが発生します。- org.jboss.security.SecurityAssociation.setRunAsRole
org.jboss.security.SecurityAssociation.pushRunAsRole()メソッド、popRunAsRole()メソッド,pushRunAsIdentity()メソッド、およびpopRunAsIdentity()メソッドにアクセスを提供します。このランタイムパーミッションを使用する場合、現在の呼び出し元プリンシパルの run-as ロールプリンシパルを変更できるというリスクが発生します。- org.jboss.security.SecurityAssociation.accessContextInfo
org.jboss.security.SecurityAssociationaccessContextInfoおよびaccessContextInfoの getter および setter メソッドにアクセスを提供します。これにより、現在のセキュリティーコンテキスト情報を設定および取得できます。- org.jboss.naming.JndiPermission
- 特別なパーミッションを、指定された JNDI ツリーパスのファイルおよびディレクトリーに提供するか、またはすべてのファイルとディレクトリーに対して再帰的に提供します。JndiPermission は、ファイルまたはディレクトリーに関連するパス名および有効なパーミッションセットから構成されます。利用可能なパーミッションには以下のものがあります。
- bind
- rebind
- unbind
- lookup
- list
- listBindings
- createSubcontext
- all
/*で終わるパス名は、指定されたパーミッションがパス名のすべてのファイルとディレクトリに適用されることを示します。/-で終わるパス名は、パス名のすべてのファイルとサブディレクトリに対して再帰的にパーミッションが与えられることを示します。パス名は、任意のディレクトリーの任意のファイルに一致する特別なトークン <<ALL BINDINGS>> から構成されます。 - org.jboss.security.srp.SRPPermission
- プライベートセッションキーやプライベートキーなどの機密性の高い SRP 情報へのアクセスを保護するカスタムパーミッションクラス。
getSessionKeyターゲットは、SRP ネゴシエーションの結果得られるプライベートセッションへのアクセスを提供します。このキーへのアクセスでは、セッションキーで暗号化されたメッセージを暗号化および復号化できます。 - org.hibernate.secure.HibernatePermission
- このパーミッションクラスは、Hibernate セッションをセキュアにする基本的なパーミッションを提供します。このプロパティーのターゲットはエンティティー名です。利用可能なアクセスには以下のものがあります。
- insert
- delete
- update
- read
- * (all)
- org.jboss.metadata.spi.stack.MetaDataStackPermission
- 読み出し元がメタデータスタックと対話する方法を制御するカスタムパーミッションクラスを提供します。利用可能なパーミッションは以下のとおりです。
- modify
- push (スタックに対する)
- pop (スタックから)
- peek (スタックに対する)
- * (all)
- org.jboss.config.spi.ConfigurationPermission
- 設定プロパティーの設定をセキュアにします。パーミッションターゲット名のみを定義し、アクションを定義しません。このプロパティーのターゲットには以下のものが含まれます。
- <property name> (このコードが設定するパーミッションを持つプロパティー)
- * (すべてのプロパティー)
- org.jboss.kernel.KernelPermission
- カーネル設定へのアクセスをセキュアにします。パーミッションターゲット名のみを定義し、アクションを定義しません。このプロパティーのターゲットには以下のものが含まれます。
- access (カーネル設定に対する)
- configure (アクセスを含む)
- * (all)
- org.jboss.kernel.plugins.util.KernelLocatorPermission
- カーネルへのアクセスをセキュアにします。パーミッションターゲット名のみを定義し、アクションを定義しません。このプロパティーのターゲットには以下のものが含まれます。
- kernel
- * (all)
10.9.5. Security Manager ポリシーのデバッグ
java.security.debug オプションは、報告されたセキュリティー関連情報のレベルを設定します。コマンド java -Djava.security.debug=help は、すべてのデバッグオプションのヘルプ出力を表示します。デバッグレベルを all に設定すると、原因がまったくわからないセキュリティー関連の障害をトラブルシューティングするときに役に立ちますが、一般的な使用には多すぎる量の情報が表示されます。一般的に適切なデフォルト値は access:failure です。
手順10.11 一般的なデバッグの有効化
この手順を実行すると、セキュリティー関連デバッグ情報の一般的な機密レベルを有効にすることができます。
次の行をサーバー設定ファイルに追加します。- 管理対象ドメインで JBoss Enterprise Application Platform インスタンスが実行されている場合、以下の行は Linux では
bin/domain.confファイル、Windows ではbin/domain.conf.batファイルに追加されます。 - JBoss Enterprise Application Platform インスタンスがスタンドアロンサーバーとして実行されている場合、以下の行は Linux では
bin/standalone.confファイル、Windows ではbin\standalone.conf.batファイルに追加されます。
Linux
JAVA_OPTS="$JAVA_OPTS -Djava.security.debug=access:failure"
Windows
JAVA_OPTS="%JAVA_OPTS% -Djava.security.debug=access:failure"
セキュリティー関連デバッグ情報の一般的なレベルが有効になります。
10.10. アプリケーションのセキュリティー
10.10.1. 記述子ベースのプロパティー置換の有効化/無効化
記述子プロパティー置換の限定的な制御が、jboss-as-ee_1_1.xsd に導入されました。このタスクには、記述子ベースのプロパティー置換を設定するのに必要な手順が含まれます。
trueに設定された場合は、プロパティー置換が有効になります。falseに設定された場合は、プロパティー置換が無効になります。
手順10.12 jboss-descriptor-property-replacement
jboss-descriptor-property-replacement は、次の記述子でプロパティー置換を有効または無効にするために使用されます。
jboss-ejb3.xmljboss-app.xmljboss-web.xml*-jms.xml*-ds.xml
jboss-descriptor-property-replacement のデフォルト値は true です。
- 管理 CLI では、次のコマンドを実行して
jboss-descriptor-property-replacementの値を決定します。/subsystem=ee:read-attribute(name="jboss-descriptor-property-replacement")
- 次のコマンドを実行して動作を設定します。
/subsystem=ee:write-attribute(name="jboss-descriptor-property-replacement",value=VALUE)
手順10.13 spec-descriptor-property-replacement
spec-descriptor-property-replacement は、次の記述子でプロパティー置換を有効または無効にするために使用されます。
ejb-jar.xmlpersistence.xml
spec-descriptor-property-replacement のデフォルト値は false です。
- 管理 CLI では、次のコマンドを実行して
spec-descriptor-property-replacementの値を確認します。/subsystem=ee:read-attribute(name="spec-descriptor-property-replacement")
- 次のコマンドを実行して動作を設定します。
/subsystem=ee:write-attribute(name="spec-descriptor-property-replacement",value=VALUE)
記述子ベースのプロパティー置換が正常に設定されます。
10.11. SSL 暗号化
10.11.1. JBoss Enterprise Application Platform Web Server での SSL 暗号化の実装
多くの Web アプリケーションでは、クライアントとサーバー間で SSL 暗号化接続 (HTTPS 接続とも呼ばれます) が必要です。以下の手順を使用すると、サーバーまたはサーバーグループで HTTPS を有効にできます。
要件
- SSL 暗号化キーセットと SSL 暗号化証明書が必要です。これらは、証明書署名認証局から購入したり、コマンドラインユーティリティーを使用して生成したりできます。Red Hat Enterprise Linux ユーティリティーを使用して暗号化キーを生成するには、「SSL 暗号化キーおよび証明書の生成」を参照してください。
- 特定の環境とセットアップについて以下の詳細を知る必要があります。
- 証明書ファイルに対する完全ディレクトリー名およびパス。
- 暗号化キーの暗号化パスワード。
- 管理 CLI を実行し、ドメインコントローラまたはスタンドアロンサーバーに接続する必要があります。
注記
/profile=default を削除して管理 CLI コマンドを変更します。
手順10.14 JBoss Web Server が HTTPS を使用するよう設定
新しい HTTPS コネクターを追加します。
プロファイルを適切に変更し、以下の管理 CLI コマンドを実行します。これにより、HTTPSという名前のセキュアコネクターが新規作成されます。これはhttpsスキーム、httpsソケットバインディング (デフォルト値は8443) を使用し、セキュアに設定されます。例10.25 管理 CLI コマンド
/profile=default/subsystem=web/connector=HTTPS/:add(socket-binding=https,scheme=https,protocol=HTTP/1.1,secure=true)
SSL 暗号化証明書およびキーを設定します。
例の値を独自の値に置き換え、以下の CLI コマンドを実行して SSL 証明書を設定します。この例では、キーストアはサーバー設定ディレクトリ (管理対象ドメインではEAP_HOME/domain/configuration/) へコピーされることを想定しています。例10.26 管理 CLI コマンド
/profile=default/subsystem=web/connector=HTTPS/ssl=configuration:add(name=https,certificate-key-file=${jboss.server.config.dir}/keystore.jks,password=SECRET, key-alias=KEY_ALIAS)コネクターの SSL プロパティーに設定できるパラメーターの完全な一覧については、「SSL コネクターリファレンス」を参照してください。アプリケーションをデプロイします。
設定したプロファイルを使用するサーバーグループにアプリケーションをデプロイします。スタンドアロンサーバーを使用する場合、アプリケーションをサーバーにデプロイします。アプリケーションに対する HTTP 要求は新しい SSL 暗号化接続を使用します。
10.11.2. SSL 暗号化キーおよび証明書の生成
要件
- Java Development Kit 実装で提供される
keytoolユーティリティーが必要です。このコマンドは、Red Hat Enterprise Linux 上の OpenJDK により/usr/bin/keytoolにインストールされます。 keytoolコマンドの構文およびパラメーターについて理解してください。この手順では、非常に一般的な手順を実行します。本書では、SSL 証明書またはkeytoolコマンドの固有な説明は範囲外です。
手順10.15 SSL 暗号化キーおよび証明書の生成
パブリックキーおよびプライベートキーとともにキーストアを生成します。
以下のコマンドを実行し、jbossというエイリアスを持つserver.keystoreという名前のキーストアをカレントディレクトリに生成します。keytool -genkey -alias jboss -keyalg RSA -keystore server.keystore -storepass mykeystorepass --dname "CN=jsmith,OU=Engineering,O=mycompany.com,L=Raleigh,S=NC,C=US"
この keytool コマンドで使用されるパラメーターの説明は次のとおりです。パラメーター 説明 -genkeykeytoolコマンドは公開鍵と秘密鍵が含まれるキーペアを生成します。-aliasキーストアのエイリアス。この値は任意ですが、エイリアス jbossはデフォルトで JBoss Web サーバーによって使用されます。-keyalgキーペア生成のアルゴリズム。この例では RSAになります。-keystoreキーストアファイルの名前と場所。デフォルトの場所はカレントディレクトリです。選択する名前は任意です。この例では、ファイルの名前は server.keystoreになります。-storepassこのパスワードは、キーの読み取りを可能にするためキーストアに対して認証を行うために使用されます。パスワードは 6 文字以上である必要があり、キーストアがアクセスされた時に提供しなければなりません。この例では、 mykeystorepassが使用されています。このパラメーターを省略すると、コマンドの実行時に入力するよう要求されます。-keypass実際の鍵のパスワードです。注記
実装の制限により、ストアと同じパスワードを使用する必要があります。--dnameキーの識別名を記述する引用符で囲まれた文字列 (例: "CN=jsmith,OU=Engineering,O=mycompany.com,L=Raleigh,C=US")。以下のコンポーネントが連結された文字列になります。 CN- 共通名またはホスト名。ホスト名が jsmith.mycompany.com の場合、CNは jsmith になります。OU- 組織単位 (例: Engineering)。O- 組織名 (例: mycompany.com)。L- 地域 (例: Raleigh または London)。S- 州 (例: NC)。このパラメーターの使用は任意です。C- 2 文字の国コード (例: US または UK)。
上記のコマンドを実行すると、次の情報が要求されます。- コマンドラインで
-storepassパラメーターを使用しなかった場合、キーストアのパスワードを入力するよう要求されます。次に要求されたら新しいパスワードを再入力します。 - コマンドラインで
-keypassパラメーターを使用しなかった場合、キーのパスワードを入力するよう要求されます。Enter を押し、キーストアのパスワードと同じ値を設定します。
コマンドが終了すると、ファイルserver.keystoreにエイリアスjbossを持つ単一のキーが含まれるようになります。キーを検証します。
以下のコマンドを使用して、キーが正常に動作することを検証します。keytool -list -keystore server.keystore
キーストアのパスワードを入力するよう求められます。キーストアの内容 (この場合はjbossという名前の単一キー) が表示されます。jbossキーの種類がkeyEntryであることに注意してください。これは、キーストアにこのキーのパブリックおよびプライベートエントリが含まれることを示します。証明書署名要求を生成します。
次のコマンドを実行し、手順 1 で作成したキーストアより公開鍵を使用して証明書署名要求を生成します。keytool -certreq -keyalg RSA -alias jboss -keystore server.keystore -file certreq.csr
キーストアに対する認証を行うために、パスワードを入力するよう求められます。keytoolコマンドにより、現在の作業ディレクトリにcertreq.csrという名前の証明書署名要求が新規作成されます。新しく生成された証明書署名要求をテストします。
以下のコマンドを使用して証明書の内容をテストします。openssl req -in certreq.csr -noout -text
証明書の詳細が表示されます。オプション: 証明書署名要求を認証局 (CA) に送信します。
認証局 (CA) は、証明書を認証できます。この結果、証明書は、サードパーティークライアントが信用できると見なされます。CA により、署名済み証明書が提供されます。また、オプションで 1 つまたは複数の中間証明書が提供されます。オプション: キーストアからの自己署名証明書のエクスポート
テストまたは内部使用のためにのみ証明書が必要な場合は、自己署名証明書を使用できます。次のように、手順 1 で作成したキーストアからエクスポートします。keytool -export -alias jboss -keystore server.keystore -file server.crt
キーストアに対して認証するためパスワードの入力が求められます。server.crtという名前の自己署名証明書が現在の作業ディレクトリに作成されます。署名済み証明書を中間証明書とともにインポートします。
CA で指示された順序で各証明書をインポートします。各証明書をインポートするには、intermediate.caまたはserver.crtを実際のファイル名に置き換えます。証明書が別のファイルとして提供されない場合は、各証明書に対して個別のファイルを作成し、その内容をファイルに貼り付けます。注記
署名済み証明書および証明書キーは機密情報です。サーバー間での転送方法に注意してください。keytool -import -keystore server.keystore -alias intermediateCA -file intermediate.ca
keytool -import -alias jboss -keystore server.keystore -file server.crt
証明書が正常にインポートされたことをテストします。
以下のコマンドを実行し、要求された場合にキーストアパスワードを入力します。キーストアの内容が表示され、証明書がリストの一部になります。keytool -list -keystore server.keystore
署名済み証明書はキーストアに含まれ、HTTPS Web サーバー通信を含む SSL 接続を暗号化するために使用できます。
10.11.3. SSL コネクターリファレンス
default を使用した管理対象ドメイン向けに設計されています。プロファイル名を、管理対象ドメインに対して設定する名前に変更するか、コマンドの /profile=default 部分を省略します (スタンドアロンサーバーの場合)。
表10.3 SSL コネクター属性
| 属性 | 説明 | CLI コマンド |
|---|---|---|
| name |
SSL コネクターの表示名。
|
/profile=default/subsystem=web/connector=HTTPS/ssl=configuration/:write-attribute(name=name,value=https) |
| verify-client |
接続を受け入れる前にクライアントから有効な証明書チェーンが必要な場合は、
true に設定します。SSL スタックでクライアント証明書を要求し、クライアント証明書が提示されない場合でもエラーが発生しないようにするには、want に設定します。CLIENT-CERT 認証を使用するセキュリティー制約によって保護されたリソースをクライアントが要求する場合を除き、証明書チェーンを必要としないときは false (デフォルト値) に設定します。
|
/profile=default/subsystem=web/connector=HTTPS/ssl=configuration/:write-attribute(name=verify-client,value=want) |
| verify-depth |
クライアントが有効な証明を持たないと判断するまでにチェックされる中間証明書発行者の最大数。デフォルト値は
10 です。
|
/profile=default/subsystem=web/connector=HTTPS/ssl=configuration/:write-attribute(name=verify-depth,value=10) |
| certificate-key-file |
署名済みサーバー証明書が格納されるキーストアの完全ファイルパスおよびファイル名。JSSE 暗号化の場合、この証明書ファイルが唯一のファイルになり、OpenSSL は複数のファイルを使用します。デフォルト値は JBoss Enterprise Application Platform を実行しているユーザーのホームディレクトリー内にある
.keystore ファイルになります。keystoreType がファイルを使用しない場合は、パラメーターを空の文字列に設定します。
|
/profile=default/subsystem=web/connector=HTTPS/ssl=configuration/:write-attribute(name=certificate-key-file,value=../domain/configuration/server.keystore) |
| certificate-file |
OpenSSL 暗号化を使用する場合は、このパラメーターの値を、サーバー証明書を含むファイルに対するパスに設定します。
|
/profile=default/subsystem=web/connector=HTTPS/ssl=configuration/:write-attribute(name=certificate-file,value=server.crt) |
| password |
トラストストアおよびキーストアに対するパスワード。デフォルト値は
changeit であるため、設定が動作するためにはキーストアのパスワードに一致するようこの値を変更する必要があります。
|
/profile=default/subsystem=web/connector=HTTPS/ssl=configuration/:write-attribute(name=password,value=changeit) |
| protocol |
使用する SSL プロトコルのバージョン。サポートされる値には、
SLv2、SSLv3、TLSv1、SSLv2+SSLv3、および ALL があります。デフォルト値は ALL です。
|
/profile=default/subsystem=web/connector=HTTPS/ssl=configuration/:write-attribute(name=protocol,value=ALL) |
| cipher-suite |
許可される暗号のカンマ区切りのリスト。JSSE の JVM デフォルト値には、使用すべきでない強度が低い暗号が含まれます。例では可能な暗号が 2 つのみですが、実際ではそれ以上の暗号を使用することになります。
|
/profile=default/subsystem=web/connector=HTTPS/ssl=configuration/:write-attribute(name=cipher-suite, value="TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA") |
| key-alias |
キーストア内のサーバー証明書に使用されるエイリアス。デフォルト値は
jboss です。
|
/profile=default/subsystem=web/connector=HTTPS/ssl=configuration/:write-attribute(name=key-alias,value=jboss) |
| truststore-type |
トラストストアのタイプ。
PKCS12 や Java の標準 JKS など、さまざまなタイプのキーストアが使用可能です。
|
/profile=default/subsystem=web/connector=HTTPS/ssl=configuration/:write-attribute(name=truststore-type,value=jks) |
| keystore-type |
キーストアのタイプ。
PKCS12 や Java の標準 JKS など、さまざまなタイプのキーストアが使用可能です。
|
/profile=default/subsystem=web/connector=HTTPS/ssl=configuration/:write-attribute(name=keystore-type,value=jks) |
| ca-certificate-file |
CA 証明書が含まれるファイル。JSSE の場合、これは
truststoreFile であり、キーストアと同じパスワードを使用します。クライアント証明書を検証するには、ca-certificate-file ファイルが使用されます。
|
/profile=default/subsystem=web/connector=HTTPS/ssl=configuration/:write-attribute(name=certificate-file,value=ca.crt) |
| ca-certificate-password | ca-certificate-file の証明書パスワード。下記の例では、パスワードを独自のマスクされたパスワードに置き換えます。
|
/profile=default/subsystem=web/connector=HTTPS/ssl=configuration/:write-attribute(name=ca-certificate-password,value=MASKED_PASSWORD) |
| ca-revocation-url |
呼び出しリストが含まれるファイルまたは URL。JSSE の場合は、
crlFile を参照し、SSL の場合は、SSLCARevocationFile を参照します。
|
/profile=default/subsystem=web/connector=HTTPS/ssl=configuration/:write-attribute(name=ca-revocation-url,value=ca.crl) |
| session-cache-size |
SSLSession キャッシュのサイズ。デフォルト値は
0 であり、セッションキャッシュを無効にします。
|
/profile=default/subsystem=web/connector=HTTPS/ssl=configuration/:write-attribute(name=session-cache-size,value=100) |
| session-timeout |
キャッシュされた SSLSession の有効期限が切れるまでの秒数。デフォルト値は
86400 秒 (24 時間) です。
|
/profile=default/subsystem=web/connector=HTTPS/ssl=configuration/:write-attribute(name=session-timeout,value=43200) |
10.12. 機密性の高い文字列のパスワードボールト
10.12.1. クリアテキストファイルでの機密性が高い文字列のセキュア化について
10.12.2. 機密性が高い文字列を格納する Java キーストアの作成
要件
keytoolコマンドを使用出来る必要があります。これは Java Runtime Environment (JRE) により提供されます。このファイルのパスを見つけます。Red Hat Enterprise Linux では、これは/usr/bin/keytoolにインストールされます。
手順10.16 Java キーストアの設定
キーストアと他の暗号化された情報を格納するディレクトリーを作成します。
キーストアと他の重要な情報を保持するディレクトリーを作成します。この残りの手順では、ディレクトリーが/home/USER/vault/であることを前提とします。keytoolで使用するパラメーターを決定します。以下のパラメーターを決定します。- alias
- エイリアスは資格情報コンテナまたはキーストアに格納された vault または他のデータの一意の ID です。この手順の最後にあるコマンド例のエイリアスは
vaultです。エイリアスは大文字と小文字を区別します。 - keyalg
- 暗号化に使用するアルゴリズム。デフォルト値は
DSAです。この手順の例ではRSAです。利用可能な他の選択肢については、JRE およびオペレーティングシステムのドキュメンテーションを参照してください。 - keysize
- 暗号化キーのサイズにより、ブルートフォース攻撃により復号化する困難さが影響を受けます。キーのデフォルトサイズは 1024 です。これは 512 〜 1024 の範囲にあり、64 の倍数である必要があります。この手順の例では
1024を使用します。 - keystore
- 暗号化された情報と暗号化方法に関する情報を保持するデータベースのキーストア。キーストアを指定しない場合、使用するデフォルトのキーストアはホームディレクトリーの
.keystoreという名前のファイルです。これは、キーストアにデータを初めて追加したときに作成されます。この手順の例では、vault.keystoreキーストアを使用します。
keystoreコマンドには他の多くのオプションがあります。詳細については、JRE またはオペレーティングシステムのドキュメンテーションを参照してください。keystoreコマンドが尋ねる質問の回答を決定します。keystoreは、キーストアエントリーに値を入力するために次の情報を必要とします。- キーストアパスワード
- キーストアを作成する場合は、パスワードを設定する必要があります。将来キーストアを使用するために、パスワードを提供する必要があります。覚えやすい強度の高いパスワードを作成します。キーストアは、パスワードや、キーストアが存在するファイルシステムおよびオペレーティングシステムのセキュリティーと同程度にセキュアです。
- キーパスワード (任意設定)
- キーストアパスワードに加え、保持する各キーにパスワードを指定することが可能です。このようなキーを使用するには、使用するたびにパスワードを提供する必要があります。通常、このファシリティーは使用されません。
- 名前 (名) と 名字 (姓)
- この情報と一覧の他の情報は、一意にキーを識別して他のキーの階層に置くのに役立ちます。名前である必要はありませんが、キーに一意な 2 つの言葉である必要があります。この手順の例では、
Accounting Administratorを使用します。これが証明書のコモンネームになります。 - 組織単位
- 証明書を使用する人物を特定する単一の言葉です。アプリケーションユニットやビジネスユニットである場合もあります。この手順の例では
AccountingServicesを使用します。通常、1 つのグループやアプリケーションによって使用されるキーストアはすべて同じ組織単位を使用します。 - 組織
- 通常、所属する組織名を表す単一の言葉になります。一般的に、1 つの組織で使用されるすべての証明書で同じになります。この例では
MyOrganizationを使用します。 - 市または自治体
- お住まいの市名。
- 州または県
- お住まいの州や県、または同等の行政区画
- 国
- 2 文字の国コード
これらすべての情報によってキーストアや証明書の階層が作成され、一貫性のある一意な名前付け構造が確実に使用されるようにします。keytoolコマンドを実行し、収集した情報を提供します。例10.27
keystoreコマンドの入出力例$ keytool -genkey -alias vault -keyalg RSA -keysize 1024 -keystore /home/USER/vault/vault.keystore Enter keystore password: vault22 Re-enter new password:vault22 What is your first and last name? [Unknown]:
Accounting AdministratorWhat is the name of your organizational unit? [Unknown]:AccountingServicesWhat is the name of your organization? [Unknown]:MyOrganizationWhat is the name of your City or Locality? [Unknown]:RaleighWhat is the name of your State or Province? [Unknown]:NCWhat is the two-letter country code for this unit? [Unknown]:USIs CN=Accounting Administrator, OU=AccountingServices, O=MyOrganization, L=Raleigh, ST=NC, C=US correct? [no]:yesEnter key password for <vault> (RETURN if same as keystore password):
/home/USER/vault/ ディレクトリに vault.keystore という名前のファイルが作成されます。JBoss Enterprise Application Platform のパスワードなど、暗号化された文字列を格納するため使用される vault という 1 つのキーがこのファイルに保存されます。
10.12.3. キーストアパスワードのマスキングとパスワード vault の初期化
要件
EAP_HOME/bin/vault.shアプリケーションはコマンドラインインターフェースからアクセスできる必要があります。
vault.shコマンドを実行します。EAP_HOME/bin/vault.shを実行します。0を入力して新しい対話セッションを開始します。暗号化されたファイルが保存されるディレクトリを入力します。
このディレクトリはある程度保護されている必要がありますが、JBoss Enterprise Application Platform がアクセスできなければなりません。「機密性が高い文字列を格納する Java キーストアの作成」 の手順に従うと、キーストアはホームディレクトリにあるvault/というディレクトリの中にあります。この例では/home/USER/vault/を使用します。注記
必ずディレクトリ名の最後にスラッシュが含まれるようにしてください。ご使用のオペレーティングシステムに応じて/または\を使用します。キーストアへのパスを入力します。
キーストアファイルへの完全パスを入力します。この例では/home/USER/vault/vault.keystoreを使用します。キーストアパスワードを暗号化します。
次の手順に従って、設定ファイルやアプリケーションで安全に使用できるようキーストアのパスワードを暗号化します。キーストアパスワードを入力します。
入力を促されたらキーストアのパスワードを入力します。salt 値を入力します。
8 文字の salt 値を入力します。salt 値は反復回数(下記) と共にハッシュ値の作成に使用されます。反復回数を入力します。
反復回数の値を入力します。マスクされたパスワード情報を書き留めておきます。
マスクされたパスワード と salt、反復回数は標準出力へ書き出されます。これらの情報を安全な場所に書き留めておきます。攻撃者がこれらの情報を使用してパスワードを復号化する可能性があるからです。vault のエイリアスを入力します。
入力を促されたら、vault のエイリアスを入力します。「機密性が高い文字列を格納する Java キーストアの作成」 に従って vault を作成した場合、エイリアスはvaultになります。
対話コンソールを終了します。
exitを入力して対話コンソールを終了します。
設定ファイルとデプロイメントで使用するため、キーストアパスワードがマスキングされます。また、vault が完全設定され、すぐ使用できる状態になります。
10.12.4. パスワード vault を使用するよう JBoss Enterprise Application Platform を設定
設定ファイルにあるパスワードや機密性の高いその他の属性をマスキングする前に、これらを保存し復号化するパスワード vault を JBoss Enterprise Application Platform が認識するようにする必要があります。次の手順に従ってこの機能を有効にします。
手順10.17 パスワード vault の設定
コマンドの適切な値を決定します。
キーストアの作成に使用されるコマンドによって決定される以下のパラメーターの値を決定します。キーストア作成の詳細は 「機密性が高い文字列を格納する Java キーストアの作成」 および 「キーストアパスワードのマスキングとパスワード vault の初期化」 を参照してください。パラメーター 説明 KEYSTORE_URL ファイルシステムのパスまたはキーストアファイル。通常vault.keystoreのようになります。KEYSTORE_PASSWORD キーストアのアクセスに使用されるパスワード。この値はマスクされる必要があります。KEYSTORE_ALIAS キーストアの名前。SALT キーストアの値を暗号化および復号化するために使用されるソルト。ITERATION_COUNT 暗号化アルゴリズムが実行される回数。ENC_FILE_DIR キーストアコマンドが実行されるディレクトリへのパス。通常、パスワード vault が含まれるディレクトリになります。host (管理対象ドメインのみ) 設定するホストの名前。管理 CLI を使用してパスワード vault を有効にします。
次のコマンドの 1 つを実行します。実行するコマンドは、管理対象ドメインを使用するか、スタンドアロンサーバー設定を使用するかによって異なります。コマンドの値は、手順の最初で使用した値に置き換えます。管理対象ドメイン
/host=YOUR_HOST/core-service=vault:add(vault-options=[("KEYSTORE_URL" => "PATH_TO_KEYSTORE"), ("KEYSTORE_PASSWORD" => "MASKED_PASSWORD"), ("KEYSTORE_ALIAS" => "ALIAS"), ("SALT" => "SALT"),("ITERATION_COUNT" => "ITERATION_COUNT"), ("ENC_FILE_DIR" => "ENC_FILE_DIR")])スタンドアロンサーバー
/core-service=vault:add(vault-options=[("KEYSTORE_URL" => "PATH_TO_KEYSTORE"), ("KEYSTORE_PASSWORD" => "MASKED_PASSWORD"), ("KEYSTORE_ALIAS" => "ALIAS"), ("SALT" => "SALT"),("ITERATION_COUNT" => "ITERATION_COUNT"), ("ENC_FILE_DIR" => "ENC_FILE_DIR")])
仮の値を用いたコマンドの例は次のとおりです。/core-service=vault:add(vault-options=[("KEYSTORE_URL" => "/home/user/vault/vault.keystore"), ("KEYSTORE_PASSWORD" => "MASK-3y28rCZlcKR"), ("KEYSTORE_ALIAS" => "vault"), ("SALT" => "12438567"),("ITERATION_COUNT" => "50"), ("ENC_FILE_DIR" => "/home/user/vault/")])
パスワード vault を使用してマスキングされた文字列を復号化するよう JBoss Enterprise Application Platform が設定されます。vault に文字列を追加し、設定で使用する場合は 「Java キーストアに暗号化された機密性の高い文字列の保存および読み出し」 を参照してください。
10.12.5. Java キーストアに暗号化された機密性の高い文字列の保存および読み出し
パスワードや、機密性の高いその他の文字列が平文の設定ファイルに含まれるのはセキュアではありません。JBoss Enterprise Application Platform には、このような機密性の高い文字列をマスキングして暗号化されたキーストアに保存する機能や、設定ファイルでマスクされた値を使用する機能が含まれています。
要件
EAP_HOME/bin/vault.shアプリケーションはコマンドラインインターフェースからアクセスできる必要があります。
手順10.18 Java キーストアの設定
vault.shコマンドを実行します。EAP_HOME/bin/vault.shを実行します。0を入力して新しい対話セッションを開始します。暗号化されたファイルが保存されるディレクトリを入力します。
「機密性が高い文字列を格納する Java キーストアの作成」 に従って作業を行った場合は、キーストアはホームディレクトリのvault/というディレクトリにあります。ほとんどの場合では、暗号化されたすべての情報をキーストアとして同じ場所に保存するのが普通です。この例では/home/USER/vault/ディレクトリを使用します。注記
必ずディレクトリ名の最後にスラッシュが含まれるようにしてください。ご使用のオペレーティングシステムに応じて/または\を使用します。キーストアへのパスを入力します。
キーストアファイルへの完全パスを入力します。この例では/home/USER/vault/vault.keystoreを使用します。キーストアパスワード、vault 名、ソルト、反復回数を入力します。
入力を促されたら、キーストアパスワード、vault 名、ソルト、反復回数を入力します。ハンドシェイクが実行されます。パスワードを保存するオプションを選択します。
オプション0を選択して、パスワードや機密性の高い他の文字列を保存します。値を入力します。
入力を促されたら、値を 2 回入力します。値が一致しない場合は再度入力するよう要求されます。vault ブロックを入力します。
同じリソースに関連する属性のコンテナである vault ブロックを入力します。属性名の例としてはds_ExampleDSなどが挙げられます。データソースまたは他のサービス定義で、暗号化された文字列への参照の一部を形成します。属性名を入力します。
保存する属性の名前を入力します。passwordが属性名の例の 1 つになります。結果属性が保存されたことが、以下のようなメッセージによって示されます。
Attribute Value for (ds_ExampleDS, password) saved
暗号化された文字列に関する情報を書き留めます。
メッセージは vault ブロック、属性名、共有キー、および設定で文字列を使用する場合のアドバイスを表示する標準出力を出力します。安全な場所にこの情報を書き留めておくようにしてください。出力例は次のとおりです。******************************************** Vault Block:ds_ExampleDS Attribute Name:password Shared Key:N2NhZDYzOTMtNWE0OS00ZGQ0LWE4MmEtMWNlMDMyNDdmNmI2TElORV9CUkVBS3ZhdWx0 Configuration should be done as follows: VAULT::ds_ExampleDS::password::N2NhZDYzOTMtNWE0OS00ZGQ0LWE4MmEtMWNlMDMyNDdmNmI2TElORV9CUkVBS3ZhdWx0 ********************************************
設定で暗号化された文字列を使用します。
プレーンテキストの文字列の代わりに、前の設定手順の文字列を使用します。以下は、上記の暗号化されたパスワードを使用するデータソースになります。... <subsystem xmlns="urn:jboss:domain:datasources:1.0"> <datasources> <datasource jndi-name="java:jboss/datasources/ExampleDS" enabled="true" use-java-context="true" pool-name="H2DS"> <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1</connection-url> <driver>h2</driver> <pool></pool> <security> <user-name>sa</user-name> <password>${VAULT::ds_ExampleDS::password::N2NhZDYzOTMtNWE0OS00ZGQ0LWE4MmEtMWNlMDMyNDdmNmI2TElORV9CUkVBS3ZhdWx0}</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> ...式が許可されるドメインまたはスタンドアロン設定ファイルであれば、どこでも暗号化された文字列を使用することができます。注記
特定のサブシステム内で式が許可されるかを確認するには、そのサブシステムに対して次の CLI コマンドを実行します。/host=master/core-service=management/security-realm=TestRealm:read-resource-description(recursive=true)
このコマンドの出力で、expressions-allowedパラメーターの値を探します。値が true であればこのサブシステムの設定内で式を使用できます。文字列をキーストアに格納した後、次の構文を使用してクリアテキストの文字列を暗号化された文字列に置き換えます。${VAULT::<replaceable>VAULT_BLOCK</replaceable>::<replaceable>ATTRIBUTE_NAME</replaceable>::<replaceable>ENCRYPTED_VALUE</replaceable>}実環境の値の例は次のとおりです。vault ブロックはds_ExampleDS、属性はpasswordです。<password>${VAULT::ds_ExampleDS::password::N2NhZDYzOTMtNWE0OS00ZGQ0LWE4MmEtMWNlMDMyNDdmNmI2TElORV9CUkVBS3ZhdWx0}</password>
10.12.6. アプリケーションで機密性の高い文字列を保存および解決
JBoss Enterprise Application Platform の設定要素は、セキュリティー vault メカニズムを通じて Java キーストアに保存される値に対して暗号化された文字列を解決する機能をサポートしています。この機能に対するサポートを独自のアプリケーションに追加することができます。
この手順を実行する前に、vault ファイルを格納するディレクトリが存在することを確認してください。JBoss Enterprise Application Platform を実行するユーザーが vault ファイルを読み書きできるパーミッションを持っていれば、vault ファイルの場所はどこでも構いません。この例では、vault/ ディレクトリを /home/USER/vault/ ディレクトリに置きます。vault 自体は vault/ ディレクトリの中にある vault.keystore と呼ばれるファイルになります。
例10.28 vault へのパスワードの文字列の追加
EAP_HOME/bin/vault.sh コマンドを用いて文字列を vault へ追加します。次の画面出力にコマンドと応答がすべて含まれています。ユーザー入力の値は強調文字で表されています。出力の一部は書式上、削除されています。Microsoft Windows ではコマンド名は vault.bat になります。Microsoft Windows のファイルパスでは、ディレクトリの分離記号として / ではなく \ が使用されることに注意してください。
[user@host bin]$ ./vault.sh ********************************** **** JBoss Vault ******** ********************************** Please enter a Digit:: 0: Start Interactive Session 1: Remove Interactive Session 2: Exit0Starting an interactive session Enter directory to store encrypted files:/home/user/vault/Enter Keystore URL:/home/user/vault/vault.keystoreEnter Keystore password:...Enter Keystore password again:...Values match Enter 8 character salt:12345678Enter iteration count as a number (Eg: 44):25Enter Keystore Alias:vaultVault is initialized and ready for use Handshake with Vault complete Please enter a Digit:: 0: Store a password 1: Check whether password exists 2: Exit0Task: Store a password Please enter attribute value:saPlease enter attribute value again:saValues match Enter Vault Block:DSEnter Attribute Name:thePassAttribute Value for (DS, thePass) saved Please make note of the following: ******************************************** Vault Block:DS Attribute Name:thePass Shared Key:OWY5M2I5NzctYzdkOS00MmZhLWExZGYtNjczM2U5ZGUyOWIxTElORV9CUkVBS3ZhdWx0 Configuration should be done as follows: VAULT::DS::thePass::OWY5M2I5NzctYzdkOS00MmZhLWExZGYtNjczM2U5ZGUyOWIxTElORV9CUkVBS3ZhdWx0 ******************************************** Please enter a Digit:: 0: Store a password 1: Check whether password exists 2: Exit2
VAULT で始まる行です。
例10.29 vault されたパスワードを使用するサーブレット
package vaulterror.web;
import java.io.IOException;
import java.io.Writer;
import javax.annotation.Resource;
import javax.annotation.sql.DataSourceDefinition;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;
/*@DataSourceDefinition(
name = "java:jboss/datasources/LoginDS",
user = "sa",
password = "sa",
className = "org.h2.jdbcx.JdbcDataSource",
url = "jdbc:h2:tcp://localhost/mem:test"
)*/
@DataSourceDefinition(
name = "java:jboss/datasources/LoginDS",
user = "sa",
password = "VAULT::DS::thePass::OWY5M2I5NzctYzdkOS00MmZhLWExZGYtNjczM2U5ZGUyOWIxTElORV9CUkVBS3ZhdWx0",
className = "org.h2.jdbcx.JdbcDataSource",
url = "jdbc:h2:tcp://localhost/mem:test"
)
@WebServlet(name = "MyTestServlet", urlPatterns = { "/my/" }, loadOnStartup = 1)
public class MyTestServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Resource(lookup = "java:jboss/datasources/LoginDS")
private DataSource ds;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Writer writer = resp.getWriter();
writer.write((ds != null) + "");
}
}
10.13. FIPS 140-2 準拠の暗号化
10.13.1. FIPS 140-2 の準拠について
10.13.2. FIPS 140-2 準拠のパスワード
- 7 文字以上であること。
- 以下の文字クラスのうち最低でも 3 つのクラスの文字が含まれている必要があります。
- ASCII 数字
- 小文字の ASCII
- 大文字の ASCII
- 英数字以外の ASCII
- ASCII 以外の文字
10.13.3. Red Hat Enterprise Linux 6 にて SSL の FIPS 140-2 準拠の暗号を有効化
要件
- Red Hat Enterprise Linux 6 が FIPS 140-2 に準拠するよう設定されている必要があります。https://access.redhat.com/knowledge/solutions/137833 を参照してください。
手順10.19 SSL に対して FIPS 140-2 準拠の暗号化を有効にする
データベースの作成
jbossユーザーが所有するディレクトリに NSS データベースを作成します。$ mkdir -p /usr/share/jboss-as/nssdb $ chown jboss /usr/share/jboss-as/nssdb $ modutil -create -dbdir /usr/share/jboss-as/nssdb
NSS 設定ファイルの作成
次の内容が含まれるnss_pkcsll_fips.cfgという名前の新しいテキストファイルを/usr/share/jboss-asディレクトリに作成します。name = nss-fips nssLibraryDirectory=/usr/lib64 nssSecmodDirectory=/usr/share/jboss-as/nssdb nssModule = fips
NSS 設定ファイルには以下が指定されている必要があります。- 名前
- NSS ライブラリが存在するディレクトリ
- 手順 1 に従って作成された NSS データベースが存在するディレクトリ
Red Hat Enterprise Linux 6 の 64 ビットバージョンを実行していない場合は、/usr/lib64の代わりに/usr/libをnssLibraryDirectoryに設定します。SunPKCS11 プロバイダーの有効化
JRE ($JAVA_HOME/jre/lib/security/java.security) のjava.security設定ファイルを編集し、次の行を追加します。security.provider.1=sun.security.pkcs11.SunPKCS11 /usr/share/jboss-as/nss_pkcsll_fips.cfg
この行に指定されている設定ファイルは手順 2 で作成されたファイルであることに注意してください。このプロバイダーを優先するため、このファイルにある他のsecurity.provider.X行の値 (X) に 1 を足す必要があります。NSS ライブラリに対して FIPS モードを有効にする
次のようにmodutilコマンドを実行し、FIPS モードを有効にします。modutil -fips true -dbdir /usr/share/jboss-as/nssdb
ここで指定するディレクトリは手順 1 で作成したものであることに注意してください。この時点で、セキュリティーライブラリエラーが発生し、NSS 共有オブジェクトの一部に対してライブラリ署名の再生成が必要になることがあります。FIPS トークンのパスワードの変更
次のコマンドを使用して FIPS トークンのパスワードを設定します。PASSWORD は必要なパスワードに置き換えます。Modutil -changepw "PASSWORD" -dbdir /usr/share/jboss-as/nssdb
FIPS トークンに使用されるパスワードは FIPS 準拠のパスワードでなければなりません。NSS ツールを使用した証明書の作成
次のコマンドを入力し、NSS ツールを使用して証明書を作成します。certutil -S -k rsa -n jbossweb -t "u,u,u" -x -s "CN=localhost, OU=MYOU, O=MYORG, L=MYCITY, ST=MYSTATE, C=MY" -d /usr/share/jboss-as/nssdb
PKCS11 キーストアを使用するよう HTTPS コネクターを設定する
JBoss CLI ツールで次のコマンドを使用し、HTTPS コネクターを追加します。/subsystem=web/connector=https/:add(socket-binding=https,scheme=https,protocol=HTTP/1.1,secure=true)
次に、以下のコマンドを使用して SSL 設定を追加します。PASSWORD を 手順 4 の FIPS 準拠のパスワードに置き換えます。/subsystem=web/connector=https/ssl=configuration:add(name=https,password=PASSWORD,keystore-type=PCKS11, cipher-suite="SSL_RSA_WITH_3DES_EDE_CBC_SHA,SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_DSS_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA, TLS_DHE_DSS_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA, TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA,TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA,TLS_ECDH_RSA_WITH_AES_128_CBC_SHA, TLS_ECDH_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA,TLS_ECDH_anon_WITH_AES_128_CBC_SHA, TLS_ECDH_anon_WITH_AES_256_CBC_SHA")
検証
次のコマンドを実行し、JVM が PKCS11 キーストアから公開鍵を読み取れることを検証します。keytool -list -storetype pkcs11
例10.30 FIPS 140-2 に準拠した HTTPS コネクターの XML 設定
<connector name="https" protocol="HTTP/1.1" scheme="https" socket-binding="https" secure="true">
<ssl name="https" password="****"
cipher-suite="SSL_RSA_WITH_3DES_EDE_CBC_SHA,SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA,
TLS_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA,
TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,
TLS_DHE_DSS_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,
TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA,TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA,
TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA,
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,
TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA,TLS_ECDH_RSA_WITH_AES_128_CBC_SHA,
TLS_ECDH_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA,
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,
TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA,TLS_ECDH_anon_WITH_AES_128_CBC_SHA,
TLS_ECDH_anon_WITH_AES_256_CBC_SHA"
keystore-type="PKCS11"/>
</connector>
cipher-suite 属性には改行が挿入されていることに注意してください。
第11章 セキュリティー管理リファレンス
11.1. 含まれる認証モジュール
Role という単語が Code 名に含まれます。
Code 値またはフルネーム (パッケージ修飾) 使用します。
認証モジュール
表11.1 Client
| コード | Client
|
| クラス | org.jboss.security.ClientLoginModule
|
| 説明 |
このログインモジュールは、JBoss Enterprise Application Platform がクライアントとして動作するときに呼び出し元 ID とクレデンシャルを確立するよう設定されています。これは、実際のサーバー認証に使用されるセキュリティードメインの一部として使用しないでください。
|
表11.2 クライアントモジュールオプション
| オプション | タイプ | デフォルト | 説明 |
|---|---|---|---|
multi-threaded | true または false
| false
|
各スレッドが独自のプリンシパルとクレデンシャルストレージを持つ場合は、true に設定します。VM 内のすべてのスレッドが同じ ID とクレデンシャルを共有するよう指定する場合は false に設定します。
|
password-stacking
| useFirstPass または false
| false
|
このログインモジュールが ID として使用する LoginContext に格納された情報を探すよう指定する場合は、useFirstPass に設定します。このオプションは、他のログインモジュールをスタックする場合に使用できます。
|
>restore-login-identity
| true または false
| false
|
() メソッドの先頭に示された ID とクレデンシャルを logout() メソッドの呼び出し後に復元する必要がある場合は true に設定します。
|
表11.3 Certificate
| コード | Certificate
|
| クラス | org.jboss.security.auth.spi.BaseCertLoginModule
|
| 説明 |
このログインモジュールは、
X509 Certificates に基づいてユーザーを認証するよう設計されています。この使用例は、Web アプリケーションの CLIENT-CERT 認証です。
|
表11.4 Certificate モジュールオプション
| オプション | タイプ | デフォルト | 説明 |
|---|---|---|---|
securityDomain
| 文字列 |
なし
|
信頼済み証明書を保持するトラストストア用 JSSE 設定を持つセキュリティードメインの名前。
|
verifier
| クラス |
なし
|
ログイン証明書の検証に使用する
org.jboss.security.auth.certs.X509CertificateVerifier のクラス名。
|
表11.5 CertificateUsers
| コード | CertificateUsers
|
| クラス | org.jboss.security.auth.spi.UsersRolesLoginModule
|
| 説明 |
プロパティーリソースを使用します。最初のコードがユーザー名をパスワードにマッピングし、次のコードがユーザー名をロールにマッピングします。
|
表11.6 CertificateUsers モジュールオプション
| オプション | タイプ | デフォルト | 説明 |
|---|---|---|---|
unauthenticatedIdentity
| 文字列 |
なし
|
認証情報を含まない要求に割り当てる必要があるプリンシパル名を定義します。これにより、保護されていないサーブレットは特定のロールを必要としない EJB でメソッドを呼び出すことができるようになります。このようなプリンシパルでは、ロールが割り当てられず、
unchecked permission 制約に関連付けられたセキュアでない EJB または EJB メソッドにのみアクセスできます。
|
password-stacking
| useFirstPass または false
| false
|
このログインモジュールが ID として使用する
LoginContext に格納された情報を探すよう指定する場合は、useFirstPass に設定します。このオプションは、他のログインモジュールをスタックする場合に使用できます。
|
hashAlgorithm | 文字列 |
なし
|
パスワードをハッシュ化するために使用する
java.security.MessageDigest アルゴリズムの名前。デフォルト値はないため、ハッシュを有効にするためにこのオプションを明示的に設定する必要があります。hashAlgorithm が指定された場合は、inputPassword 引数として UsernamePasswordLoginModule.validatePassword に渡す前に CallbackHandler から取得されたクリアテキストパスワードがハッシュ化されます。users.properties ファイルに格納された expectedPassword も、同様にハッシュ化する必要があります。java.security.MessageDigest およびこのクラスがサポートするアルゴリズムの詳細は http://docs.oracle.com/javase/6/docs/api/java/security/MessageDigest.html を参照してください。
|
hashEncoding
| base64 または hex
| base64
| hashAlgorithm も設定されている場合、ハッシュ化されたパスワードの文字列形式。
|
hashCharSet
| 文字列 |
コンテナの環境で設定されたデフォルトのエンコーディング。
|
クリアテキストのパスワードをバイトアレイに変換するために使用されるエンコーディング。
|
usersProperties
|
プロパティーファイルまたはリソースの完全修飾ファイルパスまたは完全修飾ファイル名。
| users.properties
|
ユーザーとパスワード間のマッピングが含まれるファイル。ファイルの各プロパティーの形式は
username=password です。
|
rolesProperties
| プロパティーファイルまたはリソースの完全修飾ファイルパスまたは完全修飾ファイル名。 | roles.properties
|
ユーザーとロール間のマッピングを含むファイル。ファイルの各プロパティーの形式は
username=role1,role2,...,roleN です。
|
ignorePasswordCase
| true または false
| false
|
パスワード比較で大文字と小文字の区別を無視するかどうか。これは、ハッシュ化されたパスワードが大文字であるか小文字であるかが重要でない、ハッシュ化パスワードエンコーディングの場合に役に立ちます。
|
principalClass
| 完全修飾クラス名 |
なし
|
プリンシパル名として String 引数を取るコンストラクターを含む
Principal 実装クラス。
|
roleGroupSeparator
|
単一の文字
| . (ピリオド 1 つ)
| rolesGroup ファイルでユーザー名とロールグループ名を区別するために使用される文字。
|
defaultUsersProperties
| 文字列 | defaultUsers.properties
|
usersProperties ファイルが見つからない場合に使用するリソースまたはファイルの名前。
|
defaultRolesProperties
| 文字列 | defaultRoles.properties
| rolesProperties ファイルが見つからない場合に使用するリソースまたはファイルの名前。
|
hashUserPassword
| true または false
| true
| hashAlgorithm が指定された場合にユーザーが入力したパスワードをハッシュ化するかどうか。デフォルト値は true です。
|
hashStorePassword
| true または false
| true
| hashAlgorithm が指定された場合に getUsersPassword() から返されたストアパスワードをハッシュ化するかどうか。
|
digestCallback
| 完全修飾クラス名 |
なし
|
ソルト値などのプレまたはポストダイジェストコンテンツを含む
org.jboss.crypto.digest.DigestCallback 実装のクラス名。hashAlgorithm が指定された場合にのみ使用されます。
|
storeDigestCallback
| 完全修飾クラス名 |
なし
|
ストアパスワードをハッシュ化するソルト値などのプレまたはポストダイジェストコンテンツを含む
org.jboss.crypto.digest.DigestCallback 実装のクラス名。hashStorePassword が true であり、hashAlgorithm が指定された場合にのみ使用されます。
|
callback.option.STRING
| 各種 | なし | callback.option. の前に指定されたすべてのオプションは、DigestCallback.init(Map) メソッドに渡されます。入力されたユーザー名は、常に javax.security.auth.login.name オプションを介して渡され、入力/ストアパスワードは、javax.security.auth.login.password オプションを介して digestCallback または storeDigestCallback に渡されます。
|
表11.7 CertificateRoles
| コード | CertificateRoles
|
| クラス | org.jboss.security.auth.spi.CertRolesLoginModule
|
| 説明 |
このログインモジュールは、Certificate ログインモジュールを拡張して、プロパティーファイルからロールマッピング機能を追加します。同じすべてのオプションを Certificate ログインモジュールとして取得し、次のオプションを追加します。
|
表11.8 CertificateRoles モジュールオプション
| オプション | タイプ | デフォルト | 説明 |
|---|---|---|---|
rolesProperties
| 文字列 | roles.properties
|
各ユーザーに割り当てるロールを含むリソースまたはファイルの名前。ロールプロパティーファイルの形式は username=role1,role2 である必要があります。username は証明書の DN で、
= (等記号) やスペース文字をすべてエスケープします。正しい形式を用いた例は次のとおりです。
CN\=unit-tests-client,\ OU\=Red\ Hat\ Inc.,\ O\=Red\ Hat\ Inc.,\ ST\=North\ Carolina,\ C\=US=JBossAdmin |
defaultRolesProperties
| 文字列 | defaultRoles.properties
| rolesProperties ファイルが見つからない場合に使用するリソースまたはファイルの名前。
|
roleGroupSeparator
| 単一の文字 | . (ピリオド 1 つ)
| roleProperties ファイルでどの文字をロールグループセパレーターとして使用するか。
|
表11.9 Database
| コード | Database |
| クラス | org.jboss.security.auth.spi.DatabaseServerLoginModule
|
| 説明 |
認証とロールマッピングをサポートする JDBC ベースのログインモジュール。これは、次の定義を使用して、2 つの論理テーブルに基づきます。
|
表11.10 Database モジュールオプション
| オプション | タイプ | デフォルト | 説明 |
|---|---|---|---|
dsJndiName
| JNDI リソース |
なし
|
認証情報を保持する JNDI リソースの名前。このオプションは必須です。
|
principalsQuery
| 準備済み SQL ステートメント | select Password from Principals where PrincipalID=?
|
プリンシパルに関する情報を取得するための準備済み SQL クエリー。
|
rolesQuery
| 準備済み SQL ステートメント | select Role, RoleGroup from Roles where PrincipalID=?
|
ロールの情報を取得するための準備済み SQL クエリー。
select Role, RoleGroup from Roles where PrincipalID=? と同等である必要があります。ここで、Role はロール名で、RoleGroup 列の値は常に R が大文字である Roles または CallerPrincipal である必要があります。
|
表11.11 DatabaseCertificate
| コード | DatabaseCertificate
|
| クラス | org.jboss.security.auth.spi.DatabaseCertLoginModule
|
| 説明 |
このログインモジュールは、Certificate ログインモジュールを拡張して、データベーステーブルからロールマッピング機能を追加します。同じオプションと次の追加オプションが存在します。
|
表11.12 DatabaseCertificate モジュールオプション
| オプション | タイプ | デフォルト | 説明 |
|---|---|---|---|
dsJndiName
| JNDI リソース |
|
認証情報を保持する JNDI リソースの名前。このオプションは必須です。
|
rolesQuery
| 準備済み SQL ステートメント | select Role,RoleGroup from Roles where PrincipalID=?
|
ロールをマップするために実行される SQL 準備済みステートメント。これは、
select Role, RoleGroup from Roles where PrincipalID=? と同等である必要があります。Role はロール名で、RoleGroup 列の値は常に R が大文字である Roles または CallerPrincipal である必要があります。
|
suspendResume
| true または false
| true
|
データベース操作中に既存の JTA トランザクションを一時停止するかどうか。
|
表11.13 Identity
| コード | Identity
|
| クラス | org.jboss.security.auth.spi.IdentityLoginModule
|
| 説明 |
モジュールオプションで指定されたプリンシパルをモジュールに対して認証されたサブジェクトと関連付けます。使用される Principal クラスのタイプは
org.jboss.security.SimplePrincipal. です。プリンシパルオプションが指定されない場合は、名前が guest のプリンシパルが使用されます。
|
表11.14 Identity モジュールオプション
| オプション | タイプ | デフォルト | 説明 |
|---|---|---|---|
principal
| 文字列 | guest
|
プリンシパルに使用する名前。
|
roles
| 文字列のカンマ区切りリスト |
なし
|
サブジェクトに割り当てられるロールのカンマ区切りリスト。
|
表11.15 Ldap
| コード | Ldap
|
| クラス | org.jboss.security.auth.spi.LdapLoginModule
|
| 説明 |
ユーザー名とパスワードが、JNDI LDAP プロバイダーを使用してアクセスできる LDAP サーバーに格納された場合に、LDAP サーバーに対して認証します。多くのオプションは、LDAP プロバイダーまたは環境によって決定されるため、必須ではありません。
|
表11.16 Ldap モジュールオプション
| オプション | タイプ | デフォルト | 説明 |
|---|---|---|---|
java.naming.factory.initial
| クラス名 | com.sun.jndi.ldap.LdapCtxFactory
| InitialContextFactory 実装クラス名。
|
java.naming.provider.url
| ldap:// URL
|
なし
|
LDAP サーバーの URL。
|
java.naming.security.authentication
| none、simple、または SASL メカニズムの名前。
| simple
|
LDAP サーバーにバインドするために使用するセキュリティーレベル。
|
java.naming.security.protocol
| トランスポートプロトコル |
指定されない場合は、プロバイダーによって決定されます。
|
SSL などの、セキュアアクセスに使用するトランスポートプロトコル。
|
java.naming.security.principal
| 文字列 |
なし
|
サービスに対する呼び出し元を認証するプリンシパルの名前。これは、以下に示された他のプロパティーから構築されます。
|
java.naming.security.credentials
| クレデンシャルタイプ |
なし
|
認証スキームにより使用されるクレデンシャルのタイプ。一部の例には、ハッシュ化されたパスワード、クリアテキストパスワード、キー、または証明書が含まれます。このプロパティーが指定されない場合は、動作がサービスプロバイダーにより決定されます。
|
principalDNPrefix
| 文字列 |
なし
|
ユーザー DN を形成するユーザー名に追加されるプレフィックス。ユーザーにユーザー名の指定を要求したり、
principalDNPrefix および principalDNSuffix を使用して完全修飾 DN を構築したりできます。
|
principalDNSuffix
| 文字列 |
|
ユーザー DN を形成するユーザー名に追加されるサフィックス。ユーザーにユーザー名の指定を要求したり、
principalDNPrefix および principalDNSuffix を使用して完全修飾 DN を構築したりできます。
|
useObjectCredential
| true または false
|
false
|
JAAS PasswordCallback を使用した char[] パスワードではなく Callback の
org.jboss.security.auth.callback.ObjectCallback タイプを使用した不透明なオブジェクトとしてクレデンシャルを取得するかどうか。これにより、non-char[] クレデンシャル情報を LDAP サーバーに渡すことができるようになります。
|
rolesCtxDN
| 完全修飾 DN |
なし
|
ユーザーロールを検索するコンテキストの完全修飾 DN。
|
userRolesCtxDNAttributeName
|
属性
|
なし
|
ユーザーロールを検索するコンテキストの DN を含むユーザーオブジェクトの属性。これは、
rolesCtxDN と異なるため、ユーザーのロールを検索するコンテキストは各ユーザーに対して一意になることがあります。
|
rolesAttributeID
| 属性 | roles
|
ユーザーロールを含む属性の名前。
|
rolesAttributeIsDN
| true または false
| false
| roleAttributeID にロールオブジェクトの完全修飾 DN が含まれるかどうか。false の場合は、コンテキスト名の roleNameAttributeId 属性の値からロール名が取得されます。Microsoft Active Directory などの特定のディレクトリースキーマでは、この属性を true に設定する必要があります。
|
rolesNameAttributeID
| 属性 | group
|
ロール名を含む
roleCtxDN コンテキスト内の属性の名前。roleAttributeIsDN プロパティーが true に設定された場合、このプロパティーはロールオブジェクトの名前属性を見つけるために使用されます。
|
uidAttributeID
| 属性 | uid
|
ユーザー ID に対応する
UserRolesAttributeDN の属性の名前。これは、ユーザーロールを見つけるために使用されます。
|
matchOnUserDN
| true または false
| false
|
ユーザーロールの検索でユーザーの完全識別 DN またはユーザー名のみに一致するかどうか。
true の場合、完全 userDN は一致する値として使用されます。false の場合は、ユーザー名のみが uidAttributeName 属性に対して一致する値として使用されます。
|
allowEmptyPasswords
| true または false
| true
|
空白のパスワードを許可するかどうか。ほとんどの LDAP サーバーでは、空白のパスワードが匿名ログイン試行として扱われます。空のパスワードを拒否するには、これを false に設定します。
|
表11.17 LdapExtended
| コード | LdapExtended
|
| クラス | org.jboss.security.auth.spi.LdapExtLoginModule
|
| 説明 |
検索を使用してバインドユーザーと関連するロールを見つける別の LDAP ログインモジュール実装。ロールクエリーは再帰的に DN に従い、階層ロール構造をナビゲートします。同じ
java.naming オプションを Ldap モジュールとして使用し、Ldap モジュールの他のオプションの代わりに次のオプションを使用します。
認証は 2 つの手順で行われます。
|
表11.18 LdapExtended モジュールオプション
| オプション | タイプ | デフォルト | 説明 |
|---|---|---|---|
baseCtxDN
| 完全修飾 DN |
なし
|
ユーザー検索を開始する最上位コンテキストの固定 DN。
|
bindDN
| 完全修飾 DN |
なし
|
ユーザーおよびロールクエリーのために LDAP サーバーに対してバインドするために使用される DN。この DN は
baseCtxDN および rolesCtxDN の値に対する読み取りおよび検索パーミッションを必要とします。
|
bindCredential
| 文字列、オプションで暗号化 |
なし
| bindDN のパスワード。これは、jaasSecurityDomain が指定された場合に暗号化できます。
|
jaasSecurityDomain
| JMX ObjectName |
なし
| bindCredential を暗号化するために使用する JaasSecurityDomain の JMX ObjectName。パスワードの暗号化形式は、JaasSecurityDomain.encrypt64(byte[]) メソッドにより返された形式です。
|
baseFilter
| LDAP フィルター文字列 |
なし
|
認証するユーザーのコンテキストを見つけるために使用される検索フィルター。入力ユーザー名またはログインモジュールコールバックから取得された userDN が、
{0} 式が使用されたフィルターに置換されます。検索フィルターの一般的な例は (uid={0}) です。
|
rolesCtxDN
| 完全修飾 DN |
なし
|
ユーザーロールを検索するコンテキストの固定 DN。これは、実際のロールが存在する DN ではなく、ユーザーロールを含むオブジェクトが存在する DN です。たとえば、Microsoft Active Directory サーバーでは、これは、ユーザーアカウントが存在する DN です。
|
roleFilter
| LDAP フィルター文字列 |
|
認証済みユーザーと関連付けられたロールを検索するために使用される検索フィルター。入力ユーザー名またはログインモジュールコールバックから取得された userDN が
{0} 式が使用されたフィルターに置換されます。認証済み userDN は、{1} が使用されたフィルターに置換されます。入力ユーザー名に一致する検索フィルター例は、(member={0}) です。認証済み userDN に一致する他の例は (member={1}) です。
|
roleAttributeIsDN | true または false
| false
| roleAttributeID にロールオブジェクトの完全修飾 DN が含まれるかどうか。false の場合は、コンテキスト名の roleNameAttributeId 属性の値からロール名が取得されます。Microsoft Active Directory などの特定のディレクトリースキーマでは、この属性を true に設定する必要があります。
|
defaultRole
|
ロール名
|
なし
|
認証された全ユーザーに対して含まれるロール
|
parseRoleNameFromDN
| true または false
| false
|
クエリによって返された DN に roleNameAttributeID が含まれるかどうかを示すフラグ。
true に設定された場合、DN は roleNameATtributeID に対してチェックされます。false に設定された場合、DN は roleNameATtributeID に対してチェックされません。このフラグは LDAP クエリのパフォーマンスを向上できます。
|
parseUsername
| true または false
| false
|
DN がユーザー名に対して解析されるかどうかを示すフラグ。
true に設定された場合、 DN はユーザー名に対して解析されます。false に設定された場合、 DN はユーザー名に対して解析されません。このオプションは usernameBeginString および usernameEndString と共に使用されます。
|
usernameBeginString
|
文字列
|
なし
|
ユーザー名を公開するため、DN の最初から削除される文字列を定義します。このオプションは
usernameEndString と共に使用されます。
|
usernameEndString
|
文字列
|
なし
|
ユーザー名を公開するため、DN の最後から削除される文字列を定義します。このオプションは
usernameBeginString と共に使用されます。
|
roleNameAttributeID
| 属性 | group
|
ロール名を含む
roleCtxDN コンテキスト内の属性の名前。roleAttributeIsDN プロパティーが true に設定された場合、このプロパティーはロールオブジェクトの名前属性を見つけるために使用されます。
|
distinguishedNameAttribute
| 属性 | distinguishedName
|
ユーザーの DN を含むユーザーエントリーの属性の名前。これは、ユーザー自身の DN に正しいユーザーマッピングを防ぐ特殊文字 (バックスラッシュなど) が含まれる場合に、必要になることがあります。属性が存在しない場合は、エントリーの DN が使用されます。
|
roleRecursion
| 整数 | 0
|
ロール検索が一致するコンテキストで行われる再帰のレベル数。再帰を無効にするには、これを
0 に設定します。
|
searchTimeLimit
| 整数 | 10000 (10 秒)
|
ユーザーまたはロール検索のタイムアウト (ミリ秒単位)。
|
searchScope
| OBJECT_SCOPE, ONELEVEL_SCOPE, SUBTREE_SCOPE のいずれか。
| SUBTREE_SCOPE
|
使用する検索範囲。
|
allowEmptyPasswords
| true または false
| true
|
空白のパスワードを許可するかどうか。ほとんどの LDAP サーバーでは、空白のパスワードが匿名ログイン試行として扱われます。空のパスワードを拒否するには、これを false に設定します。
|
表11.19 RoleMapping
| コード | RoleMapping
|
| クラス | org.jboss.security.auth.spi.RoleMappingLoginModule
|
| 説明 |
認証プロセスの結果であるロールを宣言ロールに対してマップします。このモジュールは、セキュリティードメインに追加する場合に
optional とフラグ付けする必要があります。
|
表11.20 RoleMapping モジュールオプション
| オプション | タイプ | デフォルト | 説明 |
|---|---|---|---|
rolesProperties
| プロパティーファイルまたはリソースの完全修飾ファイルパスまたは完全修飾ファイル名。 | roles.properties
|
ロールを置換ロールに対してマップするプロパティーファイルまたはリソースの完全修飾ファイルパスまたはファイル名。形式は
original_role=role1,role2,role3 になります。
|
replaceRole
| true または false
| false
|
現在のロールを追加するか、現在のロールをマップされたロールに置き換えるか。
true に設定された場合は、置き換えられます。
|
表11.21 RunAs
| コード | RunAs
|
| クラス | Class: org.jboss.security.auth.spi.RunAsLoginModule
|
| 説明 | run as ロールを、認証のログイン段階の間スタックにプッシュし、コミットまたはアボート段階でスタックから run as ロールをポップするヘルパーモジュール。このログインモジュールは、セキュアな EJB にアクセスするログインモジュールなどの、認証を実行するためにセキュアなリソースにアクセスする必要がある他のログインモジュール用ロールを提供します。run as ロールを確立する必要があるログインモジュールの前に、RunAsLoginModule を設定する必要があります。
|
表11.22 RunAs オプション
| オプション | タイプ | デフォルト | 説明 |
|---|---|---|---|
roleName
| ロール名。 | nobody
|
ログイン段階で
run as ロールとして使用するロールの名前。
|
表11.23 Simple
| コード | Simple
|
| クラス | org.jboss.security.auth.spi.SimpleServerLoginModule
|
| 説明 |
テスト目的でセキュリティーを素早くセットアップするモジュール。次の単純なアルゴリズムが実装されます。
|
Simple モジュールオプション
Simpleモジュールにはオプションがありません。
表11.24 ConfiguredIdentity
| コード | ConfiguredIdentity
|
| クラス | org.picketbox.datasource.security.ConfiguredIdentityLoginModule
|
| 説明 |
モジュールオプションで指定されたプリンシパルをモジュールに対して認証されたサブジェクトに関連付けます。使用される Principal クラスのタイプは
org.jboss.security.SimplePrincipal です。
|
表11.25 ConfiguredIdentity モジュールオプション
| オプション | タイプ | デフォルト | 説明 |
|---|---|---|---|
principal
| プリンシパルの名前。 | guest
|
モジュールに対して認証されるサブジェクトに関連付けられるプリンシパル。
|
表11.26 SecureIdentity
| コード | SecureIdentity
|
| クラス | org.picketbox.datasource.security.SecureIdentityLoginModule
|
| 説明 |
このモジュールは、レガシー対応のために提供されます。このモジュールを使用すると、パスワードを暗号化し、暗号化されたパスワードを最適なプリンシパルで使用します。アプリケーションが
SecureIdentity を使用する場合は、パスワード vault メカニズムを代わりに使用することを検討してください。
|
表11.27 SecureIdentity モジュールオプション
| オプション | タイプ | デフォルト | 説明 |
|---|---|---|---|
username
| 文字列 | なし | 認証のユーザー名 |
password
| 暗号化文字列 | なし |
認証に使用するパスワード。パスワードを暗号化するには、コマンドラインで直接モジュールを使用します。
このコマンドの結果をモジュールオプションの値フィールドに貼り付けます。
|
managedConnectionFactoryName
| JCA リソース | なし |
データソースの JCA 接続ファクトリーの名前。
|
表11.28 PropertiesUsers
| コード | PropertiesUsers
|
| クラス | org.jboss.security.auth.spi.PropertiesUsersLoginModule
|
| 説明 |
認証用ユーザー名およびパスワードを格納するプロパティーファイルを使用します。認証 (ロールマッピング) は提供されません。このモジュールは、テスト向けのみに限定されます。
|
表11.29 PropertiesUsers モジュールオプション
| オプション | タイプ | デフォルト | 説明 |
|---|---|---|---|
properties
| Java プロパティーファイルまたはリソースの完全修飾ファイルパスまたは完全修飾ファイル名。 | なし |
認証に使用するユーザー名とクリアテキストパスワードを含むプロパティーファイル。
|
表11.30 SimpleUsers
| コード | SimpleUsers
|
| クラス | org.jboss.security.auth.spi.SimpleUsersLoginModule
|
| 説明 |
このログインモジュールは、ユーザー名とクリアテキストパスワードを Java プロパティーファイルに格納します。これは、テスト用に提供され、本番稼働環境には適しません。
|
表11.31 SimpleUsers モジュールオプション
| オプション | タイプ | デフォルト | 説明 |
|---|---|---|---|
username
| 文字列 | なし | 認証に使用するユーザー名。 |
password
| 文字列 | なし | 認証に使用するクリアテキストパスワード。 |
表11.32 LdapUsers
| コード | LdapUsers
|
| クラス | org.jboss.security.auth.spi.LdapUsersLoginModule
|
| 説明 | LdapUsers モジュールは ExtendedLDAP および AdvancedLdap モジュールが導入されたため廃止になりました。
|
表11.33 Kerberos
| コード | Kerberos
|
| クラス | com.sun.security.auth.module.Krb5LoginModule
|
| 説明 |
GSSAPI を使用して Kerberos ログイン認証を実行します。このモジュールは、Sun Microsystems により提供された API のセキュリティーフレームワークの一部です。詳細については、http://docs.oracle.com/javase/1.4.2/docs/guide/security/jaas/spec/com/sun/security/auth/module/Krb5LoginModule.html を参照してください。このモジュールは、認証とロールのマッピングを処理する別のモジュールと組み合わせる必要があります。
|
表11.34 Kerberos モジュールオプション
| オプション | タイプ | デフォルト | 説明 |
|---|---|---|---|
storekey
| true または false
| false | KerberosKey をサブジェクトのプライベートクレデンシャルに追加するかどうか。
|
doNotPrompt
| true または false
| false | true に設定された場合、ユーザーはパスワードを要求されません。
|
useTicketCache
| true または false のブール値
| false | true の場合、GTG はチケットキャッシュから取得されます。false の場合、チケットキャッシュは使用されません。
|
ticketcache
| Kerberos チケットキャッシュを表すファイルまたはリソース。 |
デフォルトは使用するオペレーティングシステムによって異なります。
| チケットキャッシュの場所。 |
useKeyTab
| true または false
| false | キーテーブルファイルからプリンシパルのキーを取得するかどうか。 |
keytab
| Kerberos keytab を表すファイルまたはリソース。 |
オペレーティングシステムの Kerberos 設定ファイルの場所または
/home/user/krb5.keytab
| キーテーブルファイルの場所。 |
principal
| 文字列 | なし |
プリンシパルの名前。これは、
host/testserver.acme.com などの単純なユーザー名またはサービス名のいずれかになります。これは、キーテーブルからプリンシパルを取得する代わり、またはキーテーブルに複数のプリンシパルが含まれる場合に使用します。
|
useFirstPass
| true または false
| false | javax.security.auth.login.name および javax.security.auth.login.password をキーとして使用して、モジュールの共有状態からユーザー名とパスワードを取得するかどうか。認証が失敗した場合、再試行は行われません。
|
tryFirstPass
| true または false
| false | useFirstPass と同じです。ただし、認証が失敗した場合、モジュールは CallbackHandler を使用して新しいユーザー名とパスワードを取得します。2 番目の認証が失敗した場合、失敗は読み出し元アプリケーションに報告されます。
|
storePass
| true または false
| false |
モジュールの共有状態でユーザー名とパスワードを格納するかどうか。これは、キーが共有状態にすでにある場合、または認証に失敗した場合は、行われません。
|
clearPass
| true または false
| false |
これを
true に設定して、認証段階が完了した後に供給状態からユーザー名とパスワードを削除します。
|
表11.35 SPNEGOUsers
| コード | SPNEGOUsers
|
| クラス | org.jboss.security.negotiation.spnego.SPNEGOLoginModule
|
| 説明 |
Microsoft Active Directory サーバーまたは SPNEGO をサポートする他の環境に対して SPNEGO 認証を許可します。SPNEGO は Kerberos クレデンシャルを持つこともできます。このモジュールは、認証とロールのマッピングを処理する別のモジュールと組み合わせる必要があります。
|
表11.36 SPNEGO モジュールオプション
| オプション | タイプ | デフォルト | 説明 |
|---|---|---|---|
storeKey
| true または false
| false
|
キーを格納するかどうか。
|
useKeyTab
| true または false
| false
|
キーテーブルを使用するかどうか。
|
principal
|
Kerberos 認証のプリンシパルを表す文字列
|
なし
|
認証のプリンシパルの名前。
|
keyTab
|
キーテーブルを表すファイルまたはリソース。
| none
|
キーテーブルの場所。
|
doNotPrompt
| true または false
| false
|
パスワードを要求するかどうか。
|
debug
| true または false
| false
|
デバッグ目的でより詳細なメッセージを記録するかどうか。
|
表11.37 AdvancedLdap
| コード | AdvancedLdap |
| クラス | org.jboss.security.negotiation.AdvancedLdapLoginModule
|
| 説明 |
SASL や JAAS セキュリティードメインの使用など、追加機能を提供するモジュール。
|
表11.38 AdvancedLdap モジュールオプション
| オプション | タイプ | デフォルト | 説明 |
|---|---|---|---|
bindAuthentication
|
文字列
|
なし
|
ディレクトリサーバーへのバインディングに使用する SASL 認証のタイプ。
|
jassSecurityDomain
| string
|
なし
|
使用する JAAS セキュリティードメインの名前。
|
java.naming.provider.url
| string
|
なし
|
ディレクトリサーバーの URI。
|
baseCtxDN
|
完全修飾識別名 (DN)。
|
なし
|
検索の基盤として使用する識別名。
|
baseFilter
|
LDAP 検索フィルターを表す文字列。
|
なし
|
検索結果を絞り込むために使用するフィルター。
|
roleAttributeID
|
LDAP 属性を表す文字列。
|
なし
|
承認ロールの名前が含まれる LDAP 属性。
|
roleAttributeIsDN
| true または false
| false
|
ロール属性が識別名 (DN) であるかどうか。
|
roleNameAttributeID
|
LDAP 属性を表す文字列。
|
なし
|
実際のロール属性が含まれる
RoleAttributeId 内に格納された属性。
|
recurseRoles
| true または false
| false
|
ロールに対して
RoleAttributeId を再帰的に検索するかどうか。
|
表11.39 AdvancedADLdap
| コード | AdvancedADLdap |
| クラス | org.jboss.security.negotiation.AdvancedADLoginModule
|
| 説明 |
このモジュールは
AdvancedLdap ログインモジュールを拡張し、Microsoft Active Directory に関連する追加パラメーターを追加します。
|
表11.40 UsersRoles
| コード | UsersRoles |
| クラス | org.jboss.security.auth.spi.UsersRolesLoginModul
|
| 説明 |
2 つの異なるプロパティーファイルに格納された複数のユーザーおよびユーザーロールをサポートする簡単なログインモジュール。
|
表11.41 UsersRoles モジュールオプション
| オプション | タイプ | デフォルト | 説明 |
|---|---|---|---|
usersProperties
|
ファイルまたはリソースへのパス。
| users.properties
|
ユーザーからパスワードへのマッピングが含まれるファイルまたはリソース。ファイルの形式は
user=hashed-password になります。
|
rolesProperties
|
ファイルまたはリソースへのパス。
| roles.properties
|
ユーザーからロールへのマッピングが含まれるファイルまたはリソース。ファイルの形式は
username=role1,role2,role3 になります。
|
password-stacking
| useFirstPass または false
| false
|
このログインモジュールが ID を見つけるため
LoginContext に格納された情報を最初に探すことを示す useFirstPass の値。このオプションは、他のログインモジュールをこのモジュールとスタックする場合に使用できます。
|
hashAlgorithm
|
パスワードをハッシュ化するアルゴリズムを表す文字列。
| none
|
パスワードをハッシュ化するために使用する
java.security.MessageDigest アルゴリズムの名前。デフォルト値はないため、ハッシュを有効にするためにこのオプションを明示的に設定する必要があります。hashAlgorithm が指定された場合は、inputPassword 引数として UsernamePasswordLoginModule.validatePassword に渡す前に CallbackHandler から取得されたクリアテキストパスワードがハッシュ化されます。users.properties ファイルに格納されたパスワードも、同様にハッシュ化する必要があります。
|
hashEncoding
| base64 または hex
| base64
|
hashAlgorithm も設定されている場合、ハッシュ化されたパスワードの文字列形式。
|
hashCharset
|
文字列
|
コンテナのランタイム環境に設定されるデフォルトのエンコーディング。
|
クリアテキストのパスワードをバイトアレイに変換するために使用されるエンコーディング。
|
unauthenticatedIdentity
|
プリンシパル名
|
なし
|
認証情報を含まない要求に割り当てるプリンシパル名を定義します。これにより、保護されていないサーブレットは特定のロールを必要としない EJB でメソッドを呼び出すことができるようになります。このようなプリンシパルは関連付けられたロールを持たず、
unchecked permission 制約に関連付けられたセキュアでない EJB または EJB メソッドにのみアクセスできます。
|
認証モジュールは、org.jboss.security.LoginModule の実装です。カスタム認証モジュールの作成の詳細については、API ドキュメンテーションを参照してください。
11.2. 含まれる承認モジュール
| コード | クラス |
|---|---|
| DenyAll | org.jboss.security.authorization.modules.AllDenyAuthorizationModule |
| PermitAll | org.jboss.security.authorization.modules.AllPermitAuthorizationModule |
| Delegating | org.jboss.security.authorization.modules.DelegatingAuthorizationModule |
| Web | org.jboss.security.authorization.modules.WebAuthorizationModule |
| JACC | org.jboss.security.authorization.modules.JACCAuthorizationModule |
11.3. 含まれるセキュリティーマッピングモジュール
| コード | クラス |
|---|---|
| PropertiesRoles | org.jboss.security.mapping.providers.role.PropertiesRolesMappingProvider |
| SimpleRoles | org.jboss.security.mapping.providers.role.SimpleRolesMappingProvider |
| DeploymentRoles | org.jboss.security.mapping.providers.DeploymentRolesMappingProvider |
| DatabaseRoles | org.jboss.security.mapping.providers.role.DatabaseRolesMappingProvider |
| LdapRoles | org.jboss.security.mapping.providers.role.LdapRolesMappingProvider |
11.4. 含まれるセキュリティー監査プロバイダーモジュール
| コード | クラス |
|---|---|
| LogAuditProvider | org.jboss.security.audit.providers.LogAuditProvider |
第12章 サブシステムの設定
12.1. サブシステム設定の概要
JBoss Enterprise Application Platform 6 は単純化された設定を使用します (ドメインごとまたはスタンドアロンサーバーごとに 1 つの設定ファイルを使用)。スタンドアロンドメインでは、各ホストコントローラーに対しても個別のファイルが存在します。設定の変更は自動的に保持されるため、XML を手動で編集する必要はありません。設定は、管理 API により自動的にスキャンされ、上書きされます。コマンドラインベースの管理 CLI および Web ベースの管理コンソールにより、JBoss Enterprise Application Platform の各側面を設定することができます。
EAP_HOME/domain/configuration/domain.xml、スタンドアロンサーバーの場合には EAP_HOME/standalone/configuration/standalone.xml という統合設定ファイルに保管されます。多くのサブシステムには、以前の JBoss Enterprise Application Platform の旧バージョンでデプロイメント記述子に追加された設定詳細が含まれます。
各サブシステムの設定は XML スキーマで定義されます。設定スキーマは、ご使用のインストールの EAP_HOME/docs/schema/ ディレクトリにあります。
簡易サブシステム
ee– Java EE 6 API 実装ejb– Enterprise JavaBeans (EJB) サブシステムjaxrs– RESTeasy によって提供される JAX-RS APIsar– サービスアーカイブをサポートするサブシステムthreads– プロセススレッドをサポートするサブシステムweld– Weld によって提供される Contexts and Dependency Injection API
第13章 ロギングサブシステム
13.1. はじめに
13.1.1. ロギングの概要
13.1.2. JBoss LogManager でサポートされるアプリケーションロギングフレームワーク
- JBoss Logging - JBoss Enterprise Application Platform 6 に含まれています。
- Apache Commons Logging - http://commons.apache.org/logging/
- Simple Logging Facade for Java (SLF4J) - http://www.slf4j.org/
- Apache log4j - http://logging.apache.org/log4j/1.2/
- Java SE Logging (java.util.logging) - http://download.oracle.com/javase/6/docs/api/java/util/logging/package-summary.html
13.1.3. ブートロギングの設定
logging.properties ファイルを編集して設定できます。このファイルは、標準的な Java プロパティーファイルであり、テキストエディターで編集できます。ファイルの各行の形式は property=value です。
logging.properties ファイルへの完全パスは EAP_HOME/domain/configuration/logging.properties または EAP_HOME/standalone/configuration/logging.properties のいずれかになります。これは JBoss Enterprise Application Platform を管理対象ドメインまたはスタンドアロンサーバーとして稼動しているかどうかによって異なります。
13.1.4. デフォルトのログファイルの場所
表13.1 スタンドアローンサーバー用デフォルトログファイル
| ログファイル | 説明 |
|---|---|
EAP_HOME/standalone/log/boot.log |
サーバールートログ。サーバーの起動に関連するログメッセージが含まれます。
|
EAP_HOME/standalone/log/server.log |
サーバーログ。サーバー起動後のすべてのログメッセージが含まれます。
|
表13.2 管理対象ドメイン用デフォルトログファイル
| ログファイル | 説明 |
|---|---|
EAP_HOME/domain/log/host-controller/boot.log |
ホストコントローラーブートログ。ホストコントローラーの起動に関連するログメッセージが含まれます。
|
EAP_HOME/domain/log/process-controller/boot.log |
プロセスコントローラーブートログ。プロセスコントローラーの起動に関連するログメッセージが含まれます。
|
EAP_HOME/domain/servers/SERVERNAME/log/boot.log |
指定されたサーバーのサーバーブートログ。指定されたサーバーの起動に関連するログメッセージが含まれます。
|
EAP_HOME/domain/servers/SERVERNAME/log/server.log |
指定されたサーバーのサーバーログ。指定されたサーバー起動後のすべてのログメッセージが含まれます。
|
13.1.5. ログレベルについて
TRACE、DEBUG、INFO、WARN、ERROR および FATAL となります。
WARN レベルのログハンドラーは、WARN、ERROR、および FATAL のレベルのメッセージのみを記録します。
13.1.6. サポートされているログレベル
表13.3 サポートされているログレベル
| ログレベル | 値 | 説明 |
|---|---|---|
| FINEST | 300 |
-
|
| FINER | 400 |
-
|
| TRACE | 400 |
アプリケーションの実行状態に関する詳細情報を提供するメッセージに使用します。通常、
TRACE のログメッセージはアプリケーションのデバッグ時のみにキャプチャーされます。
|
| DEBUG | 500 |
アプリケーションの個別の要求またはアクティビティの進捗状況を表示するメッセージに使用します。
DEBUG のログメッセージは通常アプリケーションのデバッグ時のみにキャプチャーされます。
|
| FINE | 500 |
-
|
| CONFIG | 700 |
-
|
| INFO | 800 |
アプリケーションの全体的な進捗状況を示すメッセージに使用します。多くの場合、アプリケーションの起動、シャットダウン、およびその他の主要なライフサイクルイベントに使用されます。
|
| WARN | 900 |
エラーではないが、理想的とは見なされない状況を示すために使用されます。将来的にエラーをもたらす可能性のある状況を示します。
|
| WARNING | 900 |
-
|
| ERROR | 1000 |
発生したエラーの中で、現在のアクティビティや要求の完了を妨げる可能性があるが、アプリケーション実行の妨げにはならないエラーを表示するために使用されます。
|
| SEVERE | 1000 |
-
|
| FATAL | 1100 |
クリティカルなサービス障害やアプリケーションのシャットダウンをもたらしたり、JBoss Enterprise Application Platform 6 のシャットダウンを引き起こす可能性があるイベントを表示するのに使用します。
|
13.1.7. ログカテゴリーについて
13.1.8. ルートロガーについて
server.log ファイルに書き込むように設定されています。このファイルはサーバーログと呼ばれる場合もあります。
13.1.9. ログハンドラーについて
Console、File、Periodic、Size、Async および Custom の 6 種類です。
13.1.10. ログハンドラーのタイプ
- コンソール (Console)
- コンソールログハンドラーは、ログメッセージをホストオペレーティングシステムの標準出力 (stdout) または標準エラー (stderr) ストリームに書き込みます。これらのメッセージは、JBoss Enterprise Application Platform 6 がコマンドラインプロンプトから実行された場合に表示されます。オペレーティングシステムで標準出力または標準エラーストリームをキャプチャーするように設定されていない限りは、コンソールログハンドラーからのメッセージは保存されません。
- ファイル (File)
- ファイルログハンドラーは、ログメッセージを指定のファイルに書き込む、最もシンプルなログハンドラーです。
- 定期 (Periodic)
- 定期ログハンドラーは、指定した時間が経過するまで、ログメッセージを指定ファイルに書き込みます。その時間が経過した後には、指定のタイムスタンプが追記されてファイルの名前が変更され、 ハンドラーは元の名前で新規作成されたログファイルに書き込みを継続します。
- サイズ (Size)
- サイズログハンドラーは、指定のファイルが指定サイズに到達するまで、そのファイルにログメッセージを書き込みます。ファイルが指定したサイズに到達すると、名前に数値のプレフィックスを追加して名前変更され、ハンドラーは元の名前で新規作成されたログファイルに書き込みを継続します。各サイズログハンドラーは、このような方式で保管されるファイルの最大数を指定する必要があります。
- 非同期 (Async)
- 非同期ログハンドラーは、 単一または複数のログハンドラーを対象とする非同期動作を提供するラッパーログハンドラーです。非同期ログハンドラーは高レイテンシ、もしくはネットワークファイルシステムへのログファイル書き込みなどにおけるその他のパフォーマンス上の問題があるログハンドラーに有用です。
- カスタム (Custom)
- カスタムログハンドラーにより、実装された新たなタイプのログハンドラーを設定することができます。カスタムハンドラーは、
java.util.logging.Handlerを拡張する Java クラスとして実装し、モジュール内に格納する必要があります。
13.1.11. ログフォーマッターについて
java.util.Formatter クラスを基にした構文を使用する文字列です。
%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n は次のようなログメッセージを作成します。
15:53:26,546 INFO [org.jboss.as] (Controller Boot Thread) JBAS015951: Admin console listening on http://127.0.0.1:9990
13.1.12. ログフォーマッター構文
表13.4 ログフォーマッター構文
| 記号 | 説明 |
|---|---|
%c | ロギングイベントのカテゴリー |
%p | ログエントリーのレベル (情報やデバッグなど) |
%P | ログエントリーのローカライズレベル |
%d | 現在の日付/時刻 (yyyy-MM-dd HH:mm:ss,SSS 形式) |
%r | 相対時間 (ログが初期化された以降のミリ秒単位の時間) |
%z | タイムゾーン |
%k | ログリソースキー (ログメッセージのローカリゼーションに使用) |
%m | ログメッセージ (例外トレースを除外) |
%s | 単純なログメッセージ (例外トレースなし) |
%e | 例外スタックトレース (拡張モジュール情報なし) |
%E | 例外スタックトレース (拡張モジュール情報あり) |
%t | 現在のスレッドの名前 |
%n | 改行文字 |
%C | ログメソッドを呼び出すコードのクラス (低速) |
%F | ログメソッドを呼び出すクラスのファイル名 (低速) |
%l | ログメソッドを呼び出すコードのソースロケーション (低速) |
%L | ログメソッドを呼び出すコードの行番号 (低速) |
%M | ログメソッドを呼び出すコードのメソッド (低速) |
%x | Log4J ネスト化診断コンテキスト |
%X | Log4J メッセージ診断コンテキスト |
%% | リテラルパーセント記号 (エスケープ) |
13.2. 管理コンソールでのロギングの設定
- 管理コンソールへログインします。
- ロギングサブシステム設定に移動します。この手順は、スタンドアロンサーバーとして実行されているサーバーと管理対象ドメインで実行されているサーバーとで異なります。
スタンドアロンサーバー
Profile をクリックし、Profile ペインの Core を展開し、Logging をクリックします。管理対象ドメイン
Profile をクリックし、編集するプロファイルを選択し、Logging をクリックします。

図13.1 管理コンソールのロギング設定
- ログレベルを編集します。
- ログハンドラーを追加および削除します。
- ログカテゴリーを追加および削除します。
- ログカテゴリープロパティーを編集します。
- カテゴリーのログハンドラーを追加および削除します。
- 新しいハンドラーの追加。
- ハンドラーの設定。
13.3. CLI でのロギング設定
13.3.1. CLI でのルートロガー設定
- ルートロガーにログハンドラーを追加します。
- ルートロガー設定を表示します。
- ログレベルを変更します。
- ルートロガーよりログハンドラーを削除します。
重要
/subsystem=logging/ ではなく /subsystem=logging/logging-profile=NAME/ になります。
- ルートロガーへのログハンドラーの追加
- 次の構文で
root-logger-assign-handler操作を使用します。HANDLER は追加するログハンドラーの名前です。/subsystem=logging/root-logger=ROOT:root-logger-assign-handler(name="HANDLER")
ログハンドラーを作成してから、ログハンドラーをルートロガーへ追加する必要があります。例13.1 ルートロガーの root-logger-assign-handler 操作
[standalone@localhost:9999 /] /subsystem=logging/root-logger=ROOT:root-logger-assign-handler(name="AccountsNFSAsync") {"outcome" => "success"} [standalone@localhost:9999 /] - ルートロガーの設定内容の表示
- 次の構文で
read-resource操作を使用します。/subsystem=logging/root-logger=ROOT:read-resource
例13.2 ルートロガーの read-resource 操作
[standalone@localhost:9999 /] /subsystem=logging/root-logger=ROOT:read-resource { "outcome" => "success", "result" => { "filter" => {"match" => "names"}, "handlers" => [ "CONSOLE", "FILE" ], "level" => "INFO" } } - ルートロガーのログレベルの設定
- 次の構文で
write-attribute操作を使用します。LEVEL はサポートされているログレベルの 1 つです。/subsystem=logging/root-logger=ROOT:write-attribute(name="level", value="LEVEL")
例13.3 ルートロガーの write-attribute 操作によるログレベルの設定
[standalone@localhost:9999 /] /subsystem=logging/root-logger=ROOT:write-attribute(name="level", value="DEBUG") {"outcome" => "success"} [standalone@localhost:9999 /] - ルートロガーからのログハンドラーの削除
- 次の構文で
root-logger-unassign-handlerを使用します。HANDLER は削除するログハンドラーの名前です。/subsystem=logging/root-logger=ROOT:root-logger-unassign-handler(name="HANDLER")
例13.4 ログハンドラーの削除
[standalone@localhost:9999 /] /subsystem=logging/root-logger=ROOT:root-logger-unassign-handler(name="AccountsNFSAsync") {"outcome" => "success"} [standalone@localhost:9999 /]
13.3.2. CLI でのログカテゴリ設定
- 新しいログカテゴリーを追加します。
- ログカテゴリーの設定を表示します。
- ログレベルを設定します。
- ログハンドラーをログカテゴリーへ追加します。
- ログカテゴリーからログハンドラーを削除します。
- ログカテゴリーを削除します。
重要
/subsystem=logging/ ではなく /subsystem=logging/logging-profile=NAME/ になります。
- ログカテゴリの追加
- 次の構文で
add操作を使用します。CATEGORY は追加するカテゴリに置き換えます。/subsystem=logging/logger=CATEGORY:add
例13.5 新規カテゴリの追加
[standalone@localhost:9999 /] /subsystem=logging/logger=com.company.accounts.rec:add {"outcome" => "success"} [standalone@localhost:9999 /] - ログカテゴリーの設定の表示
- 次の構文で
read-resource操作を使用します。CATEGORY はカテゴリー名に置き換えます。/subsystem=logging/logger=CATEGORY:read-resource
例13.6 ログカテゴリーの read-resource 操作
[standalone@localhost:9999 /] /subsystem=logging/logger=org.apache.tomcat.util.modeler:read-resource { "outcome" => "success", "result" => { "filter" => undefined, "handlers" => undefined, "level" => "WARN", "use-parent-handlers" => true } } [standalone@localhost:9999 /] - ログレベルの設定
- 次の構文で
write-attribute操作を使用します。CATEGORY の箇所はログカテゴリー名に、LEVEL は設定するログレベルに置き換えます。/subsystem=logging/logger=CATEGORY:write-attribute(name="level", value="LEVEL")
例13.7 ログレベルの設定
[standalone@localhost:9999 /] /subsystem=logging/logger=com.company.accounts.rec:write-attribute(name="level", value="DEBUG") {"outcome" => "success"} [standalone@localhost:9999 /] - ルートロガーのログハンドラーを使用するためのログカテゴリの設定
- 次の構文で
write-attribute操作を使用します。CATEGORY はログカテゴリ名に置き換えます。root ロガーのハンドラーを使用するためのこのログカテゴリには、BOOLEAN を true に置き換えます。独自の割り当てられたハンドラーのみを使用する場合には false に置き換えてください。/subsystem=logging/logger=CATEGORY:write-attribute(name="use-parent-handlers", value="BOOLEAN")
例13.8 use-parent-handlers の設定
[standalone@localhost:9999 /] /subsystem=logging/logger=com.company.accounts.rec:write-attribute(name="use-parent-handlers", value="true") {"outcome" => "success"} [standalone@localhost:9999 /] - ログカテゴリへのログハンドラ追加
- 次の構文で
assign-handler操作を使用します。CATEGORY はカテゴリ名に、HANDLER は追加するハンドラーの名前に置き換えます。/subsystem=logging/logger=CATEGORY:assign-handler(name="HANDLER")
ログハンドラーを作成してから、ログハンドラーをルートロガーへ追加する必要があります。例13.9 ログハンドラーの追加
[standalone@localhost:9999 /] /subsystem=logging/logger=com.company.accounts.rec:assign-handler(name="AccountsNFSAsync") {"outcome" => "success"} [standalone@localhost:9999 /] - ログカテゴリからのログハンドラの削除
- 次の構文で
unassign-handler操作を使用します。CATEGORY はカテゴリ名に、HANDLER は削除するログハンドラーの名前に置き換えます。/subsystem=logging/logger=CATEGORY:unassign-handler(name="HANDLER")
例13.10 ログハンドラーの削除
[standalone@localhost:9999 /] /subsystem=logging/root-logger=ROOT:root-logger-unassign-handler(name="AccountsNFSAsync") {"outcome" => "success"} [standalone@localhost:9999 /] - カテゴリーの削除
- 次の構文で
remove操作を使用します。CATEGORY は削除するカテゴリーの名前に置き換えます。/subsystem=logging/logger=CATEGORY:remove
例13.11 ログカテゴリの削除
[standalone@localhost:9999 /] /subsystem=logging/logger=com.company.accounts.rec:remove {"outcome" => "success"} [standalone@localhost:9999 /]
13.3.3. CLI でのコンソールログハンドラー設定
- 新しいコンソールログハンドラーを追加します。
- コンソールログハンドラーの設定を表示します。
- ハンドラーのログレベルを設定します。
- ハンドラーの出力のターゲットを設定します。
- ハンドラーの出力に使用されるエンコーディングを設定します。
- ハンドラーの出力に使用されるフォーマッターを設定します。
- ハンドラーが自動フラッシュを使用するかどうかを設定します。
- コンソールログハンドラーを削除します。
重要
/subsystem=logging/ ではなく /subsystem=logging/logging-profile=NAME/ になります。
- コンソールログハンドラーの追加
- 次の構文で
add操作を使用します。HANDLER は追加するコンソールログハンドラーに置き換えます。/subsystem=logging/console-handler=HANDLER:add
例13.12 コンソールログハンドラーの追加
[standalone@localhost:9999 /] /subsystem=logging/console-handler=ERRORCONSOLE:add {"outcome" => "success"} [standalone@localhost:9999 /] - コンソールログハンドラーの設定の表示
- 次の構文で
read-resource操作を使用します。HANDLERはコンソールログハンドラーの名前に置き換えます。/subsystem=logging/console-handler=HANDLER:read-resource
例13.13 コンソールログハンドラーの設定の表示
[standalone@localhost:9999 /] /subsystem=logging/console-handler=CONSOLE:read-resource { "outcome" => "success", "result" => { "autoflush" => true, "encoding" => undefined, "filter" => undefined, "formatter" => "%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n", "level" => "INFO", "target" => "System.out" } } [standalone@localhost:9999 /] - ログレベルの設定
- 次の構文で
change-log-level操作を使用します。HANDLER はコンソールログハンドラーの名前に、LEVEL は設定するログレベルに置き換えてください。/subsystem=logging/console-handler=HANDLER:change-log-level(level="LEVEL")
例13.14 ログレベルの設定
[standalone@localhost:9999 /] /subsystem=logging/console-handler=ERRORCONSOLE:change-log-level(level="TRACE") {"outcome" => "success"} [standalone@localhost:9999 /] - ターゲットの設定
- 次の構文で
write-attribute操作を使用します。HANDLER はコンソールログハンドラーの名前に置き換えます。TARGET は、システムエラーストリームの場合にはSystem.errに、標準出力ストリームの場合にはSystem.outに置き換えてください。/subsystem=logging/console-handler=HANDLER:write-attribute(name="target", value="TARGET")
例13.15 ターゲットの設定
[standalone@localhost:9999 /] /subsystem=logging/console-handler=ERRORCONSOLE:write-attribute(name="target", value="System.err") {"outcome" => "success"} [standalone@localhost:9999 /] - エンコーディングの設定
- 次の構文で
write-attribute操作を使用します。HANDLER をコンソールログハンドラーの名前に置き換え、ENCODING を必要な文字エンコーディングシステムの名前に置き換えます。/subsystem=logging/console-handler=HANDLER:write-attribute(name="encoding", value="ENCODING")
例13.16 エンコーディングの設定
[standalone@localhost:9999 /] /subsystem=logging/console-handler=ERRORCONSOLE:write-attribute(name="encoding", value="utf-8") {"outcome" => "success"} [standalone@localhost:9999 /] - フォーマッターの設定
- 次の構文で
write-attribute操作を使用します。HANDLER はコンソールログハンドラーの名前に置き換えます。FORMAT は必要なフォーマッターの文字列に置き換えます。/subsystem=logging/console-handler=HANDLER:write-attribute(name="formatter", value="FORMAT")
例13.17 フォーマッターの設定
[standalone@localhost:9999 /] /subsystem=logging/console-handler=ERRORCONSOLE:write-attribute(name="formatter", value="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n") {"outcome" => "success"} [standalone@localhost:9999 /] - 自動フラッシュの設定
- 次の構文で
write-attribute操作を使用します。HANDLER はコンソールログハンドラーの名前に置き換えます。このハンドラーが出力を直ちに書き込むようにするには、BOOLEAN をtrueに置き換えます。/subsystem=logging/console-handler=HANDLER:write-attribute(name="autoflush", value="BOOLEAN")
例13.18 自動フラッシュの設定
[standalone@localhost:9999 /] /subsystem=logging/console-handler=ERRORCONSOLE:write-attribute(name="autoflush", value="true") {"outcome" => "success"} [standalone@localhost:9999 /] - コンソールログハンドラーの削除
- 次の構文で
remove操作を使用します。HANDLER は削除するコンソールログハンドラーの名前に置き換えます。/subsystem=logging/console-handler=HANDLER:remove
例13.19 コンソールログハンドラーの削除
[standalone@localhost:9999 /] /subsystem=logging/console-handler=ERRORCONSOLE:remove {"outcome" => "success"} [standalone@localhost:9999 /]
13.3.4. CLI でのファイルログハンドラーの設定
- 新しいファイルログハンドラーを追加します。
- ファイルログハンドラーの設定を表示します。
- ハンドラーのログレベルを設定します。
- ハンドラーの追加動作を設定します。
- ハンドラーが自動フラッシュを使用するかどうかを設定します。
- ハンドラーの出力に使用されるエンコーディングを設定します。
- ログハンドラーが書き込むファイルを指定します。
- ハンドラーの出力に使用されるフォーマッターを設定します。
- ファイルログハンドラーを削除します。
重要
/subsystem=logging/ ではなく /subsystem=logging/logging-profile=NAME/ になります。
- ファイルログハンドラーの追加
- 次の構文で
add操作を使用します。PATH を、ログが書き込まれるファイルのファイル名に置き換えます。DIR を、ファイルを格納するディレクトリーの名前に置き換えます。DIR の値はパス変数に指定できます。/subsystem=logging/file-handler=HANDLER:add(file={"path"=>"PATH", "relative-to"=>"DIR"})例13.20 ファイルログハンドラーの追加
[standalone@localhost:9999 /] /subsystem=logging/file-handler=accounts_log:add(file={"path"=>"accounts.log", "relative-to"=>"jboss.server.log.dir"}) {"outcome" => "success"} [standalone@localhost:9999 /] - ファイルログハンドラー設定の表示
- 次の構文で
read-resource操作を使用します。HANDLER はファイルログハンドラーの名前に置き換えます。/subsystem=logging/file-handler=HANDLER:read-resource
例13.21 read-resource 操作の使用
[standalone@localhost:9999 /] /subsystem=logging/file-handler=accounts_log:read-resource { "outcome" => "success", "result" => { "append" => true, "autoflush" => true, "encoding" => undefined, "file" => { "path" => "accounts.log", "relative-to" => "jboss.server.log.dir" }, "filter" => undefined, "formatter" => "%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n", "level" => undefined } } [standalone@localhost:9999 /] - ログレベルの設定
- 次の構文で
change-log-level操作を使用します。HANDLER はファイルログハンドラーの名前に置き換えます。LEVEL は設定するログレベルに置き換えます。/subsystem=logging/file-handler=HANDLER:change-log-level(level="LEVEL")
例13.22 ログレベルの変更
/subsystem=logging/file-handler=accounts_log:change-log-level(level="DEBUG") {"outcome" => "success"} [standalone@localhost:9999 /] - 追加動作の設定
- 次の構文で
write-attribute操作を使用します。HANDLER はファイルログハンドラーの名前に置き換えます。アプリケーションサーバーが起動されるたびに新しいログファイルを作成する必要がある場合は、BOOLEAN を false に置き換えます。アプリケーションサーバーが同じファイルを使用し続ける必要がある場合は、BOOLEAN をtrueに置き換えます。/subsystem=logging/file-handler=HANDLER:write-attribute(name="append", value="BOOLEAN")
例13.23 追加プロパティーの変更
[standalone@localhost:9999 /] /subsystem=logging/file-handler=accounts_log:write-attribute(name="append", value="true") { "outcome" => "success", "response-headers" => { "operation-requires-reload" => true, "process-state" => "reload-required" } } [standalone@localhost:9999 /]この変更を反映するには、JBoss Enterprise Application Platform 6 を再起動する必要があります。 - 自動フラッシュの設定
- 次の構文で
write-attribute操作を使用します。HANDLER はファイルログハンドラーの名前に置き換えます。このハンドラーが出力を直ちに書き込むようにするには、BOOLEAN をtrueに置き換えます。/subsystem=logging/file-handler=HANDLER:write-attribute(name="autoflush", value="BOOLEAN")
例13.24 自動フラッシュプロパティーの変更
[standalone@localhost:9999 /] /subsystem=logging/file-handler=accounts_log:write-attribute(name="autoflush", value="false") { "outcome" => "success", "response-headers" => {"process-state" => "reload-required"} } [standalone@localhost:9999 /]この変更を反映するには、JBoss Enterprise Application Platform 6 を再起動する必要があります。 - エンコーディングの設定
- 次の構文で
write-attribute操作を使用します。HANDLER はファイルログハンドラーの名前に置き換えます。ENCODING は必要な文字エンコーディングシステムの名前に置き換えます。/subsystem=logging/file-handler=HANDLER:write-attribute(name="encoding", value="ENCODING")
例13.25 エンコーディングの設定
[standalone@localhost:9999 /] /subsystem=logging/file-handler=accounts_log:write-attribute(name="encoding", value="utf-8") {"outcome" => "success"} [standalone@localhost:9999 /] - ログハンドラーが書き込むファイルの変更
- 次の構文で
change-file操作を使用します。PATH を、ログが書き込まれるファイルのファイル名に置き換えます。DIR を、ファイルを格納するディレクトリーの名前に置き換えます。DIR の値はパス変数に指定できます。/subsystem=logging/file-handler=HANDLER:change-file(file={"path"=>"PATH", "relative-to"=>"DIR"})例13.26 ログハンドラーが書き込むファイルの変更
[standalone@localhost:9999 /] /subsystem=logging/file-handler=accounts_log:change-file(file={"path"=>"accounts-debug.log", "relative-to"=>"jboss.server.log.dir"}) {"outcome" => "success"} [standalone@localhost:9999 /] - フォーマッターの設定
- 次の構文で
write-attribute操作を使用します。HANDLER はファイルログハンドラーの名前に置き換えます。FORMAT は必要なフォーマッターの文字列に置き換えます。/subsystem=logging/file-handler=HANDLER:write-attribute(name="formatter", value="FORMAT")
例13.27 フォーマッターの設定
[standalone@localhost:9999 /] /subsystem=logging/file-handler=accounts-log:write-attribute(name="formatter", value="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n") {"outcome" => "success"} [standalone@localhost:9999 /] - ファイルログハンドラーの削除
- 次の構文で
remove操作を使用します。HANDLER は削除するファイルログハンドラーの名前に置き換えます。/subsystem=logging/file-handler=HANDLER:remove
例13.28 ファイルログハンドラーの削除
[standalone@localhost:9999 /] /subsystem=logging/file-handler=accounts_log:remove {"outcome" => "success"} [standalone@localhost:9999 /]ログハンドラーは、ログカテゴリーまたは非同期ログハンドラーによって参照されていない場合にのみ削除できます。
13.3.5. CLI での周期ログハンドラーの設定
- 新しい周期ログハンドラーを追加します。
- 周期ログハンドラーの設定を表示します。
- ハンドラーのログレベルを設定します。
- ハンドラーの追加動作を設定します。
- ハンドラーが自動フラッシュを使用するかどうかを設定します。
- ハンドラーの出力に使用されるエンコーディングを設定します。
- ログハンドラーが書き込むファイルを指定します。
- ハンドラーの出力に使用されるフォーマッターを設定します。
- ローテーションされるログの接尾辞の設定
- 周期ログハンドラーを削除します。
重要
/subsystem=logging/ ではなく /subsystem=logging/logging-profile=NAME/ になります。
- 新しい周期ローテーションファイルログハンドラーの追加
- 次の構文で
add操作を使用します。/subsystem=logging/periodic-rotating-file-handler=HANDLER:add(file={"path"=>"PATH", "relative-to"=>"DIR"}, suffix="SUFFIX")HANDLER をログハンドラーの名前に置き換えます。PATH をログが書き込まれるファイルのファイル名に置き換えます。DIR をファイルが存在するディレクトリーの名前に置き換えます。DIR の値をパス変数に指定できます。SUFFIX を、使用するファイルローテーション接尾辞に置き換えます。例13.29 新しいハンドラーの追加
[standalone@localhost:9999 /] /subsystem=logging/periodic-rotating-file-handler=HOURLY_DEBUG:add(file={"path"=>"daily-debug.log", "relative-to"=>"jboss.server.log.dir"}, suffix=".yyyy.MM.dd") {"outcome" => "success"} [standalone@localhost:9999 /] - 周期ローテーションファイルログハンドラー設定の表示
- 次の構文で
read-resource操作を使用します。/subsystem=logging/periodic-rotating-file-handler=HANDLER:read-resource
HANDLER をログハンドラーの名前に置き換えます。例13.30 read-resource 操作の使用
[standalone@localhost:9999 /] /subsystem=logging/periodic-rotating-file-handler=HOURLY_DEBUG:read-resource { "outcome" => "success", "result" => { "append" => true, "autoflush" => true, "encoding" => undefined, "file" => { "path" => "daily-debug.log", "relative-to" => "jboss.server.log.dir" }, "filter" => undefined, "formatter" => "%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n", "level" => undefined } } [standalone@localhost:9999 /] - ログレベルの設定
- 次の構文で
change-log-level操作を使用します。/subsystem=logging/periodic-rotating-file-handler=HANDLER:change-log-level(level="LEVEL")
HANDLER を周期ログハンドラーの名前に置き換えます。LEVEL を、設定するログレベルに置き換えます。例13.31 ログレベルの設定
[standalone@localhost:9999 /] /subsystem=logging/periodic-rotating-file-handler=HOURLY_DEBUG:change-log-level(level="DEBUG") {"outcome" => "success"} [standalone@localhost:9999 /] - 追加動作の設定
- 次の構文で
write-attribute操作を使用します。/subsystem=logging/periodic-rotating-handler=HANDLER:write-attribute(name="append", value="BOOLEAN")
HANDLER を周期ログハンドラーの名前に置き換えます。アプリケーション・サーバーが起動されるたびに新しいログファイルを作成する必要がある場合は、BOOLEAN をfalseに置き換えます。アプリケーションサーバーが同じファイルを使用し続ける必要がある場合は、BOOLEAN をtrueに置き換えます。この変更を反映するには、JBoss Enterprise Application Platform 6 を再起動する必要があります。例13.32 追加動作の設定
[standalone@localhost:9999 /] /subsystem=logging/periodic-rotating-file-handler=HOURLY_DEBUG:write-attribute(name="append", value="true") { "outcome" => "success", "response-headers" => { "operation-requires-reload" => true, "process-state" => "reload-required" } } [standalone@localhost:9999 /] - 自動フラッシュの設定
- 次の構文で
write-attribute操作を使用します。/subsystem=logging/periodic-rotating-file-handler=HANDLER:write-attribute(name="autoflush", value="BOOLEAN")
HANDLER を周期ログハンドラーの名前に置き換えます。このハンドラーがすぐに出力を書き込む場合は、BOOLEAN をtrueに置き換えます。この変更を反映するには、JBoss Enterprise Application Platform 6 を再起動する必要があります。例13.33 自動フラッシュ動作の設定
[standalone@localhost:9999 /] /subsystem=logging/periodic-rotating-file-handler=HOURLY_DEBUG:write-attribute(name="autoflush", value="false") { "outcome" => "success", "response-headers" => {"process-state" => "reload-required"} } [standalone@localhost:9999 /] - エンコーディングの設定
- 次の構文で
write-attribute操作を使用します。/subsystem=logging/periodic-rotating-file-handler=HANDLER:write-attribute(name="encoding", value="ENCODING")
HANDLER を周期ログハンドラーの名前に置き換えます。ENCODING を必要な文字エンコーディングシステムの名前に置き換えます。例13.34 エンコーディングの設定
[standalone@localhost:9999 /] /subsystem=logging/periodic-rotating-file-handler=HOURLY_DEBUG:write-attribute(name="encoding", value="utf-8") {"outcome" => "success"} [standalone@localhost:9999 /] - ログハンドラーが書き込むファイルの変更
- 次の構文で
change-file操作を使用します。/subsystem=logging/periodic-rotating-file-handler=HANDLER:change-file(file={"path"=>"PATH", "relative-to"=>"DIR"})HANDLER を周期ログハンドラーの名前に置き換えます。PATH をログが書き込まれるファイルのファイル名に置き換えます。DIR をファイルが存在するディレクトリーの名前に置き換えます。DIR の値をパス変数に指定できます。例13.35 ログハンドラーが書き込むファイルの変更
[standalone@localhost:9999 /] /subsystem=logging/periodic-rotating-file-handler=HOURLY_DEBUG:change-file(file={"path"=>"daily-debug.log", "relative-to"=>"jboss.server.log.dir"}) {"outcome" => "success"} [standalone@localhost:9999 /] - フォーマッターの設定
- 次の構文で
write-attribute操作を使用します。/subsystem=logging/periodic-rotating-file-handler=HANDLER:write-attribute(name="formatter", value="FORMAT")
HANDLER を周期ログハンドラーの名前に置き換えます。FORMAT を必要なフォーマッター文字列に置き換えます。例13.36 フォーマッターの設定
[standalone@localhost:9999 /] /subsystem=logging/periodic-rotating-file-handler=HOURLY_DEBUG:write-attribute(name="formatter", value="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n") {"outcome" => "success"} [standalone@localhost:9999 /] - ローテーションされるログの接尾辞の設定
- 次の構文で
write-attribute操作を使用します。/subsystem=logging/periodic-rotating-file-handler=HANDLER:write-attribute(name="suffix", value="SUFFIX")
HANDLER をログハンドラーの名前に置き換えます。SUFFIX を必要なサフィックス文字列に置き換えます。例13.37
[standalone@localhost:9999 /] /subsystem=logging/periodic-rotating-file-handler=HOURLY_DEBUG:write-attribute(name="suffix", value=".yyyy-MM-dd-HH") {"outcome" => "success"} [standalone@localhost:9999 /] - 周期ログハンドラーの削除
- 次の構文で
remove操作を使用します。/subsystem=logging/periodic-rotating-file-handler=HANDLER:remove
HANDLER を周期ログハンドラーの名前に置き換えます。例13.38 周期ログハンドラーの削除
[standalone@localhost:9999 /] /subsystem=logging/periodic-rotating-file-handler=HOURLY_DEBUG:remove {"outcome" => "success"} [standalone@localhost:9999 /]
13.3.6. CLI でのサイズログハンドラーの設定
- 新しいログハンドラーを追加します。
- ログハンドラーの設定を表示します。
- ハンドラーのログレベルを設定します。
- ハンドラーの追加動作を設定します。
- ハンドラーが自動フラッシュを使用するかどうかを設定します。
- ハンドラーの出力に使用されるエンコーディングを設定します。
- ログハンドラーが書き込むファイルを指定します。
- ハンドラーの出力に使用されるフォーマッターを設定します。
- 各ログファイルの最大サイズの設定
- 保持するバックアップログの最大数の設定
- ログハンドラーを削除します。
重要
/subsystem=logging/ ではなく /subsystem=logging/logging-profile=NAME/ になります。
- 新しいログハンドラーの追加
- 次の構文で
add操作を使用します。/subsystem=logging/size-rotating-file-handler=HANDLER:add(file={"path"=>"PATH", "relative-to"=>"DIR"})HANDLER をログハンドラーの名前に置き換えます。PATH をログが書き込まれるファイルのファイル名に置き換えます。DIR をファイルが存在するディレクトリーの名前に置き換えます。DIR の値をパス変数に指定できます。例13.39 新しいログハンドラーの追加
[standalone@localhost:9999 /] /subsystem=logging/size-rotating-file-handler=ACCOUNTS_TRACE:add(file={"path"=>"accounts_trace.log", "relative-to"=>"jboss.server.log.dir"}) {"outcome" => "success"} [standalone@localhost:9999 /] - ログハンドラーの設定を表示します。
- 次の構文で
read-resource操作を使用します。/subsystem=logging/size-rotating-file-handler=HANDLER:read-resource
HANDLER をログハンドラーの名前に置き換えます。例13.40 ログハンドラーの設定を表示します。
[standalone@localhost:9999 /] /subsystem=logging/size-rotating-file-handler=ACCOUNTS_TRACE:read-resource { "outcome" => "success", "result" => { "append" => true, "autoflush" => true, "encoding" => undefined, "file" => { "path" => "accounts_trace.log", "relative-to" => "jboss.server.log.dir" }, "filter" => undefined, "formatter" => "%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n", "level" => undefined, "max-backup-index" => 1, "rotate-size" => "2m" } } [standalone@localhost:9999 /] - ハンドラーのログレベルの設定
- 次の構文で
change-log-level操作を使用します。/subsystem=logging/size-rotating-file-handler=HANDLER:change-log-level(level="LEVEL")
HANDLER をログハンドラーの名前に置き換えます。LEVEL を、設定するログレベルに置き換えます。例13.41 ハンドラーのログレベルの設定
[standalone@localhost:9999 /] /subsystem=logging/size-rotating-file-handler=ACCOUNTS_TRACE:change-log-level(level="TRACE") {"outcome" => "success"} [standalone@localhost:9999 /] - ハンドラーの追加動作の設定
- 次の構文で
write-attribute操作を使用します。/subsystem=logging/size-rotating-file-handler=HANDLER:write-attribute(name="append", value="BOOLEAN")
HANDLER をログハンドラーの名前に置き換えます。アプリケーション・サーバーが起動されるたびに新しいログファイルを作成する必要がある場合は、BOOLEAN をfalseに置き換えます。アプリケーションサーバーが同じファイルを使用し続ける必要がある場合は、BOOLEAN をtrueに置き換えます。この変更を反映するには、JBoss Enterprise Application Platform 6 を再起動する必要があります。例13.42 ハンドラーの追加動作の設定
[standalone@localhost:9999 /] /subsystem=logging/size-rotating-file-handler=ACCOUNTS_TRACE:write-attribute(name="append", value="true") { "outcome" => "success", "response-headers" => { "operation-requires-reload" => true, "process-state" => "reload-required" } } [standalone@localhost:9999 /] - ハンドラーが自動フラッシュを使用するかどうかを設定
- 次の構文で
write-attribute操作を使用します。/subsystem=logging/size-rotating-file-handler=HANDLER:write-attribute(name="autoflush", value="BOOLEAN")
HANDLER をログハンドラーの名前に置き換えます。このハンドラーがすぐに出力を書き込む場合は、BOOLEAN をtrueに置き換えます。例13.43 ハンドラーが自動フラッシュを使用するかどうかを設定
[standalone@localhost:9999 /] /subsystem=logging/size-rotating-file-handler=ACCOUNTS_TRACE:write-attribute(name="autoflush", value="true") {"outcome" => "success"} [standalone@localhost:9999 /] - ハンドラーの出力に使用されるエンコーディングの設定
- 次の構文で
write-attribute操作を使用します。/subsystem=logging/size-rotating-file-handler=HANDLER:write-attribute(name="encoding", value="ENCODING")
HANDLER をログハンドラーの名前に置き換えます。ENCODING を必要な文字エンコーディングシステムの名前に置き換えます。例13.44 ハンドラーの出力に使用されるエンコーディングの設定
[standalone@localhost:9999 /] /subsystem=logging/size-rotating-file-handler=ACCOUNTS_TRACE:write-attribute(name="encoding", value="utf-8") {"outcome" => "success"} [standalone@localhost:9999 /] - ログハンドラーが書き込むファイルの指定
- 次の構文で
change-file操作を使用します。/subsystem=logging/size-rotating-file-handler=HANDLER:change-file(file={"path"=>"PATH", "relative-to"=>"DIR"})HANDLER をログハンドラーの名前に置き換えます。PATH をログが書き込まれるファイルのファイル名に置き換えます。DIR をファイルが存在するディレクトリーの名前に置き換えます。DIR の値をパス変数に指定できます。例13.45 ログハンドラーが書き込むファイルの指定
[standalone@localhost:9999 /] /subsystem=logging/size-rotating-file-handler=ACCOUNTS_TRACE:change-file(file={"path"=>"accounts_trace.log", "relative-to"=>"jboss.server.log.dir"}) {"outcome" => "success"} [standalone@localhost:9999 /] - ハンドラーの出力に使用されるフォーマッターの設定
- 次の構文で
write-attribute操作を使用します。/subsystem=logging/size-rotating-file-handler=HANDLER:write-attribute(name="formatter", value="FORMATTER")
HANDLER をログハンドラーの名前に置き換えます。FORMAT を必要なフォーマッター文字列に置き換えます。例13.46 ハンドラーの出力に使用されるフォーマッターの設定
[standalone@localhost:9999 /] /subsystem=logging/size-rotating-file-handler=ACCOUNTS_TRACE:write-attribute(name="formatter", value="%d{HH:mm:ss,SSS} %-5p (%c) [%t] %s%E%n") {"outcome" => "success"} [standalone@localhost:9999 /] - 各ログファイルの最大サイズの設定
- 次の構文で
write-attribute操作を使用します。/subsystem=logging/size-rotating-file-handler=HANDLER:write-attribute(name="rotate-size", value="SIZE")
HANDLER をログハンドラーの名前に置き換えます。SIZE を最大ファイルサイズに置き換えます。例13.47 各ログファイルの最大サイズの設定
[standalone@localhost:9999 /] /subsystem=logging/size-rotating-file-handler=ACCOUNTS_TRACE:write-attribute(name="rotate-size", value="50m") {"outcome" => "success"} [standalone@localhost:9999 /] - 保持するバックアップログの最大数の設定
- 次の構文で
write-attribute操作を使用します。/subsystem=logging/size-rotating-file-handler=HANDLER:write-attribute(name="max-backup-index", value="NUMBER")
HANDLER をログハンドラーの名前に置き換えます。NUMBER を、保持するログファイルの必要な数に置き換えます。例13.48 保持するバックアップログの最大数の設定
[standalone@localhost:9999 /] /subsystem=logging/size-rotating-file-handler=ACCOUNTS_TRACE:write-attribute(name="max-backup-index", value="5") {"outcome" => "success"} [standalone@localhost:9999 /] - ログハンドラーの削除
- 次の構文で
remove操作を使用します。/subsystem=logging/size-rotating-file-handler=HANDLER:remove
HANDLER をログハンドラーの名前に置き換えます。例13.49 ログハンドラーの削除
[standalone@localhost:9999 /] /subsystem=logging/size-rotating-file-handler=ACCOUNTS_TRACE:remove {"outcome" => "success"} [standalone@localhost:9999 /]
13.3.7. CLI での非同期ログハンドラーの設定
- 新しい非同期ログハンドラーを追加します。
- 非同期ログハンドラーの設定を表示します。
- ログレベルを変更します。
- キューの長さを設定します。
- オーバーフローアクションを設定します。
- サブハンドラーを設定します。
- サブハンドラーを削除します。
- 非同期ログハンドラーを削除します。
重要
/subsystem=logging/ ではなく /subsystem=logging/logging-profile=NAME/ になります。
- 新しい非同期ログハンドラーを追加します。
- 次の構文で
add操作を使用します。/subsystem=logging/async-handler=HANDLER:add(queue-length="LENGTH")
HANDLER をログハンドラーの名前に置き換えます。LENGTH を、キューに保持できるログ要求の最大数に置き換えます。例13.50
[standalone@localhost:9999 /] /subsystem=logging/async-handler=NFS_LOGS:add(queue-length="10") {"outcome" => "success"} [standalone@localhost:9999 /] - 非同期ログハンドラーの設定を表示します。
- 次の構文で
read-resource操作を使用します。/subsystem=logging/async-handler=HANDLER:read-resource
HANDLER をログハンドラーの名前に置き換えます。例13.51
[standalone@localhost:9999 /] /subsystem=logging/async-handler=NFS_LOGS:read-resource { "outcome" => "success", "result" => { "encoding" => undefined, "filter" => undefined, "formatter" => "%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n", "level" => undefined, "overflow-action" => "BLOCK", "queue-length" => "50", "subhandlers" => undefined } } [standalone@localhost:9999 /] - ログレベルを変更します。
- 次の構文で
change-log-level操作を使用します。/subsystem=logging/async-handler=HANDLER:change-log-level(level="LEVEL")
HANDLER をログハンドラーの名前に置き換えます。LEVEL を、設定するログレベルに置き換えます。例13.52
[standalone@localhost:9999 /] /subsystem=logging/async-handler=NFS_LOGS:change-log-level(level="INFO") {"outcome" => "success"} [standalone@localhost:9999 /] - キューの長さを設定します。
- 次の構文で
write-attribute操作を使用します。/subsystem=logging/async-handler=HANDLER:write-attribute(name="queue-length", value="LENGTH")
HANDLER をログハンドラーの名前に置き換えます。LENGTH を、キューに保持できるログ要求の最大数に置き換えます。この変更を反映するには、JBoss Enterprise Application Platform 6 を再起動する必要があります。例13.53
[standalone@localhost:9999 /] /subsystem=logging/async-handler=NFS_LOGS:write-attribute(name="queue-length", value="150") { "outcome" => "success", "response-headers" => { "operation-requires-reload" => true, "process-state" => "reload-required" } } [standalone@localhost:9999 /] - オーバーフローアクションを設定します。
- 次の構文で
write-attribute操作を使用します。/subsystem=logging/async-handler=HANDLER:write-attribute(name="overflow-action", value="ACTION")
HANDLER をログハンドラーの名前に置き換えます。ACTION を DISCARD または BLOCK に置き換えます。例13.54
[standalone@localhost:9999 /] /subsystem=logging/async-handler=NFS_LOGS:write-attribute(name="overflow-action", value="DISCARD") {"outcome" => "success"} [standalone@localhost:9999 /] - サブハンドラーを設定します。
- 次の構文で
assign-subhandler操作を使用します。/subsystem=logging/async-handler=HANDLER:assign-subhandler(name="SUBHANDLER")
HANDLER をログハンドラーの名前に置き換えます。SUBHANDLER を、この非同期ハンドラーのサブハンドラーとして追加するログハンドラーの名前に置き換えます。例13.55
[standalone@localhost:9999 /] /subsystem=logging/async-handler=NFS_LOGS:assign-subhandler(name="NFS_FILE") {"outcome" => "success"} [standalone@localhost:9999 /] - サブハンドラーを削除します。
- 次の構文で
unassign-subhandler操作を使用します。/subsystem=logging/async-handler=HANDLER:unassign-subhandler(name="SUBHANDLER")
HANDLER をログハンドラーの名前に置き換えます。SUBHANDLER を、削除するサブハンドラーの名前に置き換えます。例13.56
[standalone@localhost:9999 /] /subsystem=logging/async-handler=NFS_LOGS:unassign-subhandler(name="NFS_FILE") {"outcome" => "success"} [standalone@localhost:9999 /] - 非同期ログハンドラーを削除します。
- 次の構文で
remove操作を使用します。/subsystem=logging/async-handler=HANDLER:remove
HANDLER をログハンドラーの名前に置き換えます。例13.57
[standalone@localhost:9999 /] /subsystem=logging/async-handler=NFS_LOGS:remove {"outcome" => "success"} [standalone@localhost:9999 /]
13.4. ロギングプロファイル
13.4.1. ロギングプロファイルについて
重要
- 一意の名前 (必須)。
- ログハンドラーの数 (いくつでも)。
- ログカテゴリーの数 (いくつでも)。
- ルートロガー (1 つまで)。
重要
13.4.2. CLI を使用した新しいロギングプロファイルの作成
/subsystem=logging/logging-profile=NAME:add
13.4.3. CLI を使用したロギングプロファイルの設定
- ルートの設定パスは
/subsystem=logging/logging-profile=NAMEです。 - ロギングプロファイルに他のロギングプロファイルを追加できません。
例13.58 ロギングプロファイルの作成および設定
- プロファイルの作成
/subsystem=logging/logging-profile=accounts-app-profile:add
- ファイルハンドラーの作成
/subsystem=logging/logging-profile=accounts-app-profile/file-handler=ejb-trace-file:add(file={path=>"ejb-trace.log", "relative-to"=>"jboss.server.log.dir"})/subsystem=logging/logging-profile=accounts-app-profile/file-handler=ejb-trace-file:change-log-level(level="DEBUG")
- ロガーカテゴリーの作成
/subsystem=logging/logging-profile=accounts-app-profile/logger=com.company.accounts.ejbs:add(level=TRACE)
- ファイルハンドラーをカテゴリーへ割り当て
/subsystem=logging/logging-profile=accounts-app-profile/logger=com.company.accounts.ejbs:assign-handler(name="ejb-trace-file")
13.4.4. アプリケーションにおけるロギングプロファイルの指定
MANIFEST.MF ファイルに指定します。
前提条件
- サーバー上に設定されたロギングプロファイルの名前を認識している必要があります。使用するプロファイルの名前についてはサーバー管理者に問い合わせてください。
手順13.1 ロギングプロファイル設定をアプリケーションへ追加
MANIFEST.MFの編集アプリケーションにMANIFEST.MFファイルがない場合は、以下の内容が含まれるファイルを作成します。NAME は必要なプロファイル名に置き換えてください。Manifest-Version: 1.0 Logging-Profile: NAMEアプリケーションにMANIFEST.MFファイルがある場合は、以下の行を追加し、NAME を必要なプロファイル名に置き換えます。Logging-Profile: NAME
注記
maven-war-plugin を使用している場合、MANIFEST.MF ファイルを src/main/resources/META-INF/ に置き、次の設定を pom.xml ファイルに追加できます。
<plugin>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<archive>
<manifestFile>src/main/resources/META-INF/MANIFEST.MF</manifestFile>
</archive>
</configuration>
</plugin>
13.4.5. ロギングプロファイル設定の例
MANIFEST.MF ファイルを示します。
- 名前は
accounts-app-profileです。 - ログカテゴリーは
com.company.accounts.ejbsです。 - ログレベルは
TRACEです。 - ログハンドラーはファイル
ejb-trace.logを使用するファイルハンドラーです。
例13.59 CLI セッション
localhost:bin user$ ./jboss-cli.sh -c
[standalone@localhost:9999 /] /subsystem=logging/logging-profile=accounts-app-profile:add
{"outcome" => "success"}
[standalone@localhost:9999 /] /subsystem=logging/logging-profile=accounts-app-profile/file-handler=ejb-trace-file:add(file={path=>"ejb-trace.log", "relative-to"=>"jboss.server.log.dir"})
{"outcome" => "success"}
[standalone@localhost:9999 /] /subsystem=logging/logging-profile=accounts-app-profile/file-handler=ejb-trace-file:change-log-level(level="DEBUG")
{"outcome" => "success"}
[standalone@localhost:9999 /] /subsystem=logging/logging-profile=accounts-app-profile/logger=com.company.accounts.ejbs:add(level=TRACE)
{"outcome" => "success"}
[standalone@localhost:9999 /] /subsystem=logging/logging-profile=accounts-app-profile/logger=com.company.accounts.ejbs:assign-handler(name="ejb-trace-file")
{"outcome" => "success"}
[standalone@localhost:9999 /]例13.60 XML 設定
<logging-profiles>
<logging-profile name="accounts-app-profile">
<file-handler name="ejb-trace-file">
<level name="DEBUG"/>
<file relative-to="jboss.server.log.dir" path="ejb-trace.log"/>
</file-handler>
<logger category="com.company.accounts.ejbs">
<level name="TRACE"/>
<handlers>
<handler name="ejb-trace-file"/>
</handlers>
</logger>
</logging-profile>
</logging-profiles>
例13.61 アプリケーションの MANIFEST.MF ファイル
Manifest-Version: 1.0 Logging-Profile: accounts-app-profile
13.5. ロギング設定プロパティー
13.5.1. ルートロガーのプロパティー
表13.5 ルートロガーのプロパティー
| プロパティー | データタイプ | 説明 |
|---|---|---|
| level | 文字列 |
ルートロガーが記録するログメッセージの最大レベル。
|
| handlers | String[] |
ルートロガーによって使用されるログハンドラーの一覧。
|
| filter-spec | 文字列 |
フィルターを定義する式の値。式
not(match("JBAS.*")) はパターンに一致しないフィルターを定義します。
|
13.5.2. ログカテゴリーのプロパティー
表13.6 ログカテゴリーのプロパティー
| プロパティー | データタイプ | 説明 |
|---|---|---|
| level | 文字列 |
ログカテゴリーが記録するログメッセージの最大レベル。
|
| handlers | String[] |
ルートロガーによって使用されるログハンドラーの一覧。
|
| use-parent-handlers | ブール値 |
true に設定した場合、割り当てられた他のハンドラーだけでなく、ルートロガーのログハンドラーを使用します。
|
| category | 文字列 |
ログメッセージがキャプチャーされるログカテゴリー。
|
| filter-spec | 文字列 |
フィルターを定義する式の値。式
not(match("JBAS.*")) はパターンに一致しないフィルターを定義します。
|
13.5.3. コンソールログハンドラーのプロパティー
表13.7 コンソールログハンドラーのプロパティー
| プロパティー | データタイプ | 説明 |
|---|---|---|
| level | 文字列 |
ログハンドラーが記録するログメッセージの最大レベル。
|
| encoding | 文字列 |
出力に使用する文字エンコーディングスキーム
|
| formatter | 文字列 |
このログハンドラーで使用するログフォーマッター。
|
| target | 文字列 |
ログハンドラーの出力先となるシステム出力ストリーム。これは システムエラーストリームの場合は System.err、標準出力ストリームの場合は System.out とすることができます。
|
| autoflush | ブール値 |
true に設定すると、ログメッセージは受信直後にハンドラーのターゲットに送信されます。
|
| name | 文字列 |
このログハンドラーの一意の ID。
|
| enabled | ブール値 | true に設定された場合、ハンドラーが有効になり、通常通り機能します。false に設定された場合、ログメッセージの処理時にハンドラーが無視されます。
|
| filter-spec | 文字列 |
フィルターを定義する式の値。式
not(match("JBAS.*")) はパターンに一致しないフィルターを定義します。
|
13.5.4. ファイルログハンドラープロパティー
表13.8 ファイルログハンドラープロパティー
| プロパティー | データタイプ | 説明 |
|---|---|---|
| level | 文字列 |
ログハンドラーが記録するログメッセージの最大レベル。
|
| encoding | 文字列 |
出力に使用する文字エンコーディングスキーム
|
| formatter | 文字列 |
このログハンドラーで使用するログフォーマッター。
|
| append | ブール値 |
true に設定された場合、このハンドラーが書き込んだすべてのメッセージがファイル (すでに存在する場合) に追加されます。false に設定された場合、アプリケーションサーバーが起動されるたびに、新しいファイルが作成されます。
append に対する変更を反映するには、サーバーを再起動する必要があります。
|
| autoflush | ブール値 |
true に設定された場合は、受信直後にハンドラーにより割り当てられたファイルに送信されます。
autoflush に対する変更を反映するには、サーバーを再起動する必要があります。
|
| name | 文字列 |
このログハンドラーの一意の ID。
|
| file | オブジェクト |
このログハンドラーの出力が書き込まれるファイルを表すオブジェクト。このオブジェクトには、
relative-to と path の 2 つの設定プロパティーが含まれます。
|
| relative-to | 文字列 |
ファイルオブジェクトのプロパティーであり、ログファイルが書き込まれるディレクトリーです。ここでは、JBoss Enterprise Application Platform 6 のファイルパス変数を指定できます。
jboss.server.log.dir 変数はサーバーの log/ ディレクトリーを示します。
|
| path | 文字列 |
ファイルオブジェクトのプロパティーであり、ログメッセージが書き込まれるファイルの名前です。これは、完全パスを決定するために、
relative-to プロパティーの値に追加されます。
|
| enabled | ブール値 | true に設定された場合、ハンドラーが有効になり、通常通り機能します。false に設定された場合、ログメッセージの処理時にハンドラーが無視されます。
|
| filter-spec | 文字列 |
フィルターを定義する式の値。式
not(match("JBAS.*")) はパターンに一致しないフィルターを定義します。
|
13.5.5. 周期ログハンドラープロパティー
表13.9 周期ログハンドラープロパティー
| プロパティー | データタイプ | 説明 |
|---|---|---|
| append | ブール値 |
true に設定された場合、このハンドラーが書き込んだすべてのメッセージがファイル (すでに存在する場合) に追加されます。false に設定された場合、アプリケーションサーバーが起動されるたびに、新しいファイルが作成されます。append に対する変更を反映するには、サーバーを再起動する必要があります。
|
| autoflush | ブール値 |
true に設定された場合は、受信直後にハンドラーにより割り当てられたファイルに送信されます。autoflush に対する変更を反映するには、サーバーを再起動する必要があります。
|
| encoding | 文字列 |
出力に使用する文字エンコーディングスキーム
|
| formatter | 文字列 |
このログハンドラーで使用するログフォーマッター。
|
| level | 文字列 |
ログハンドラーが記録するログメッセージの最大レベル。
|
| name | 文字列 |
このログハンドラーの一意の ID。
|
| file | オブジェクト |
このログハンドラーの出力が書き込まれるファイルを表すオブジェクト。このオブジェクトには、
relative-to と path の 2 つの設定プロパティーがあります。
|
| relative-to | 文字列 |
ファイルオブジェクトのプロパティーであり、ログファイルが書き込まれるディレクトリーです。ここでは、ファイルパス変数を指定できます。
jboss.server.log.dir 変数はサーバーの log/ ディレクトリーを示します。
|
| path | 文字列 |
ファイルオブジェクトのプロパティーであり、ログメッセージが書き込まれるファイルの名前です。これは、完全パスを決定するために、
relative-to プロパティーの値に追加されます。
|
| suffix | 文字列 |
この文字列はローテーションされたログのファイル名に追加され、ローテーションの周期を決定するために使用されます。この接尾辞の形式では、ドット (.) の後に、
java.text.SimpleDateFormat クラスで解析できる日付文字列が指定されます。ログは接尾辞で定義された最小時間単位に基づいてローテーションされます。たとえば、接尾辞が .yyyy-MM-dd の場合は、毎日ログがローテーションされます。
|
| enabled | ブール値 | true に設定された場合、ハンドラーが有効になり、通常通り機能します。false に設定された場合、ログメッセージの処理時にハンドラーが無視されます。
|
| filter-spec | 文字列 |
フィルターを定義する式の値。式
not(match("JBAS.*")) はパターンに一致しないフィルターを定義します。
|
13.5.6. サイズログハンドラープロパティー
表13.10 サイズログハンドラープロパティー
| プロパティー | データタイプ | 説明 |
|---|---|---|
| append | ブール値 |
true に設定された場合、このハンドラーが書き込んだすべてのメッセージがファイル (すでに存在する場合) に追加されます。false に設定された場合、アプリケーションサーバーが起動されるたびに、新しいファイルが作成されます。append の変更を反映するには、サーバーを再起動する必要があります。
|
| autoflush | ブール値 |
true に設定された場合は、受信直後にハンドラーにより割り当てられたファイルに送信されます。autoflash の変更を反映するには、サーバーを再起動する必要があります。
|
| encoding | 文字列 |
出力に使用する文字エンコーディングスキーム
|
| formatter | 文字列 |
このログハンドラーで使用するログフォーマッター。
|
| level | 文字列 |
ログハンドラーが記録するログメッセージの最大レベル。
|
| name | 文字列 |
このログハンドラーの一意の ID。
|
| file | オブジェクト |
このログハンドラーの出力が書き込まれるファイルを表すオブジェクト。このオブジェクトには、
relative-to と path の 2 つの設定プロパティーがあります。
|
| relative-to | 文字列 |
ファイルオブジェクトのプロパティーであり、ログファイルが書き込まれるディレクトリーです。ここでは、ファイルパス変数を指定できます。
jboss.server.log.dir 変数はサーバーの log/ ディレクトリーを示します。
|
| path | 文字列 |
ファイルオブジェクトのプロパティーであり、ログメッセージが書き込まれるファイルの名前です。これは、完全パスを決定するために、
relative-to プロパティーの値に追加されます。
|
| rotate-size | 整数 |
ログファイルがローテーションされる前に到達できる最大サイズ。数字に追加された単一文字はサイズ単位を示します。バイトの場合は
b、キロバイトの場合は k、メガバイトの場合は m、ギガバイトの場合は g になります。たとえば、50 メガバイトの場合は、50m になります。
|
| max-backup-index | 整数 |
保持されるローテーションログの最大数。この数字に達すると、最も古いログが再利用されます。
|
| enabled | ブール値 | true に設定された場合、ハンドラーが有効になり、通常通り機能します。false に設定された場合、ログメッセージの処理時にハンドラーが無視されます。
|
| filter-spec | 文字列 |
フィルターを定義する式の値。式
not(match("JBAS.*")) はパターンに一致しないフィルターを定義します。
|
13.5.7. 同期ログハンドラープロパティー
表13.11 同期ログハンドラープロパティー
| プロパティー | データタイプ | 説明 |
|---|---|---|
| level | 文字列 |
ログハンドラーが記録するログメッセージの最大レベル。
|
| name | 文字列 |
このログハンドラーの一意の ID。
|
| queue-length | 整数 |
サブハンドラーが応答するときに、このハンドラーが保持するログメッセージの最大数。
|
| overflow-action | 文字列 |
キューの長さを超えたときにこのハンドラーがどのように応答するか。これは
BLOCK または DISCARD に設定できます。BLOCK により、キューでスペースが利用可能になるまでロギングアプリケーションが待機します。これは、非同期でないログハンドラーと同じ動作です。DISCARD により、ロギングアプリケーションは動作し続けますが、ログメッセージは削除されます。
|
| subhandlers | String[] |
これは、この非同期ハンドラーがログメッセージを渡すログハンドラーの一覧です。
|
| enabled | ブール値 | true に設定された場合、ハンドラーが有効になり、通常とおり機能します。false に設定された場合、ログメッセージの処理時にハンドラーが無視されます。
|
| filter-spec | 文字列 |
フィルターを定義する式の値。式
not(match("JBAS.*")) はパターンに一致しないフィルターを定義します。
|
13.6. ロギング用 XML 設定例
13.6.1. ルート Logger の XML 設定例
<subsystem xmlns="urn:jboss:domain:logging:1.2">
<root-logger>
<level name="INFO"/>
<handlers>
<handler name="CONSOLE"/>
<handler name="FILE"/>
</handlers>
</root-logger>
</subsystem>
13.6.2. ログカテゴリーの XML 設定例
<subsystem xmlns="urn:jboss:domain:logging:1.2">
<logger category="com.company.accounts.rec">
<handlers>
<handler name="accounts-rec"/>
</handlers>
</logger>
</subsystem>
13.6.3. コンソールログハンドラーの XML 設定例
<subsystem xmlns="urn:jboss:domain:logging:1.2">
<console-handler name="CONSOLE">
<level name="INFO"/>
<formatter>
<pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
</formatter>
</console-handler>
</subsystem>
13.6.4. ファイルログハンドラーの XML 設定例
<file-handler name="accounts-rec-trail" autoflush="true">
<level name="INFO"/>
<file relative-to="jboss.server.log.dir" path="accounts-rec-trail.log"/>
<append value="true"/>
</file-handler>
13.6.5. 定期ログハンドラーの XML 設定例
<periodic-rotating-file-handler name="FILE">
<formatter>
<pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
</formatter>
<file relative-to="jboss.server.log.dir" path="server.log"/>
<suffix value=".yyyy-MM-dd"/>
<append value="true"/>
</periodic-rotating-file-handler>
13.6.6. サイズログハンドラーの XML 設定例
<size-rotating-file-handler name="accounts_debug" autoflush="false"> <level name="DEBUG"/> <file relative-to="jboss.server.log.dir" path="accounts-debug.log"/> <rotate-size value="500k"/> <max-backup-index value="5"/> <append value="true"/> </size-rotating-file-handler>
13.6.7. 非同期ログハンドラーの XML 設定例
<async-handler name="Async_NFS_handlers">
<level name="INFO"/>
<queue-length value="512"/>
<overflow-action value="block"/>
<subhandlers>
<handler name="FILE"/>
<handler name="accounts-record"/>
</subhandlers>
</async-handler>
第14章 JVM
14.1. JVM について
14.1.1. JVM 設定について
host.xml および domain.xml 設定ファイルで宣言され、サーバープロセスを起動および停止するドメインコントローラーコンポーネントにより決定されます。スタンドアロンサーバーインスタンスでは、サーバー起動プロセスで起動時にコマンドライン設定を渡すことができます。これらは、管理コンソールのコマンドラインまたは System Properties 画面で宣言できます。
管理対象ドメインの重要な機能は、JVM 設定を複数のレベルで定義できることです。サーバーグループまたはサーバーインスタンスによって、ホストレベルでカスタム JVM 設定を指定できます。特別な子要素は親設定よりも優先され、グループまたはホストレベルで除外せずに特定のサーバー設定を宣言できます。これにより、設定が設定ファイルで宣言されるか、実行時に渡されるまで、親設定は他のレベルで継承できます。
例14.1 ドメイン設定ファイルの JVM 設定
domain.xml 設定ファイルの、サーバーグループに対する JVM 宣言を示しています。
<server-groups>
<server-group name="main-server-group" profile="default">
<jvm name="default">
<heap size="64m" max-size="512m"/>
</jvm>
<socket-binding-group ref="standard-sockets"/>
</server-group>
<server-group name="other-server-group" profile="default">
<jvm name="default">
<heap size="64m" max-size="512m"/>
</jvm>
<socket-binding-group ref="standard-sockets"/>
</server-group>
</server-groups>
main-server-group という名前のサーバーグループが 64 メガバイトのヒープサイズと 512 メガバイトの最大ヒープサイズを宣言しています。このグループに属するすべてのサーバーは、これらの設定を継承します。これらの設定は、グループ全体、ホスト、または個別サーバーで変更できます。
例14.2 ホスト設定ファイルのドメイン設定
host.xml 設定ファイルの、サーバーグループに対する JVM 宣言を示しています。
<servers>
<server name="server-one" group="main-server-group" auto-start="true">
<jvm name="default"/>
</server>
<server name="server-two" group="main-server-group" auto-start="true">
<jvm name="default">
<heap size="64m" max-size="256m"/>
</jvm>
<socket-binding-group ref="standard-sockets" port-offset="150"/>
</server>
<server name="server-three" group="other-server-group" auto-start="false">
<socket-binding-group ref="standard-sockets" port-offset="250"/>
</server>
</servers>
server-two という名前のサーバーが、main-server-group という名前のサーバーグループに属し、default JVM グループから JVM 設定を継承します。以前の例では、main-server-group のメインヒープサイズは 512 メガバイトに設定されていました。256 メガバイトの小さい最大ヒープサイズを宣言すると、server-two が domain.xml 設定よりも優先され、必要に応じてパフォーマンスを微調整できます。
スタンドアロンサーバーインスタンスの JVM 設定を実行時に宣言するには、サーバーを起動する前に JAVA_OPTS 環境変数を設定します。以下は Linux のコマンドラインで JAVA_OPTS 環境変数を設定する一例です。
[user@host bin]$ export JAVA_OPTS="-Xmx1024M"
C:\> set JAVA_OPTS="Xmx1024M"
EAP_HOME/bin フォルダーにある standalone.conf ファイルに JVM 設定を追加することも可能です。
14.1.2. 管理コンソールで JVM の状態を表示
要件
表14.1 JVM 状態属性
| タイプ | 説明 |
|---|---|
| Max | メモリー管理に使用できるメモリーの最大量 (バイト単位) です。 |
| Used | 使用されたメモリーの量 (メガバイト単位) です。 |
| Committed | Java 仮想マシンが使用するために確保されたメモリー量 (バイト単位) です。 |
| Init | メモリー管理に関し、Java 仮想マシンが最初にオペレーティングシステムより要求するバイト単位のメモリー量です。 |
手順14.1 管理コンソールで JVM の状態を表示
JVM の状態の表示
JVM の状態はスタンドアロンサーバーか管理対象ドメインに表示することができます。スタンドアロンサーバーインスタンスに対して JVM の状態を表示する
Runtime 画面上の Server Status メニューより JVM Status を選択します。
図14.1 スタンドアロンサーバーインスタンスの JVM の状態
管理対象ドメインに対して JVM の状態を表示する
ランタイムスクリーンのドメイン状態メニューより JVM 状態を選択します。- 管理対象ドメインはサーバーグループの全サーバーインスタンスを表示できますが、サーバーメニューより選択し、一度に 1 つのサーバーのみを表示することができます。サーバーグループの他のサーバーの状態を表示するには、画面の左上にあるドロップダウンボックスをクリックしてグループに表示されるホストとサーバーより選択を行い、Done ボタンをクリックして結果をロードします。
サーバーインスタンスに対する JVM 設定の状態が表示されます。
第15章 Web サブシステム
15.1. Web サブシステムの設定
Web ベース管理コンソールを使用して Web サブシステムを設定するには、右上の Profile(s) タブをクリックします。管理対象ドメインの場合は、左上の Profile 選択ボックスから設定するサーバープロファイルを選択します。Subsystems メニューを展開し、Web メニューを展開します。Web サブシステムの設定可能な各部分が表示されます。
注記
ha または full-ha である場合、またはstandalone-ha プロファイルでスタンドアロンサーバーを起動する場合にのみ利用できます。mod_cluster 設定については、「mod_cluster サブシステムの設定」 を参照してください。
JSP コンテナー、HTTP コネクター、および仮想 HTTP サーバーを設定するには、Servlet/HTTP メニューエントリーをクリックします。Edit ボタンをクリックして任意の値を変更します。Advanced ボタンをクリックして高度なオプションを表示します。これらのオプションについては以下で説明されています。HTTP コネクターおよび仮想サーバーのオプションは、別の表で示されます。
表15.1 サーブレット/HTTP 設定オプション
| オプション | 説明 | CLI コマンド |
|---|---|---|
| 無効になっていますか? (Disabled?) | true の場合は、Java ServerPages (JSP) コンテナーを無効にします。デフォルトで false に設定されます。これは、Java ServerPages (JSPs) を使用しない場合に役に立ちます。
|
/profile=full-ha/subsystem=web/configuration=jsp-configuration/:write-attribute(name=disabled,value=false) |
| 開発ですか? (Development?) |
true の場合は、Development Mode を有効にします。この場合、より冗長なデバッグ情報が生成されます。デフォルトで
false に設定されます。
|
/profile=full-ha/subsystem=web/configuration=jsp-configuration/:write-attribute(name=development,value=false) |
| 生成しますか? (Keep Generated?) |
Advanced をクリックしてオプションを確認します (非表示である場合)。
true の場合は、生成されたサーブレットを保持します。デフォルトで有効になります。
|
/profile=full-ha/subsystem=web/configuration=jsp-configuration/:write-attribute(name=keep-generated,value=true) |
| 間隔をチェックしますか? (Check Interval?) |
Advanced をクリックしてオプションを確認します (非表示である場合)。バックグラウンドプロセスを使用して JSP の更新をチェックする頻度を決める値 (秒単位)。デフォルトで
0 に設定されます。
|
/profile=full-ha/subsystem=web/configuration=jsp-configuration/:write-attribute(name=check-interval,value=0) |
| ソースを表示しますか? (Display Source?) |
Advanced をクリックしてこのオプションを確認します (非表示である場合)。
true の場合、ランタイムエラーが発生すると、JSP ソース断片が表示されます。デフォルトで true に設定されます。
|
/profile=full-ha/subsystem=web/configuration=jsp-configuration/:write-attribute(name=display-source-fragment,value=true) |
mod_cluster、 mod_jk、mod_proxy、 ISAPI、および NSAPI を使用します。コネクターを設定するには Connectors タブを選択し、Add をクリックします。コネクターを削除するには、エントリーを選択し Remove をクリックします。コネクターを編集するには、エントリーを選択し Edit をクリックします。
例15.1 新しいコネクターの作成
/profile=full-ha/subsystem=web/connector=ajp/:add(socket-binding=ajp,scheme=http,protocol=AJP/1.3,secure=false,name=ajp,max-post-size=2097152,enabled=true,enable-lookups=false,redirect-port=8433,max-save-post-size=4096)
表15.2 コネクターオプション
| オプション | 説明 | CLI コマンド |
|---|---|---|
| 名前 (Name) |
表示目的のコネクターの一意な名前。
|
/profile=full-ha/subsystem=web/connector=ajp/:read-attribute(name=name) |
| ソケットバインディング (Socket Binding) |
コネクターがバインドする必要がある名前付きソケットバインディング。ソケットバインディングは、ソケット名とネットワークポート間のマッピングです。各スタンドアロンサーバーのためにソケットバインディングが設定されます (または、管理対象ドメインのソケットバインディンググループを使用)。ソケットバインディンググループはサーバーグループに適用されます。
|
/profile=full-ha/subsystem=web/connector=ajp/:write-attribute(name=socket-binding,value=ajp) |
| スキーム (Scheme) |
HTTP や HTTPS などの Web コネクタースキーム。
|
/profile=full-ha/subsystem=web/connector=ajp/:write-attribute(name=scheme,value=http) |
| プロトコル (Protocol) |
AJP や HTTP などの、使用する Web コネクタープロトコル。
|
/profile=full-ha/subsystem=web/connector=ajp/:write-attribute(name=protocol,value=AJP/1.3) |
| 有効 (Enabled) |
Web コネクターが有効であるかどうか。
|
/profile=full-ha/subsystem=web/connector=ajp/:write-attribute(name=enabled,value=true) |
例15.2 新しい仮想サーバーの追加
/profile=full-ha/subsystem=web/virtual-server=default-host/:add(enable-welcome-root=true,default-web-module=ROOT.war,alias=["localhost","example.com"],name=default-host)
表15.3 仮想サーバーオプション
| オプション | 説明 | CLI コマンド |
|---|---|---|
| 名前 (Name) |
表示目的の仮想サーバーの一意な名前。
|
/profile=full-ha/subsystem=web/virtual-server=default-host/:write-attribute(name=name,value=default-host) |
| エイリアス (Alias) |
この仮想サーバーに一致する必要があるホスト名のリスト。管理コンソールで、1 行あたり 1 つのホスト名を使用します。
|
/profile=full-ha/subsystem=web/virtual-server=default-host/:write-attribute(name=alias,value=["localhost","example.com"]) |
| デフォルトモジュール (Default Module) |
Web アプリケーションをこの仮想サーバーのルートノードにデプロイする必要があるモジュールであり、ディレクトリが HTTP 要求で提供されない場合に表示されます。
|
/profile=full-ha/subsystem=web/virtual-server=default-host/:write-attribute(name=default-web-module,value=ROOT.war) |
Web サービスオプションを設定するには、Web Services メニュー項目をクリックします。オプションは、以下の表で説明されます。
表15.4 Web サービス設定オプション
| オプション | 説明 | CLI コマンド |
|---|---|---|
| WSDL アドレスの変更 (Modify WSDL Address) |
WSDL アドレスをアプリケーションで変更できるかどうか。デフォルトで
true に設定されます。
|
/profile=full-ha/subsystem=webservices/:write-attribute(name=modify-wsdl-address,value=true) |
| WSDL ホスト |
JAX-WS Web サービスの WSDL コントラクトには、エンドポイントの場所を示す <soap:address> 要素が含まれます。 <soap:address> の値が有効な URL の場合は、
modify-wsdl-address が true に設定されない限り、上書きされません。<soap:address> の値が有効な URL の場合は、wsdl-host の値と wsdl-port または wsdl-secure-port を使用して上書きされます。wsdl-host が jbossws.undefined.host に設定されている場合は、<soap-address> が書き換えられたときに要求側のホストアドレスが使用されます。デフォルトで ${jboss.bind.address:127.0.0.1} に設定されます。JBoss Enterprise Application Platform が起動されたときにバインドアドレスが指定されてない場合は、127.0.0.1 を使用します。
|
/profile=full-ha/subsystem=webservices/:write-attribute(name=wsdl-host,value=127.0.0.1) |
| WSDL ポート |
SOAP アドレスを書き換えるために使用されるセキュアでないポート。これが
0 (デフォルト値) に設定された場合、ポートはインストール済みコネクターのリストを問い合わせることにより識別されます。
|
/profile=full-ha/subsystem=webservices/:write-attribute(name=wsdl-port,value=80) |
| WSDL セキュアポート |
SOAP アドレスを書き換えるために使用されるセキュアポート。これが
0 (デフォルト値) に設定された場合、ポートはインストール済みコネクターのリストを問い合わせることにより識別されます。
|
/profile=full-ha/subsystem=webservices/:write-attribute(name=wsdl-secure-port,value=443) |
15.2. デフォルトの Welcome Web アプリケーションの置き換え
手順15.1 デフォルトの Welcome Web アプリケーションを独自の Web アプリケーションに置き換える
Welcome アプリケーションを無効にします。
管理 CLI スクリプトEAP_HOME/bin/jboss-cli.shを使用して次のコマンドを実行します。異なる管理対象ドメインプロファイルの変更が必要となる場合があります。スタンドアローンサーバーでは、コマンドの/profile=default部分の削除が必要となる場合があります。/profile=default/subsystem=web/virtual-server=default-host:write-attribute(name=enable-welcome-root,value=false)
ルートコンテキストを使用するよう Web アプリケーションを設定します。
Web アプリケーションを設定してルートコンテキストを (/) を URL アドレスとして使用するには、META-INF/またはWEB-INF/ディレクトリにあるjboss-web.xmlを変更します。<context-root>ディレクティブを次のようなディレクティブに置き換えます。<jboss-web> <context-root>/</context-root> </jboss-web>アプリケーションをデプロイします。
サーバーグループか最初に変更したサーバーにアプリケーションをデプロイします。アプリケーションはhttp://SERVER_URL:PORT/で使用できるようになります。
第16章 HTTP クラスタリングおよび負荷分散
16.1. はじめに
16.1.1. 高可用性および負荷分散クラスターについて
- アプリケーションサーバーのインスタンス
- Web サーバー (内部 JBoss Web サーバー、Apache HTTPD、 Microsoft IIS、 Oracle iPlanet Web Server、Apache Tomcat)
- ステートフル、ステートレス、およびエンティティー Enterprise JavaBean (EJB)
- JNDI サービス
- シングルサインオン (SSO) メカニズム
- 分散キャッシュ
- HTTP セッション
- JMS サービスおよびメッセージ駆動型 Bean (MDB)
16.1.2. 高可用性が有益なコンポーネント
JBoss Enterprise Application Server の複数のインスタンス (スタンドアローンサーバーとして実行) またはサーバーグループのメンバー (管理対象ドメインの一部として実行) を高可用性として設定できます。つまり、1 つのインスタンスまたはメンバーが停止したり、クラスターから消去された場合、そのワークロードはピアに移行されます。負荷分散機能を提供するようワークロードを管理することもできるため、多くの優れたリソースを持つサーバーやサーバーグループは、より多くのワークロードを担当できます。また、負荷が高い間、処理能力を追加することも可能です。
互換性のある負荷分散メカニズムの 1 つを使用して Web サーバー自体も HA 用にクラスター化できます。mod_cluster コネクターが最も柔軟で、 JBoss Enterprise Application Platform のコンテナと密接に統合されます。他にも、Apache の mod_jk または mod_proxy コネクター、ISAPI および NSAPI コネクターなどがあります。
Java Enterprise Edition 6 (Java EE 6) 仕様によって、デプロイされたアプリケーションを高可用化できます。ステートレスまたはステートフルセッション EJB をクラスター化できるため、作業に関与するノードがなくなった場合に他のノードによる引き継ぎが可能です。ステートフルセッション Bean の場合は状態が保持されます。
16.1.3. HTTP コネクターの概要
表16.1 HTTP コネクター機能および制約
| コネクター | Web サーバー | サポート対象オペレーティングシステム | サポート対象プロトコル | デプロイメント状態への適合 | スティッキーセッションのサポート |
|---|---|---|---|---|---|
| mod_cluster | JBoss Enterprise Web Server HTTPD、 Native HTTPD (Red Hat Enterprise Linux のみ) | Red Hat Enterprise Linux、Microsoft Windows Server、 Oracle Solaris | HTTP、HTTPS、AJP | 可。アプリケーションのデプロイメントとデプロイメント解除を検出し、アプリケーションがそのサーバーにデプロイされたかどうかに基づいて、サーバーにクライアント要求を送信するかどうかを動的に決定します。 | 可 |
| mod_jk | JBoss Enterprise Web Server HTTPD、 Native HTTPD (Red Hat Enterprise Linux のみ) | Red Hat Enterprise Linux、Microsoft Windows Server、 Oracle Solaris | AJP | 不可。アプリケーションステータスに関係なく、コンテナーが利用可能な限り、クライアント要求をコンテナーに送信します。 | 可 |
| mod_proxy | JBoss Enterprise Web Server HTTPD | Red Hat Enterprise Linux、Microsoft Windows Server、 Oracle Solaris | HTTP、HTTPS、AJP | 不可。アプリケーションステータスに関係なく、コンテナーが利用可能な限り、クライアント要求をコンテナーに送信します。 | 可 |
| ISAPI | Microsoft IIS | Microsoft Windows Server | AJP | 不可。アプリケーションステータスに関係なく、コンテナーが利用可能な限り、クライアント要求をコンテナーに送信します。 | 可 |
| NSAPI | Oracle iPlanet Web Server | Oracle Solaris | AJP | 不可。アプリケーションステータスに関係なく、コンテナーが利用可能な限り、クライアント要求をコンテナーに送信します。 | 可 |
各 HTTP コネクターの詳細について
16.1.4. ワーカーノード
ワーカーノードは、1 つまたは複数のクライアント向け HTTPD サーバーから要求を受け入れる JBoss Enterprise Application Platform サーバーで、単に ノード と呼ばれることもあります。JBoss Enterprise Application Platform は独自の HTTPD、JBoss Enterprise Web Server に同梱された HTTPD、Apache HTTPD、Microsoft IIS、または Oracle iPlanet Web Server (以前の Netscape Web Server) から要求を受け入れることができます。
クラスターノードはサーバーのクラスターのメンバーです。このようなクラスターは、負荷分散、高可用性、またはその両方です。負荷分散クラスターでは、中央マネージャーが状況固有の均等性の単位を使用してノード間で負荷を均等に分散します。高可用性クラスターでは、一部のノードがアクティブに処理を行い、他のノードはアクティブなノードのいずれかがクラスターから離れるまで待機します。
16.2. コネクター設定
16.2.1. JBoss Enterprise Application Platform にて HTTP コネクターのスレッドプールを定義
エクゼキューターモデルを使用すると JBoss Enterprise Application Platform のスレッドプールを異なるコンポーネント間で共有できます。これらのプールは異なる (HTTP) コネクターで共有できるだけでなく、エクゼキューターモデルをサポートする JBoss Enterprise Application Platform 内の他のコンポーネントも共有できます。HTTP コネクターのスレッドプールを現在の Web パフォーマンスの要件に合わせることは簡単ではなく、現在のスレッドプール、現在および予想される Web ロードの要求を綿密に監視する必要があります。このタスクでは、エクゼキューターモデルを使用して HTTP コネクターのスレッドプールを設定する方法について取り上げます。コマンドラインインターフェースを使用して設定する方法と、XML 設定ファイルを編集して設定する方法の両方を説明します。
手順16.1 HTTP コネクターのスレッドプールの設定
スレッドファクトリの定義
設定ファイルを開きます (スタンドアロンサーバーに対して編集する場合はstandalone.xml、ドメインベースの設定に対して編集する場合はdomain.xml)。このファイルはEAP_HOME/standalone/configurationまたはEAP_HOME/domain/configurationフォルダーにあります。次のサブシステムエントリーを追加します。値はサーバーの環境に合わせて変更します。<subsystem xmlns="urn:jboss:domain:threads:1.0"> <thread-factory name="http-connector-factory" thread-name-pattern="HTTP-%t" priority="9" group-name="uq-thread-pool"/> </subsystem>CLI を使用したい場合は、CLI コマンドプロンプトで次のコマンドを実行します。[standalone@localhost:9999 /] ./subsystem=threads/thread-factory=http-connector-factory:add(thread-name-pattern="HTTP-%t", priority="9", group-name="uq-thread-pool")
エクゼキューターの作成
6 つある組み込みエクゼキュータークラスの 1 つを使用して、このファクトリのエクゼキューターとして動作させることができます。6 つのエクゼキューターはunbounded-queue-thread-pool、bounded-queue-thread-pool、blocking-bounded-queue-thread-pool、queueless-thread-pool、blocking-queueless-thread-pool、およびscheduled-thread-poolになります。この例では、unbounded-queue-thread-poolを使用してエクゼキューターとして動作させます。サーバーの環境に合わせてmax-threadsおよびkeepalive-timeパラメーターの値を編集します。<unbounded-queue-thread-pool name="uq-thread-pool"> <thread-factory name="http-connector-factory" /> <max-threads count="10" /> <keepalive-time time="30" unit="seconds" /> </unbounded-queue-thread-pool>
CLI を使用する場合は、以下を実行します。[standalone@localhost:9999 /] ./subsystem=threads/unbounded-queue-thread-pool=uq-thread-pool:add(thread-factory="http-connector-factory", keepalive-time={time=30, unit="seconds"}, max-threads=30)HTTP Web コネクターがこのスレッドプールを使用するようにする
同じ設定ファイルで、Web サブシステム下にある HTTP コネクター要素を見つけ、前の手順で定義したスレッドプールを使用するよう編集します<connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http" executor="uq-thread-pool" />
CLI を使用する場合は、以下を実行します。[standalone@localhost:9999 /] ./subsystem=web/connector=http:write-attribute(name=executor, value="uq-thread-pool")
サーバーの再起動
変更を有効にするため、サーバー (スタンドアロンまたはドメイン) を再起動します。次の CLI コマンドを使用して、以前の手順で行った変更が有効になったことを確認します。[standalone@localhost:9999 /] ./subsystem=threads:read-resource(recursive=true) { "outcome" => "success", "result" => { "blocking-bounded-queue-thread-pool" => undefined, "blocking-queueless-thread-pool" => undefined, "bounded-queue-thread-pool" => undefined, "queueless-thread-pool" => undefined, "scheduled-thread-pool" => undefined, "thread-factory" => {"http-connector-factory" => { "group-name" => "uq-thread-pool", "name" => "http-connector-factory", "priority" => 9, "thread-name-pattern" => "HTTP-%t" }}, "unbounded-queue-thread-pool" => {"uq-thread-pool" => { "keepalive-time" => { "time" => 30L, "unit" => "SECONDS" }, "max-threads" => 30, "name" => "uq-thread-pool", "thread-factory" => "http-connector-factory" }} } } [standalone@localhost:9999 /] ./subsystem=web/connector=http:read-resource(recursive=true) { "outcome" => "success", "result" => { "configuration" => undefined, "enable-lookups" => false, "enabled" => true, "executor" => "uq-thread-pool", "max-connections" => undefined, "max-post-size" => 2097152, "max-save-post-size" => 4096, "name" => "http", "protocol" => "HTTP/1.1", "proxy-name" => undefined, "proxy-port" => undefined, "redirect-port" => 443, "scheme" => "http", "secure" => false, "socket-binding" => "http", "ssl" => undefined, "virtual-server" => undefined } }
スレッドファクトリとエクゼキューターが正常に作成され、このスレッドプールを使用するよう HTTP コネクターが編集されます。
16.3. HTTPD 設定
16.3.1. スタンドアロン HTTPD について
16.3.2. JBoss Enterprise Application Platform 6 に含まれる Apache HTTPD のインストール
要件
- このタスクを完了するには root または管理者権限が必要です。
手順16.2 Apache HTTPD のインストール
Red Hat カスタマーサービスポータル上でご使用のプラットフォームの JBoss Enterprise Application Platform ダウンロードリストへ移動します。
https://access.redhat.com の Red Hat カスタマーポータルへログインします。上部のメニューより ダウンロード、JBoss Enterprise Middleware、ダウンロード と選択します。コンボボックスより Application Platform を選択すると、別のコンボボックスが表示されます。JBoss Enterprise Application Platform のバージョンを選択し、そのバージョンに対応するダウンロードを確認します。一覧より HTTPD バイナリを選択します。
ご使用のオペレーティングシステムとアーキテクチャーに対応する HTTPD バイナリを探します。ダウンロード リンクをクリックすると、HTTPD ディストリビューションが含まれる ZIP ファイルがコンピューターにダウンロードされます。HTTPD バイナリを実行するシステムに ZIP を解凍します。
希望の Web サーバーの任意の場所に ZIP を解凍します。通常、JBoss Enterprise Application Platform をインストールしたディレクトリ (EAP_HOME) の中で ZIP を解凍することが多いでしょう。この場合、HTTPD はEAP_HOME/httpd/に保存されます。この場所を他の JBoss Enterprise Application Platform のドキュメントに記載されている HTTPD_HOME として使用することができます。HTTPD を設定します。
組織のニーズに合わせて HTTPD を設定します。一般的な手順については http://httpd.apache.org/ の Apache Foundation にあるドキュメントを参照してください。HTTPD を起動します。
次のコマンドを使用して HTTPD を起動します。EAP_HOME/sbin/apachectl start
HTTPD を停止します。
HTTPD を停止するには次のコマンドを実行します。EAP_HOME/sbin/apachectl stop
16.3.3. httpd 上の mod_cluster 設定
mod_cluster は httpd ベースのロードバランサーです。通信チャネルを使用してリクエストを httpd からアプリケーションサーバーノードのセットの 1 つに転送します。以下の派生を httpd 上の mod_cluster に設定できます。
注記
表16.2 mod_cluster の派生
| 派生 | 説明 | 値 |
|---|---|---|
| CreateBalancers | バランサーが httpd VirtualHosts でどのように作成されるかを定義します。ProxyPass /balancer://mycluster1/ のような派生を許可します。 |
0: httpd で定義された VirtualHosts をすべて作成する
1: バランサーを作成してはいけない (バランサー名の定義に最低でも 1 つの ProxyPass または ProxyMatch が必要)
2: メインサーバーのみ作成する
デフォルト: 2
注記
1 を値として使用する場合、必ず ProxyPass ディレクティブにバランサーを設定するようにしてください。これは、デフォルトは空の stickysession および nofailover=Off であり、MCMP CONFIG メッセージを介して受信された値は無視されるためです。
|
| UseAlias | エイリアスがサーバー名に対応することを確認します。 |
0: エイリアスを無視する
1: エイリアスを確認する
デフォルト: 0
|
| LbstatusRecalTime | 負荷分散論理がノードの状態を再計算する間隔 (秒単位)。 |
デフォルト: 5 秒
|
| WaitForRemove | 削除されたノードを httpd が記憶しなくなるまでの時間 (分単位)。 |
デフォルト: 10 秒
|
| ProxyPassMatch/ProxyPass |
ProxyPassMatch および ProxyPass は、
! (バックエンド url の代わりに) の使用時にパスのリバースプロキシを防ぐ mod_proxy のディレクティブです。イメージなどの静的な情報に httpd が対応できるようにするため使用されます。例は次のとおりです。
ProxyPassMatch ^(/.*\.gif)$ !
上記の例は httpd が直接 .gif ファイルに対応できるようにします。
|
mod_manager ディレクティブの内容は、指定がある場合の除きすべて VirtualHost になります。server config の内容は、ディレクティブが VirtualHost 設定の外部になければならないことを示します。そうでない場合、エラーメッセージが表示され、httpd が開始しません。
表16.3 mod_manager の派生
| 派生 | 説明 | 値 |
|---|---|---|
| EnableMCPMReceive | VirtualHost がノードより MCPM を受信できるようにします。mod_cluster が動作するようにするため、httpd 設定に EnableMCPMReceive が含まれます。VirtualHost のアドバタイズを設定する場所に保存します。 | |
| MemManagerFile |
設定の保存、共有メモリーまたはロックされたファイルのキー生成に mod_manager が使用するベース名。絶対パス名である必要があります。ディレクトリは必要な場合に作成されます。これらのファイルは NFS 共有ではなくローカルドライブに格納することが推奨されます。
内容: サーバー設定
| $server_root/logs/
|
| Maxcontext | mod_cluster によってサポートされるコンテキストの最大数。
内容: サーバー設定
|
デフォルト: 100
|
| Maxnode | mod_cluster によってサポートされるノードの最大数。
内容: サーバー設定
|
デフォルト: 20
|
| Maxhost | mod_cluster によってサポートされるホスト (エイリアス) の最大数。バランサーの最大数も含まれます。
内容: サーバー設定
| 10 |
| Maxsessionid |
mod_cluster-manager ハンドラーにアクティブなセッションの数を提供するために保存されるアクティブ sessionid の数。5 分以内に mod_cluster がセッションより情報を受信しないとセッションは非アクティブになります。
内容: サーバー設定
このフィールドはデモおよびデバッグの目的でのみ使用されます。
| 0: 論理はアクティベートされない。 |
| MaxMCMPMaxMessSize | 他の Max ディレクティブからの MCMP メッセージの最大サイズ。 | 他の Max ディレクティブより計算されます。最小: 1024 |
| ManagerBalancerName | Boss AS、JBossWeb、または Tomcat がバランサー名を提供しない場合に使用するバランサーの名前。 | mycluster
|
| PersistSlots | ファイルのノード、別名、およびコンテキストを保持するよう mod_slotmem に伝えます。
内容: サーバー設定
| Off |
| CheckNonce | mod_cluster-manager ハンドラーを使用する際に nonce のチェックを切り替えます。 |
on/off
デフォルト: on - Nonce をチェック
|
| AllowDisplay | mod_cluster-manager メインページの追加表示を切り替えます。 |
on/off
デフォルト: off - バージョンのみを表示
|
| AllowCmd | mod_cluster-manager の URL を使用するコマンドを許可します。 |
on/off
デフォルト: on - コマンドを許可
|
| ReduceDisplay | メインの mod_cluster-manager ページに表示される情報を減らし、ページ上により多くのノードを表示できるようにします。 |
on/off
デフォルト: off - 情報をすべて表示
|
| SetHandler mod_cluster-manager |
mod_cluster がクラスターから可視できるノードの情報を表示します。情報には一般的な情報が含まれ、追加でアクティブなセッションの数を調べます。
<Location /mod_cluster-manager> SetHandler mod_cluster-manager Order deny,allow Allow from 127.0.0.1 </Location> |
on/off
デフォルト: off
|
注記
16.3.4. 外部 HTTPD を JBoss Enterprise Application Platform アプリケーションの Web フロントエンドとして使用
外部 HTTPD を Web フロントエンドとして使用する理由と、JBoss Enterprise Application Platform でサポートされるさまざまな HTTP コネクターの利点と欠点については、「HTTP コネクターの概要」 を参照してください。状況によっては、オペレーティングシステムに同梱される HTTPD を使用できます。それ以外の場合は、JBoss Enterprise Web Server の一部として同梱される HTTPD を使用できます。
16.3.5. 外部 HTTPD からの要求を受け入れるように JBoss Enterprise Application Platform を設定
JBoss Enterprise Application Platform は、要求を受け入れるプロキシを認識する必要がなく、検索するポートとプロトコルのみを認識する必要があります。これは、mod_cluster の場合は該当しません。この場合は、JBoss Enterprise Application Platform の設定に密接に関係します。ただし、mod_jk、mod_proxy、ISAPI、および NSAPI には以下のタスクが有効です。設定する必要があるプロトコルとポートを例のプロトコルとポートに置き換えます。
mod_cluster に対して JBoss Enterprise Application Platform を設定する場合は 「mod_cluster ワーカーノードの設定」 を参照してください。
要件
- このタスクを実行するには、管理 CLI または管理コンソールにログインする必要があります。タスクの実際の手順では、管理 CLI を使用しますが、管理コンソールでは同じ基本的な手順が使用されます。
- 使用するプロトコル (HTTP、HTTPS、または AJP) のリストが必要です。
手順16.3 設定の編集およびソケットバインディングの追加
jvmRouteおよびuseJKシステムプロパティーを設定します。デフォルトでは、jvmRoute はサーバー名と同じ値に設定されています。カスタマイズする必要がある場合は、次のようなコマンドを使用できます。使用するプロファイルやスタンドアロンサーバーの使用の有無によって、コマンドの/profile=ha部分を置き換えまたは削除します。文字列CUSTOM_ROUTE_NAMEはカスタム jvmRoute の名前に置き換えます。[user@localhost:9999 /]
/profile=ha/subsystem=web:write-attribute(name="instance-id",value="CUSTOM_ROUTE_NAME")useJKの値を有効にするため、次のコマンドを使用して 値をtrueに設定します。[user@localhost:9999 /]
/system-property=UseJK/:add(value=true)Web サブシステムで利用可能なコネクターをリストします。
注記
スタンドアロンサーバーにstandalone-ha.xml設定を使用していない場合や、管理対象ドメインのサーバーグループにhaまたはfull-haプロファイルを使用していない場合のみこの手順が必要になります。これらの設定には必要なコネクターたすべて含まれています。外部 HTTPD が JBoss Enterprise Application Platform の Web サーバーに接続できるようにするには、Web サブシステムにコネクターが必要です。各プロトコルにはソケットグループに関連付けられた独自のコネクターが必要です。現在利用なコネクターをリストするには、以下のコマンドを発行します。[standalone@localhost:9999 /]
/subsystem=web:read-children-names(child-type=connector)必要なコネクター (HTTP、HTTPS、AJP) を示す行がない場合は、コネクターを追加する必要があります。コネクターの設定を確認します。
コネクターの設定方法の詳細については、その設定を確認してください。以下のコマンドは AJP コネクターの設定を読み取ります。他のコネクターは同様の設定出力を持ちます。[standalone@localhost:9999 /]
/subsystem=web/connector=ajp:read-resource(recursive=true){ "outcome" => "success", "result" => { "enable-lookups" => false, "enabled" => true, "max-post-size" => 2097152, "max-save-post-size" => 4096, "protocol" => "AJP/1.3", "redirect-port" => 8443, "scheme" => "http", "secure" => false, "socket-binding" => "ajp", "ssl" => undefined, "virtual-server" => undefined } }必要なコネクターを Web サブシステムに追加します。
コネクターを Web サブシステムに追加するには、ソケットバインディングが必要です。ソケットバインディングは、サーバーまたはサーバーグループによって使用されるソケットバインディンググループに追加されます。以下の手順では、サーバーグループがserver-group-oneであり、ソケットバインディンググループがstandard-socketsであることを前提とします。ソケットをソケットバインディンググループに追加します。
ソケットをソケットバインディンググループに追加するには、以下のコマンドを発行し、プロトコルとポートを必要なものに置き換えます。[standalone@localhost:9999 /]
/socket-binding-group=standard-sockets/socket-binding=ajp:add(port=8009)ソケットバインディングを Web サブシステムに追加します。
以下のコマンドを発行してコネクターを Web サブシステムに追加し、ソケットバインディング名とプロトコルを必要なものに置き換えます。[standalone@localhost:9999 /]
/subsystem=web/connector=ajp:add(socket-binding=ajp, protocol="AJP/1.3", enabled=true, scheme="http")
16.4. クラスタリング
16.4.1. クラスタリングサブシステムに TCP 通信を使用
TCPPING プロトコルスタックを追加し、デフォルトのメカニズムとして使用できます。このような設定オプションはコマンドラインベースの管理 CLI で使用可能です。
mod_cluster サブシステムもデフォルトで UDP 通信を使用しますが、TCP の使用を選択できます。
16.4.2. TCP を使用するよう JGroups サブシステムを設定
mod_cluster サブシステムが TCP も使用するよう設定するには、「mod_cluster サブシステムのアドバタイズの無効化」を参照してください。
Management CLI を実行します。
EAP_HOME/bin/jboss-cli.shコマンド (Linux) またはEAP_HOME\bin\jboss-cli.batコマンド (Microsoft Windows Server の場合) を使用して管理 CLI を起動します。connectと入力して localhost 上のドメインコントローラーに接続するか、connect IP_ADDRESSと入力してリモートサーバー上のドメインコントローラーに接続します。お使いの環境に合わせて以下のスクリプトを変更します。
以下のスクリプトをテキストエディターにコピーします。管理対象ドメインで異なるプロファイルを使用する場合は、プロファイル名を変更します。スタンドアロンサーバーを使用する場合は、コマンドの/profile=full-ha部分を削除します。以下のように、コマンドの最下部にリストされたプロパティーを変更します。これらの各プロパティーはオプションです。- initial_hosts
- 既知と見なされたホストのカンマ区切りのリストであり、初期メンバーシップを検索するために使用できます。
- port_range
- 必要な場合は、ポート範囲を割り当てることができます。2 のポート範囲を割り当て、初期ポートが 7600 である場合は、TCPPING がポート 7600 〜 7601 の各ホストに通信しようとします。このプロパティーはオプションです。
- timeout
- クラスターメンバーのオプションタイムアウト値 (ミリ秒単位)
- num_initial_members
- クラスターが完了したと見なされるまでのノード数。このプロパティーはオプションです。
cd /profile=full-ha/subsystem=jgroups ./stack=tcpping:add cd stack=tcpping ./transport=TRANSPORT:add(type=TCP,socket-binding=jgroups-tcp) :add-protocol(type=TCPPING) :add-protocol(type=MERGE2) :add-protocol(type=FD_SOCK,socket-binding=jgroups-tcp-fd) :add-protocol(type=FD) :add-protocol(type=VERIFY_SUSPECT) :add-protocol(type=BARRIER) :add-protocol(type=pbcast.NAKACK) :add-protocol(type=UNICAST2) :add-protocol(type=pbcast.STABLE) :add-protocol(type=pbcast.GMS) :add-protocol(type=UFC) :add-protocol(type=MFC) :add-protocol(type=FRAG2) :add-protocol(type=RSVP) cd protocol=TCPPING ./property=initial_hosts/:add(value="HostA[7600],HostB[7600]") ./property=port_range/:add(value=0) ./property=timeout/:add(value=3000) ./property=num_initial_members/:add(value=3) cd ../.. :write-attribute(name=default-stack,value=tcpping)
スクリプトをバッチモードで実行します。
警告
バッチファイルを実行する前に、プロファイルを実行しているサーバーをシャットダウンする必要があります。管理 CLI プロンプトで、batchと入力し、Enter キーを押します。プロンプトはハッシュ (#) 記号を含むよう変更され、バッチモードであることが示されます。これにより、一連のコマンドを入力できるようになります。これらのいずれかが失敗した場合は、操作全体がロールバックされます。以前の手順の変更されたスクリプトを貼り付け、最後に新しい行を追加します。run-batchと入力してバッチを実行します。すべてのコマンドが実行されたら、メッセージ「The batch executed successfully」が表示されます。
TCPPING スタックが JGroups サブシステムで利用できるようになります。JGroups サブシステムは、すべてのネットワーク通信に TCP を使用します。mod_cluster サブシステムが TCP も使用するよう設定するには、「mod_cluster サブシステムのアドバタイズの無効化」を参照してください。
16.4.3. mod_cluster サブシステムのアドバタイズの無効化
mod_cluster サブシステムのバランサーはマルチキャスト UDP を使用して可用性をバックグラウンドワーカーにアドバタイズしますが、アドバタイズを無効にすることも可能です。次の手順を用いてこの挙動を設定します。
手順16.4
HTTPD 設定を変更します。
サーバーアドバタイジングを無効にし、代わりにプロキシリストを使用するよう HTTPD 設定を変更します。プロキシリストはワーカーで設定され、ワーカーが対話できるmod_clusterが有効なすべての HTTPD サーバーを含みます。HTTPD サーバーのmod_cluster設定は通常は HTTPD インストール内の/etc/httpd/またはetc/httpd/ディレクトリーにあります (標準以外の場所にインストールされた場合)。そのファイルの詳細については、「Apache HTTPD または JBoss Enterprise Web Server HTTPD への mod_cluster モジュールのインストール」と「mod_cluster が有効な HTTPD に対してサーバーアドバタイズメントプロパティーを設定」を参照してください。 MCPM 要求をリッスンする仮想ホストを含むファイルを開き (EnableMCPMReceiveディレクティブを使用)、次のようにServerAdvertiseディレクティブを変更してサーバーアドバタイジングを無効にします。ServerAdvertise Off
JBoss Enterprise Application Platform の
mod_clusterサブシステム内でアドバタイジングを無効にし、プロキシのリストを提供します。Web ベースの管理コンソールまたはコマンドライン管理 CLI を使用して、mod_clusterサブシステムのアドバタイジングを無効にし、プロキシのリストを提供できます。アドバタイジングが無効な場合は、mod_clusterサブシステムがプロキシを自動的に検出できないため、プロキシのリストが必要です。管理コンソール
- 管理対象ドメインを使用する場合は、管理対象が有効なプロファイル (
haプロファイルやfull-haプロファイルなど) でのみmod_clusterを設定できます。 - 管理コンソールにログインし、画面の右上にある Profiles ラベルを選択します。管理対象ドメインを使用する場合は、Profiles ページの左上にある Profiles 選択ボックスから
haまたはfull-haプロファイルを選択します。 - Subsystems メニューをクリックして展開します。Web サブメニューを展開し、Modcluster を選択します。
- 最上部の Edit ボタンをクリックして、
mod_clusterサブシステム全体に関連するオプションを編集します。Advertise の値をfalseに変更します。Save ボタンを使用して設定を保存します。 - 画面の最下部にある Proxies というラベルのタブをクリックします。Proxies サブページの Edit ボタンをクリックし、プロキシサーバーのリストを入力します。正しい構文は、次のような
HOSTNAME:PORT文字列のカンマ区切りのリストです。10.33.144.3:6666,10.33.144.1:6666
Save ボタンをクリックして変更を保存します。
管理 CLI
次の 2 つの管理 CLI コマンドは、上記の管理コンソールの指示と同じ設定を作成します。管理対象ドメインを実行し、サーバーグループがfull-haプロファイルを使用することが前提となります。異なるプロファイルを使用する場合は、コマンドで名前を変更します。standalone-haプロファイルを使用してスタンドアロンサーバーを使用する場合は、コマンドの/profile=full-ha部分を削除します。/profile=full-ha/subsystem=modcluster/mod-cluster-config=configuration/:write-attribute(name=advertise,value=false) /profile=full-ha/subsystem=modcluster/mod-cluster-config=configuration/:write-attribute(name=proxy-list,value="10.33.144.3:6666,10.33.144.1:6666")
mod_cluster サブシステムは可用性をアドバタイズしないようになります。
16.5. Web、HTTP コネクター、および HTTP クラスタリング
16.5.1. mod_cluster HTTP コネクターについて
- mod_cluster Management Protocol (MCMP) は、アプリケーションサーバーノードと httpd (サーバーサイド負荷分散ファクターとライフサイクルイベントを HTTP メソッドのカスタムセットを介して Web コンテナーに伝送するアプリケーションサーバーノードにより使用される) 間の追加の接続です。
- HTTPD プロキシの動的な設定により、JBoss Enterprise Application Platform の動作を追加設定なしで柔軟に変更できます。
- アプリケーションサーバーは負荷分散ファクターの計算を実行します。これにより、負荷分散メトリックスが他のコネクターよりも正確になります。
- mod_cluster により、アプリケーションライフサイクルを細かく制御できるようになります。各サーバーはすべての Web アプリケーションコンテキストライフサイクルイベントをプロキシに転送し、サーバーの該当するコンテキストで要求のルーティングを開始または停止するよう通知します。これにより、リソースが利用不可であるため、エンドユーザーに 404 エラーが表示されることを防ぐことができます。
- AJP はオプションです。Apache HTTP では AJP を使用する必要があります。ただし、mod_cluster では HTTP、HTTPS、または AJP を使用できます。
16.5.2. mod_cluster サブシステムの設定
mod_cluster オプションが Web サブシステム設定領域で利用可能になります。左上の Profiles タブをクリックします。監理対象ドメインを使用する場合は、設定する適切なプロファイルを、右上にある Profile 選択ボックスから選択します。デフォルトで、ha プロファイルと full-ha プロファイルでは、mod_cluster サブシステムが有効になります。スタンドアロンサーバーを使用する場合は、standalone-ha プロファイルを使用してサーバーを起動する必要があります。左側のメニューの Web 項目をクリックし、サブメニューから Modcluster を選択します。これらのオプションについては、以下の表で説明されています。最初に設定全体が示され、次にセッション、Web コンテキスト、プロキシ、SSL、およびネットワーキングの設定が示されます。これらの各設定の独自のタブが Modcluster 設定画面に示されます。
注記
ha および full-ha (監理対象ドメインドメイン) または standalone-ha (スタンドアロンサーバー) のいずれかです。
表16.4 mod_cluster 設定オプション
| オプション | 説明 | CLI コマンド |
|---|---|---|
| 負荷分散グループ (Load Balancing Group) |
これが null でない場合、要求はロードバランサーの特定の負荷分散グループに送信されます。負荷分散グループを使用しない場合は、これを空白のままにしてください。これはデフォルトでは設定されません。
|
/profile=full-ha/subsystem=modcluster/mod-cluster-config=configuration/:write-attribute(name=load-balancing-group,value=myGroup) |
| バランサー (Balancer) |
バランサーの名前。これは、HTTPD プロキシの設定に一致する必要があります。
|
/profile=full-ha/subsystem=modcluster/mod-cluster-config=configuration/:write-attribute(name=balancer,value=myBalancer) |
| ソケットのアドバタイズ (Advertise Socket) |
クラスターのアドバタイズに使用するソケットバインディングの名前です。
|
/profile=full-ha/subsystem=modcluster/mod-cluster-config=configuration/:write-attribute(name=advertise-socket,value=modcluster) |
| セキュリティーキーのアドバタイズ (Advertise Security Key) |
アドバタイズのセキュリティーキーが含まれる文字列。
|
/profile=full-ha/subsystem=modcluster/mod-cluster-config=configuration/:write-attribute(name=advertise-security-key,value=myKey) |
| グループアドレスのアドバタイズ (Advertise Group Address) |
httpd プロキシマルチキャストアドバタイズメントをリッスンする UDP アドレス。
|
/profile=full-ha/subsystem=modcluster/mod-cluster-config=configuration/:write-attribute(name=advertise-group-address,value=224.0.1.105) |
| ポートのアドバタイズ (Advertise Port) |
httpd プロキシマルチキャストアドバタイズメントをリッスンする UDP ポート。
|
/profile=full-ha/subsystem=modcluster/mod-cluster-config=configuration/:write-attribute(name=advertise-port,value=23364) |
| スレッドファクトリーのアドバタイズ (Advertise Thread Factory) |
バックグラウンドのアドバタイズメントリスナーを作成するために使用されるスレッドファクトリ。
|
/profile=full-ha/subsystem=modcluster/mod-cluster-config=configuration/:write-attribute(name=advertise-thread-factory,value=Executors.defaultThreadFactory()) |
| アドバタイズ (Advertise) |
アドバタイズが有効かどうかを指定します。デフォルト値は
true です。
|
/profile=full-ha/subsystem=modcluster/mod-cluster-config=configuration/:write-attribute(name=advertise,value=true) |
| JVM ルートファクトリ (JVM Route Factory) | server.xml に何も指定されていない場合に、ノードの jvm ルートを判断するストラテジを決定するファクトリ。デフォルトのファクトリは最初に jboss.mod_cluster.jvmRoute プロパティーを確認します。このシステムプロパティーが定義されていない場合、jvm ルートが UUID に割り当てされます。
|
/profile=full-ha/subsystem=modcluster/mod-cluster-config=configuration/:write-attribute(name=jvm-route-factory,value=new SystemPropertyJvmRouteFactory(new UUIDJvmRouteFactory(), "jboss.mod_cluster.jvmRoute")) |
表16.5 mod_cluster セッション設定オプション
| オプション | 説明 | CLI コマンド |
|---|---|---|
| スティッキーセッション (Sticky Session) |
要求にスティッキーセッションを使用するかどうかを指定します。つまり、クライアントが特定のクラスターノードに接続すると、クラスターノードが利用不可能でない限り、それ以降の通信は同じノードにルーティングされます。デフォルト値および推奨される設定値は
true です。
|
/profile=full-ha/subsystem=modcluster/mod-cluster-config=configuration/:write-attribute(name=sticky-session,value=true) |
| スティッキーセッションの強制 (Sticky Session Force) | true を設定すると、最初のノードが利用不可能になった場合に要求は新しいクラスターノードにリダイレクトされず、失敗します。デフォルト値は false です。
|
/profile=full-ha/subsystem=modcluster/mod-cluster-config=configuration/:write-attribute(name=sticky-session-force,value=false) |
| スティッキーセッションの削除 (Sticky Session Remove) |
フェイルオーバー時にセッション情報を削除します。デフォルトで無効になっています。
|
/profile=full-ha/subsystem=modcluster/mod-cluster-config=configuration/:write-attribute(name=sticky-session-remove,value=false) |
表16.6 mod_cluster Web コンテキスト設定オプション
| オプション | 説明 | CLI コマンド |
|---|---|---|
| コンテキストの自動有効化 (Auto Enable Contexts) |
デフォルトで
mod_cluster に新しいコンテンツを追加するかどうかを指定します。このデフォルト値は true です。デフォルト値を変更し、コンテキストを手動で有効にする必要がある場合は、Web アプリケーションで enable() MBean メソッドまたは mod_cluster マネージャー (HTTPD の設定で指定された名前付き仮想ホストまたはポートの HTTPD プロキシで実行される Web アプリケーション) を使用してコンテキストを有効にできます。
|
/profile=full-ha/subsystem=modcluster/mod-cluster-config=configuration/:write-attribute(name=auto-enable-contexts,value=true) |
| 除外されたコンテキスト (Excluded Contexts) | mod_cluster が無視する必要がある、コンテキストのカンマ区切りリスト。ホストが指定されない場合、ホストは localhost と見なされます。ROOT は Web アプリケーションのルートコンテキストを示します。デフォルト値は ROOT,invoker,jbossws,juddi,console です。
|
/profile=full-ha/subsystem=modcluster/mod-cluster-config=configuration/:write-attribute(name=excluded-contexts,value="ROOT,invoker,jbossws,juddi,console") |
表16.7 mod_cluster プロキシー設定オプション
| オプション | 説明 | CLI コマンド |
|---|---|---|
| プロキシ URL (Proxy URL) |
定義された場合、この値は MCMP コマンドの URL の前に付加されます。
|
/profile=full-ha/subsystem=modcluster/mod-cluster-config=configuration/:write-attribute(name=proxy-url,value=myhost) |
| プロキシリスト (Proxy List) |
HTTPD プロキシアドレスのカンマ区切りリスト (
hostname:port 形式)。これは、mod_cluster プロセスが最初に通信しようとするリストを示します。
|
/profile=full-ha/subsystem=modcluster/mod-cluster-config=configuration/:write-attribute(name=proxy-list,value="127.0.0.1,127.0.0.2") |
mod_cluster に対する SSL 通信の設定
デフォルトでは、mod_cluster 通信は暗号化されていない HTTP リンクを介して行われます。コネクタースキームを HTTPS (表16.5「mod_cluster セッション設定オプション」 を参照) に設定する場合、以下の設定では、mod_cluster に、接続を暗号化する情報を見つける場所が通知されます。
表16.8 mod_cluster SSL 設定オプション
| オプション | 説明 | CLI コマンド |
|---|---|---|
| ssl |
SSL を有効にするかどうか。デフォルトは
false です。
|
/profile=full-ha/subsystem=modcluster/mod-cluster-config=configuration/ssl=configuration/:write-attribute(name=ssl,value=true) |
| キーエイリアス (Key Alias) |
証明書が作成されたときに選択されたキーエイリアス。
|
/profile=full-ha/subsystem=modcluster/mod-cluster-config=configuration/ssl=configuration/:write-attribute(name=key-alias,value=jboss) |
| キーストア (Key Store) |
クライアント証明書が含まれるキーストアの場所。
|
/profile=full-ha/subsystem=modcluster/mod-cluster-config=configuration/ssl=configuration/:write-attribute(name=key-store,value=System.getProperty("user.home") + "/.keystore")
|
| キーストアタイプ (Key Store Type) |
キーストアのタイプ
|
/profile=full-ha/subsystem=modcluster/mod-cluster-config=configuration/ssl=configuration/:write-attribute(name=key-store-type,value=JKS) |
| キーストアプロバイダー (Key Store Provider) |
キーストアのプロバイダー
|
/profile=full-ha/subsystem=modcluster/mod-cluster-config=configuration/ssl=configuration/:write-attribute(name=key-store-provider,value=IBMJCE) |
| パスワード (Password) |
証明書が作成された時に選択されたパスワード。
|
/profile=full-ha/subsystem=modcluster/mod-cluster-config=configuration/ssl=configuration/:write-attribute(name=password,value=changeit) |
| トラストアルゴリズム (Trust Algorithm) |
トラストマネージャーファクトリのアルゴリズム。
|
/profile=full-ha/subsystem=modcluster/mod-cluster-config=configuration/ssl=configuration/:write-attribute(name=trust-algorithm,value=PKIX) |
| 証明書ファイル (Cert File) |
証明書ファイルの場所。
|
/profile=full-ha/subsystem=modcluster/mod-cluster-config=configuration/ssl=configuration/:write-attribute(name=ca-certificate-file,value=${user.home}/jboss.crt)
|
| CRL ファイル (CRL File) |
証明書失効リスト (CRL) ファイル。
|
/profile=full-ha/subsystem=modcluster/mod-cluster-config=configuration/ssl=configuration/:write-attribute(name=ca-crl-file,value=${user.home}/jboss.crl)
|
| 証明書の最大長 (Max Certificate Length) |
トラストストアの保持される証明書の最大長。デフォルトは 5 です。
|
/profile=full-ha/subsystem=modcluster/mod-cluster-config=configuration/ssl=configuration/:write-attribute(name=trust-max-cert-length,value=5) |
| キーファイル (Key File) |
証明書のキーファイルの場所。
|
/profile=full-ha/subsystem=modcluster/mod-cluster-config=configuration/ssl=configuration/:write-attribute(name=certificate-key-file,value=${user.home}/.keystore)
|
| 暗号スイート (Cipher Suite) |
許可された暗号スイート。
|
/profile=full-ha/subsystem=modcluster/mod-cluster-config=configuration/ssl=configuration/:write-attribute(name=cipher-suite,value=ALL) |
| 証明書エンコーディングアルゴリズム (Certificate Encoding Algorithms) |
キーマネージャーファクトリのアルゴリズム。
|
/profile=full-ha/subsystem=modcluster/mod-cluster-config=configuration/ssl=configuration/:write-attribute(name=encoding-algorithms,value=ALL) |
| 失効 URL (Revocation URL) |
証明局失効リストの URL。
|
/profile=full-ha/subsystem=modcluster/mod-cluster-config=configuration/ssl=configuration/:write-attribute(name=ca-revocation-url,value=jboss.crl) |
| プロトコル (Protocol) |
有効 な SSL プロトコル。
|
/profile=full-ha/subsystem=modcluster/mod-cluster-config=configuration/ssl=configuration/:write-attribute(name=protocol,value=SSLv3) |
mod_cluster ネットワーキングオプションの設定
利用可能な mod_cluster ネットワーキングオプションは、mod_cluster サービスが通信するさまざまな種類のサービスに対するさまざまなタイムアウト動作を制御します。
表16.9 mod_cluster ネットワーキング設定オプション
| オプション | 説明 | CLI コマンド |
|---|---|---|
| ノードタイムアウト (Node Timeout) |
ノードに対するプロキシ接続のタイムアウト (秒単位)。これは、
mod_cluster がバックエンド応答を待機する時間です。この時間が経過するとエラーが返されます。これはワーカー mod_proxy ドキュメンテーションのタイムアウトに対応します。値が -1 の場合は、タイムアウトがないことを示します。mod_cluster は要求を転送する前に cping/cpong を常に使用し、mod_cluster により使用される connectiontimeout 値は ping 値であることに注意してください。
|
/profile=full-ha/subsystem=modcluster/mod-cluster-config=configuration/:write-attribute(name=node-timeout,value=-1) |
| ソケットタイムアウト (Socket Timeout) |
MCMP コマンドに対する httpd プロキシからの応答を待機する時間 (ミリ秒単位)。この時間が経過すると、タイムアウトになり、プロキシでエラーが発生していると示されます。
|
/profile=full-ha/subsystem=modcluster/mod-cluster-config=configuration/:write-attribute(name=socket-timeout,value=20) |
| 停止コンテキストタイムアウト (Stop Context Timeout) |
コンテキストがクリーンにシャットアウトされるまでの、stopContextTimeoutUnit で指定された単位の時間 (配布可能なコンテキストに対する保留中の要求の完了、または配布可能でないコンテキストに対するアクティブなセッションの破棄/期限切れ)。
|
/profile=full-ha/subsystem=modcluster/mod-cluster-config=configuration/:write-attribute(name=stop-context-timeout,value=10) |
| セッション排出ストラテジ (Session Draining Strategy) |
Web アプリケーションをアンデプロイする前にセッションを排出 (drain) するかどうか。
|
/profile=full-ha/subsystem=modcluster/mod-cluster-config=configuration/:write-attribute(name=session-draining-strategy,value=DEFAULT) |
| 最大試行回数 (Max Attempts) |
HTTPD プロキシが該当する要求を送信しようとする回数。最小値は、
1 であり、試行回数は 1 回だけです。mod_proxy のデフォルト値も 1 であり、再試行は行われません。
|
/profile=full-ha/subsystem=modcluster/mod-cluster-config=configuration/:write-attribute(name=max-attempts,value=1) |
| パケットのフラッシュ (Flush Packets) |
HTTPD サーバーへのパケットのフラッシュを有効にするかどうかを指定します。デフォルト値は
false です。
|
/profile=full-ha/subsystem=modcluster/mod-cluster-config=configuration/:write-attribute(name=flush-packets,value=false) |
| フラッシュの待機 (Flush Wait) |
HTTPD サーバーにパケットをフラッシュするまでの時間 (秒単位)。デフォルト値は
-1 です。値が -1 の場合は、パケットをフラッシュするまで永遠に待機します。
|
/profile=full-ha/subsystem=modcluster/mod-cluster-config=configuration/:write-attribute(name=flush-wait,value=-1) |
| Ping |
ping に対するクラスターノードからの応答を待つ時間 (秒数単位)。デフォルト値は
10 秒です。
|
/profile=full-ha/subsystem=modcluster/mod-cluster-config=configuration/:write-attribute(name=ping,value=10) |
| SMAX |
ソフトリミットのアイドル接続最大数 (ワーカー mod_proxy ドキュメントの
smax と同じ)。httpd スレッド設定により最大値が異なり、ThreadsPerChild または 1 になります。
|
profile=full-ha/subsystem=modcluster/mod-cluster-config=configuration/:write-attribute(name=smax,value=ThreadsPerChild) |
| TTL |
smax より上のアイドル状態の接続の残存時間 (秒数単位)。デフォルト値は 60 です。
nodeTimeout が定義されていない場合は、ProxyTimeout ディレクティブの Proxy が使用されます。ProxyTimeout が定義されていない場合は、サーバータイムアウト Timeout が使用されます。このデフォルト値は 300 秒です。nodeTimeout、ProxyTimeout、および Timeout はソケットレベルで設定されます。
|
/profile=full-ha/subsystem=modcluster/mod-cluster-config=configuration/:write-attribute(name=ttl,value=-1) |
| ノードタイムアウト (Node Timeout) |
外部 HTTPD サーバーの利用可能なワーカープロセスが要求を処理するまで待機する時間 (秒数単位)。デフォルト値は
-1 で、mod_cluster は HTTPD ワーカーが要求を処理するまで永遠に待機します。
|
/profile=full-ha/subsystem=modcluster/mod-cluster-config=configuration/:write-attribute(name=node-timeout,value=-1) |
mod_cluster ロードプロバイダー設定オプション
以下の mod_cluster 設定オプションは Web ベース管理コンソールで利用できませんが、コマンドライン管理 CLI を使用して設定できます。
1 を提供し、負荷分散アルゴリズムをまったく考慮せずに負荷を均等に分散します。これを追加するには、CLI コマンド /profile=full-ha/subsystem=modcluster/mod-cluster-config=configuration/simple-load-provider:add を使用します。
busyness を使用します。使用可能な要因のリストは以下のとおりです。個々の環境に合わせて独自のロードプロバイダーを作成できます。動的なロードプロバイダーの以下のオプションを変更できます。CLI を介して追加すると、これらの要因 (メトリック) を複数指定できます。
:add-metric(type=cpu)
表16.10 mod_cluster 動的ロードプロバイダーオプション
| オプション | 説明 | CLI コマンド |
|---|---|---|
| 衰退 (Decay) |
履歴メトリックの重要性が衰退すべき要因。
|
/profile=full-ha/subsystem=modcluster/mod-cluster-config=configuration/dynamic-load-provider=configuration/:write-attribute(name=decay,value=2) |
| 履歴 (History) |
ロードを決定する際に考慮する、ロードメトリックの履歴記録数。
|
/profile=full-ha/subsystem=modcluster/mod-cluster-config=configuration/dynamic-load-provider=configuration/:write-attribute(name=history,value=9) |
| ロードメトリック (Load Metric) |
JBoss Enterprise Application Platform 6 の動的ロードプロバイダーに含まれる唯一のロードメトリックは
busyness で、負荷が最も低いワーカーに新しい要求を送信しようとします。ワーカーの能力 (1 は 100% の能力を意味します) と busyness メトリック全体に割り当てられる重みを設定できます。
|
/profile=full-ha/subsystem=modcluster/mod-cluster-config=configuration/dynamic-load-provider=configuration/load-metric=busyness/:write-attribute(name=capacity,value=1.0) /profile=full-ha/subsystem=modcluster/mod-cluster-config=configuration/dynamic-load-provider=configuration/load-metric=busyness/:write-attribute(name=type,value=busyness) /profile=full-ha/subsystem=modcluster/mod-cluster-config=configuration/dynamic-load-provider=configuration/load-metric=busyness/:write-attribute(name=weight,value=1) |
ロードメトリックアルゴリズム
- cpu
- cpu ロードメトリックは、平均 CPU ロードを使用して次のワークロードを受け取るクラスターノードを決定します。
- mem
- mem ロードメトリックは空きネイティブ RAM をロード係数として使用します。このメトリックの使用は推奨されません。これは、バッファーとキャッシュを含む値が提供され、メモリー管理が優れたシステムで値が常に非常に小さくなるためです。
- heap
- ヒープロードメトリックは、ヒープ使用率を使用して次のワークロードを受け取るクラスターを決定します。
- sessions
- セッションロードメトリックは、アクティブセッションの数をメトリックとして使用します。
- requests
- 要求ロードメトリックは、クライアント要求の数を使用して次のワークロードを受け取るクラスターノードを決定します。たとえば、容量 1000 の場合、 1000 要求数/秒は「フルロード」と見なされます。
- send-traffic
- send-traffic ロードメトリックは、ワーカーノードからクライアントに送信されるトラフィックの量を使用します。たとえば、デフォルト容量が 512 の場合は、平均送信トラフィックが 512 KB/秒以上のとき、ノードがフルロードであると見なされます。
- receive-traffic
- receive-traffic ロードメトリックは、クライアントからワーカーノードに送信されるトラフィックの量を使用します。たとえば、デフォルト容量が 1024 の場合は、平均受信トラフィックが 1024 KB/秒以上のとき、ノードがフルロードであると見なされます。
- busyness
- このメトリックは、要求の処理で負荷が大きいスレッドプールからのスレッドの量を表します。
例16.1 ロードバランサーメトリックの設定
/profile=full-ha/subsystem=modcluster/mod-cluster-config=configuration/dynamic-load-provider=configuration/load-metric=cpu/:write-attribute(name="weight",value="3")
16.5.3. Apache HTTPD または JBoss Enterprise Web Server HTTPD への mod_cluster モジュールのインストール
要件
- このタスクを実行するには、Red Hat Enterprise Linux 6 または JBoss Enterprise Web Server にインストールされた Apache HTTPD を使用するか、JBoss Enterprise Application Platform 6 のダウンロード可能な個別コンポーネントとして含まれるスタンドアロン HTTPD を使用する必要があります。
- Red Hat Enterprise Linux 6 に Apache HTTPD をインストールする必要がある場合は、https://access.redhat.com/site/documentation/ で入手可能な 『Red Hat Enterprise Linux 6 デプロイメントガイド (Red Hat Enterprise Linux 6 Deployment Guide)』 に記載された手順を実行します。
- JBoss Enterprise Application Platform 6 のダウンロード可能な個別コンポーネントとして同梱されたスタンドアロン HTTPD をインストールする必要がある場合は、「JBoss Enterprise Application Platform 6 に含まれる Apache HTTPD のインストール」を参照してください。
- JBoss Enterprise Web Server をインストールする必要がある場合は、https://access.redhat.com/site/documentation/ で入手可能な『JBoss Enterprise Web Server インストールガイド (JBoss Enterprise Web Server Installation Guide)』 に記載された手順を実行します。
- Red Hat カスタマーポータル (https://access.redhat.com) からお使いのオペレーティングシステムとアーキテクチャー用の Webserver Connecter Natives パッケージをダウンロードします。このパッケージには、お使いのオペレーティングシステム用に事前にコンパイルされた mod_cluster バイナリー HTTPD モジュールが含まれます。アーカイブの抽出後に、モジュールは
modules/native/lib/httpd/modules/ディレクトリーに配置されます。etc/には、いくつかのサンプル設定ファイルが含まれ、share/ディレクトリーには、いくつかの補足ドキュメントが含まれます。 - 管理 (root) 権限を使用してログインする必要があります。
手順16.5 mod_cluster モジュールのインストール
HTTPD 設定の場所を決定します。
HTTPD 設定の場所は、Red Hat Enterprise Linux の Apache HTTPD を使用しているか、JBoss Enterprise Application Platform 6 でダウンロード可能な個別コンポーネントとして同梱されたスタンドアロン HTTPD を使用しているか、JBoss Enterprise Web Server で利用可能な HTTPD を使用しているかによって異なります。これは以下の 3 つのいずれかのオプションであり、このタスクの残りでは、HTTPD_HOME と呼ばれます。- Apache HTTPD -
/etc/httpd/重要
通常、Apache の追加の設定ファイルはconf.d/にありますが、以下の手順はHTTPD_HOME/conf/ディレクトリを使用しないと正しく機能しません。 - JBoss Enterprise Application Platform HTTPD - この場所は、使用しているインフラストラクチャーの要件に基づいて、ユーザーにより選択されます。
- JBoss Enterprise Web Server HTTPD -
EWS_HOME/httpd/
モジュールを HTTPD モジュールディレクトリーにコピーします。
4 つのモジュール (拡張子が.soのファイル) を、抽出された Webserver Natives アーカイブのmodules/native/lib/httpd/modules/ディレクトリーからHTTPD_HOME/modules/ディレクトリーにコピーします。JBoss Enterprise Web Server の場合は
mod_proxy_balancerモジュールを無効にします。JBoss Enterprise Web Server を使用する場合は、mod_proxy_balancerモジュールがデフォルトで有効になります。これには mod_cluster との互換性がありません。これを無効にするには、HTTPD_HOME/conf/httpd.confを編集し、モジュールをロードする行の前に#(ハッシュ) 記号を置いて以下の行をコメントアウトします。この行はコメントなしで表示されたり、コメントありで表示されたりします (以下参照)。LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
# LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
ファイルを保存し、閉じます。mod_cluster モジュールを設定します。
- テキストエディターで
HTTPD_HOME/conf/httpd.confを開き、以下の内容をファイルの最後に追加します。# Include mod_cluster's specific configuration file Include conf/JBoss_HTTP.conf
ファイルを保存し、終了します。 HTTPD_HOME/httpd/conf/JBoss_HTTP.confという名前の新しいファイルを作成し、以下の内容をそのファイルに追加します。LoadModule slotmem_module modules/mod_slotmem.so LoadModule manager_module modules/mod_manager.so LoadModule proxy_cluster_module modules/mod_proxy_cluster.so LoadModule advertise_module modules/mod_advertise.so
これにより、Apache HTTPD は、mod_clusterが機能するために必要なモジュールを自動的にロードします。
プロキシサーバーリスナーを作成します。
HTTPD_HOME/httpd/conf/JBoss_HTTP.confの編集を続行し、大文字の値をシステムに適切な値に置き換えることにより以下の最小の設定を追加します。Listen IP_ADDRESS:PORT <VirtualHost IP_ADDRESS:PORT> <Location /> Order deny,allow Deny from all Allow from *.MYDOMAIN.COM </Location> KeepAliveTimeout 60 MaxKeepAliveRequests 0 EnableMCPMReceive On ManagerBalancerName mycluster ServerAdvertise On </VirtualHost>これらのディレクティブにより、IP_ADDRESS:PORTでリッスンする新しい仮想サーバーが作成され、MYDOMAIN.COMからの接続が許可され、仮想サーバー自体がmyclusterという名前のバランサーとしてアドバタイズされます。これらのディレクティブの詳細は、Apache Web Server 向けドキュメントに記載されています。ServerAdvertiseおよびEnableMCPMReceiveディレクティブの詳細と、サーバーアドバタイジングの影響については、「mod_cluster が有効な HTTPD に対してサーバーアドバタイズメントプロパティーを設定」を参照してください。ファイルを保存し、終了します。HTTPD を再起動します。
HTTPD の再起動方法は、Red Hat Enterprise Linux の Apache HTTPD を使用しているか、JBoss Enterprise Web Server に含まれる HTTPD を使用しているかによって異なります。以下の 2 つのいずれかの方法を選択します。Red Hat Enterprise Linux 6 Apache HTTPD
以下のコマンドを発行します。[root@host]#
service httpd restartJBoss Enterprise Web Server HTTPD
JBoss Enterprise Web Server は、Red Hat Enterprise Linux と Microsoft Windows Server の両方で実行されます。HTTPD の再起動方法はそれぞれ異なります。Red Hat Enterprise Linux
Red Hat Enterprise Linux では、JBoss Enterprise Web Server は HTTPD をサービスとしてインストールします。HTTPD を再起動するには、以下の 2 つのコマンドを発行します。[root@host ~]# service httpd stop[root@host ~]# service httpd startMicrosoft Windows Server
コマンドプロンプトで以下のコマンドを管理権限で発行します。C:\> net stop httpdC:\> net start httpd
Apache HTTPD が ロードバランサーとして設定され、JBoss Enterprise Application Platform 6 が実行されている mod_cluster サブシステムと連携できます。JBoss Enterprise Application Platform が mod_cluster を認識するよう設定する場合は 「mod_cluster ワーカーノードの設定」 を参照してください。
16.5.4. mod_cluster が有効な HTTPD に対してサーバーアドバタイズメントプロパティーを設定
HTTPD が mod_cluster ロードバランサーと対話するよう設定する手順については、「Apache HTTPD または JBoss Enterprise Web Server HTTPD への mod_cluster モジュールのインストール」を参照してください。詳細な説明が必要な設定の側面の 1 つはサーバーアドバタイズメントです。
httpd.conf に加える必要があります。通常、このファイルは Red Hat Enterprise Linux の /etc/httpd/conf/httpd.conf にありますが、スタンドアロン Apache HTTPD インスタンスの etc/ ディレクトリにあることもあります。
手順16.6 httpd.conf ファイルを編集し、変更を実装する
AdvertiseFrequencyパラメーターを無効にします (存在する場合)。<VirtualHost>ステートメントに以下のような行がある場合は、最初の文字の前に#(ハッシュ) 記号を置いて、コメントアウトします。この値は5とは異なることがあります。AdvertiseFrequency 5
サーバーアドバタイズメントを無効にするディレクティブを追加します。
<VirtualHost>ステートメント内部に以下のディレクティブを追加してサーバーアドバタイズメントを無効にします。ServerAdvertise Off
MCPM メッセージの受信機能を有効にします。
次のディレクティブを追加して、HTTPD サーバーがワーカーノードより MCPM メッセージを受信できるようにします。EnableMCPMReceive On
HTTPD サーバーを再起動します。
Red Hat Enterprise Linux を使用するか、または Microsoft Windows Server を使用するかに応じて、HTTPD サーバーを再起動します。Red Hat Enterprise Linux
[root@host ]# service httpd restart
Microsoft Windows Server
C:\> net service http C:\> net service httpd start
HTTPD が mod_cluster プロキシの IP アドレスとポートをアドバタイズしなくなります。繰り返すには、ワーカーノードが静的アドレスとポートを使用してプロキシと通信するよう設定する必要があります。詳細については、「mod_cluster ワーカーノードの設定」を参照してください。
16.5.5. mod_cluster ワーカーノードの設定
mod_cluster サブシステムを介して 1 度だけ設定されます。mod_cluster サブシステムを設定するには、「mod_cluster サブシステムの設定」を参照してください。各ワーカーノードは別々に設定されるため、クラスターを追加する各ノードに対してこの手順を繰り返してください。
ワーカーノード設定
- スタンドアロンサーバーを使用する場合は、スタンドアロンサーバーを
standalone-haプロファイルで起動する必要があります。 - 管理対象ドメインを使用する場合、サーバーグループは
haまたはfull-haプロファイルとha-socketsまたはfull-ha-socketsソケットバインディンググループを使用する必要があります。JBoss Enterprise Application Platform には、これらの要件を満たすother-server-groupという名前のクラスター対応サーバーグループが同梱されます。
注記
/profile=full-ha 部分を削除します。
手順16.7 ワーカーノードの設定
ネットワークインターフェースの設定
デフォルトでは、ネットワークインターフェースがすべて127.0.0.1に設定されます。スタンドアロンサーバーまたはサーバーグループ内の 1 つまたは複数のサーバーをホストする各物理ホストでは、インターフェースが他のサーバーが見つけることができるパブリック IP アドレスを使用するよう設定する必要があります。JBoss Enterprise Application Platform ホストの IP アドレスを変更するには、ホストをシャットダウンし、設定ファイルを直接編集する必要があります。これは、管理コンソールと管理 CLI を駆動する管理 API は固定管理アドレスに依存するためです。クラスター内の各サーバーの IP アドレスをマスターのパブリック IP アドレスに変更するには、次の手順を実行します。- サーバーを完全にシャットダウンします。
EAP_HOME/domain/configuration/内にある管理対象ドメイン用のhost.xmlまたはEAP_HOME/standalone/configuration/内にあるスタンドアロンサーバー用のstandalone-ha.xmlを編集します。<interfaces>要素を見つけます。management、public、およびunsecuredの 3 つのインターフェースが設定されます。これらそれぞれに対して、値127.0.0.1をホストの外部 IP アドレスに変更します。- 管理対象ドメインに参加し、マスターでないホストの場合は、
<host要素を見つけます。この要素には>閉じ記号がないことに注意してください。これはこの要素が属性を含むためです。名前属性の値をmasterから一意の名前 (スレーブごとに異なる名前) 変更します。この名前は、スレーブがクラスター対して身元を示すためにも使用されるため、注意してください。 - 管理対象ドメインを参加する必要がある新しく設定されたホストの場合は、
<domain-controller>要素を見つけます。<local />要素をコメントアウトまたは削除し、次の行を追加して、IP アドレス (X.X.X.X) をドメインコントローラーのアドレスに変更します。この手順は、スタンドアロンサーバーには適用されません。<remote host="X.X.X.X" port="${jboss.domain.master.port:9999}" security-realm="ManagementRealm"/> - ファイルを保存し、終了します。
各スレーブサーバーの認証を設定します。
各スレーブサーバーでは、ドメインコントローラーまたはスタンドアロンマスターのManagementRealmで作成されたユーザー名とパスワードが必要です。ドメインコントローラーまたはスタンドアロンマスターで、EAP_HOME/add-user.shコマンドを実行します。同じユーザー名を持つユーザーをスレーブとしてManagementRealmに追加します。このユーザーが外部 JBoss AS インスタンスに対して認証する必要があるかどうか尋ねられた場合は、yesと回答します。パスワードchangemeを使用した、slave1という名前のスレーブに対するコマンドの入力および出力の例は以下のとおりです。user:bin user$ ./add-user.sh What type of user do you wish to add? a) Management User (mgmt-users.properties) b) Application User (application-users.properties) (a):
aEnter the details of the new user to add. Realm (ManagementRealm) : Username :slave1Password :changemeRe-enter Password :changemeAbout to add user 'slave1' for realm 'ManagementRealm' Is this correct yes/no?yesAdded user 'slave1' to file '/home/user/jboss-eap-6.0/standalone/configuration/mgmt-users.properties' Added user 'slave1' to file '/home/user/jboss-eap-6.0/domain/configuration/mgmt-users.properties' Is this new user going to be used for one AS process to connect to another AS process e.g. slave domain controller? yes/no? yes To represent the user add the following to the server-identities definition <secret value="Y2hhbmdlbWU=" />add-user.shの出力から Base64 でエンコードされた<secret>要素をコピーします。認証に Base64 でエンコードされたパスワード値を指定したい場合、add-user.shの出力の最終行より<secret>要素値をコピーします。次の手順でこの値が必要になります。新しい認証を使用するようスレーブホストのセキュリティーレルムを変更します。
- スレーブホストの
host.xmlまたはstandalone-ha.xmlファイルを再度開きます。 <security-realms>要素を探します。ここにセキュリティーレルムを設定します。- 以下の方法の 1 つを用いて秘密の値を指定できます。
設定ファイルに Base64 でエンコードされたパスワード値を指定します。
- 以下の XML コードを
<security-realm name="ManagementRealm">行のすぐ下に追加します。<server-identities> <secret value="Y2hhbmdlbWU="/> </server-identities> - "Y2hhbmdlbWU=" を前の手順で
add-user.shの出力より返された秘密の値に置き換えます。
ホストを設定し、vault よりパスワードを取得します。
vault.shスクリプトを使用してマスクされたパスワードを生成します。次のような文字列が生成されます:VAULT::secret::password::ODVmYmJjNGMtZDU2ZC00YmNlLWE4ODMtZjQ1NWNmNDU4ZDc1TElORV9CUkVBS3ZhdWx0。vault に関する詳細は、「機密性の高い文字列のパスワード vault」の項にある 「クリアテキストファイルでの機密性が高い文字列のセキュア化について」 を参照してください。- 以下の XML コードを
<security-realm name="ManagementRealm">行のすぐ下に追加します。<server-identities> <secret value="${VAULT::secret::password::ODVmYmJjNGMtZDU2ZC00YmNlLWE4ODMtZjQ1NWNmNDU4ZDc1TElORV9CUkVBS3ZhdWx0}"/> </server-identities>必ず秘密の値を前の手順で生成したマスクされたパスワードに置き換えるようにしてください。注記
vault でパスワードを作成する場合、Base64 エンコードではなくプレーンテキストで指定する必要があります。
システムプロパティーとしてパスワードを指定します。
- 以下の XML コードを
<security-realm name="ManagementRealm">行のすぐ下に追加します。<server-identities> <secret value=${server.identity.password}/> </server-identities> - システムプロパティーとしてパスワードを指定する場合、次の方法のいずれかを用いてホストを設定できます。
- 次の例のように、プレーンテキストのパスワードをコマンドライン引数として入力し、サーバーを起動します。
-Dserver.identity.password=changeme
注記
パスワードはプレーンテキストで入力する必要があります。ps -efコマンドを実行するユーザーはこのパスワードを見ることができます。 - パスワードをプロパティーファイルに格納し、プロパティーファイルの URL をコマンドライン引数として渡します。
- キーと値のペアをプロパティーファイルに追加します。例は次のとおりです。
server.identity.password=changeme
- コマンドライン引数を用いてサーバーを起動します。
--properties=URL_TO_PROPERTIES_FILE
.
- ファイルを保存し、終了します。
サーバーを再起動します。
ホスト名をユーザー名として使用し、暗号化された文字列をパスワードとして使用してスレーブがマスターに対して認証されます。
16.5.6. クラスター間のトラフィックの移行
JBoss Enterprise Application Platform 6 を使用して新しいクラスターを作成した後、アップグレード処理の一部として以前のクラスターから新しいクラスターへトラフィックを移行したいことがあります。ここでは、停止時間やダウンライムを最小限に抑えてトラフィックを移行するストラテジーについて説明します。
要件
- 新しいクラスターの設定: 「
mod_clusterサブシステムの設定」 (このクラスターを Cluster NEW とします)。 - 不要となった古いクラスターの設定 (このクラスターを Cluster OLD とします)。
手順16.8 クラスターのアップグレード処理
- 要件に従って、新しいクラスターを設定します。
- Cluster NEW および Cluster OLD の両方で、設定オプション
sticky-sessionがtrueに設定されているようにしてください (デフォルトはtrueです)。このオプションを有効にすると、どちらかのクラスターのクラスターノードに対する新しいリクエストはすべてそのノードへ送信されます。/profile=full-ha/subsystem=modcluster/mod-cluster-config=configuration/:write-attribute(name=sticky-session,value=true)
- 「mod_cluster ワーカーノードの設定」 のプロセスを使用して、Cluster NEW のノードを mod_cluster 設定に 1 つずつ追加します。
- ロードバランサー (mod_cluster) を設定し、Cluster OLD の各コンテキストを停止します。Cluster OLD のコンテキストを停止 (無効ではなく) すると、各コンテキストが正常にシャットダウンします (最終的にノード全体がシャットダウンします)。既存のセッションはノードが対応しますが、新しいセッションはこれらのノードに転送されません。コンテキストの停止に数分から数時間かかることがあります。次の CLI コマンドを使用してコンテキストを停止できます。パラメーターの値をご使用の環境に適した値に置き換えてください。
[standalone@localhost:9999 subsystem=modcluster] :stop-context(context=/myapp, virtualhost=default-host, waittime=50)
JBoss Enterprise Application Platform のクラスターが正常にアップグレードされます。
16.6. Apache mod_jk
16.6.1. Apache mod_jk HTTP コネクターについて
mod_jk は互換性の目的で必要となるユーザー向けに提供される HTTP コネクターです。Apache mod_jk は JBoss Web Container に含まれる jboss-eap-native-webserver-connectors の一部で、負荷分散を実現します。サポートされるプラットフォームについては https://access.redhat.com/site/articles/111663 を参照してください。mod_jk コネクターは Apache によって維持管理され、ドキュメントは http://tomcat.apache.org/connectors-doc/ にあります。
mod_cluster HTTP コネクターとは異なり、Apache プロキシサーバーはサーバーまたはサーバーグループ上のデプロイメントの状態を認識しないため、状況に応じてワークを送信する環境に対応できません。
mod_jk は mod_cluster と同様に AJP 1.3 プロトコル上で通信します。
注記
mod_cluster は mod_jk よりも進歩したロードバランサーです。 mod_cluster は mod_jk の全機能と多くの追加機能を提供します。mod_cluster の詳細は 「mod_cluster HTTP コネクターについて」 を参照してください。
次の手順: JBoss Enterprise Application Platform を設定し mod_jk ロードバランシンググループに参加します。
16.6.2. JBoss Enterprise Application Platform が Apache Mod_jk と通信するよう設定
mod_jk HTTP コネクターには、HTTPD によりロードされる単一のコンポーネント mod_jk.so モジュールがあります。このモジュールは、クライアント要求を受け取り、コンテナー (この場合は JBoss Enterprise Application Platform) に転送します。また、これらの要求を受け取り、返信を HTTPD に送信するよう JBoss Enterprise Application Platform を設定する必要があります。
- 管理対象ドメインでは、
haおよびfull-haプロファイル、haまたはfull-haソケットバインディンググループを使用するサーバーグループ。other-server-groupサーバーグループはデフォルトのインストールで正しく設定されます。 - スタンドアロンサーバーでは、クラスター化された設定に
standalone-haプロファイルが提供されます。このプロファイルでスタンドアロンサーバーを起動するには、EAP_HOME/ディレクトリより以下のコマンドを実行します。[user@host bin]$
./bin/standalone.sh --server-config=standalone-ha.xml
16.6.3. Apache HTTPD または JBoss Enterprise Web Server HTTPD への Mod_jk モジュールのインストール
要件
- このタスクを実行するには、サポートされる環境にインストールされた Apache HTTPD を使用するか、JBoss Enterprise Web Server にインストールされた HTTPD を使用する必要があります。JBoss Enterprise Web Server にインストールされた HTTPD は JBoss Enterprise Application Platform ディストリビューションの一部であることに注意してください。
- Apache HTTPD をインストールする必要がある場合は、https://access.redhat.com/site/documentation/ で入手可能な 『Red Hat Enterprise Linux デプロイメントガイド (Red Hat Enterprise Linux Deployment Guide)』 に記載された手順を実行します。
- JBoss Enterprise Web Server をインストールする必要がある場合は、https://access.redhat.com/site/documentation/ で入手可能な 『JBoss Enterprise Web Server インストールガイド (JBoss Enterprise Web Server Installation Guide)』 に記載された手順を実行します。
- Apache HTTPD を使用する場合は、ご使用のプラットフォーム向けの JBoss Enterprise Application Platform ネイティブコンポーネントパッケージを Red Hat カスタマーサービスポータル (https://access.redhat.com) よりダウンロードします。このパッケージには、Red Hat Enterprise Linux 向けにプリコンパイルされた mod_jk および mod_cluster バイナリーが含まれます。JBoss Enterprise Web Server を使用している場合は、すでに mod_jk のバイナリーは含まれます。
- 管理 (root) 権限を使用してログインする必要があります。
手順16.9 mod_jk モジュールのインストール
HTTPD 設定の場所を決定します。
HTTPD 設定の場所は、Red Hat Enterprise Linux の Apache HTTPD を使用しているか、JBoss Enterprise Web Server で利用可能な HTTPD を使用しているかによって異なります。以下の場所 1 つで、これ以降のタスクでは、HTTPD_HOME と呼ばれます。- Apache HTTPD -
/etc/httpd/ - RHEL 上の JBoss Enterprise Web Server HTTPD -
EWS_HOME/httpd - Solaris 上の JBoss Enterprise Web Server HTTPD -
EWS_HOME/etc/httpd - Windows 上の JBoss Enterprise Web Server HTTPD -
EWS_HOME/etc/httpd
mod_jk モジュールを設定します。
HTTPD_HOME/conf.d/mod-jk.confという名前の新しいファイルを作成し、以下の内容をそのファイルに追加します。注記
JkMountディレクティブは、Apache が mod_jk モジュールに転送する必要がある URL を指定します。ディレクティブの設定に基づいて、mod_jk は、受け取った URL を正しい Servlet コンテナーに転送します。静的なコンテンツを直接提供し、Java アプリケーションにのみロードバランサーを使用するには、URL パスが/application/*である必要があります。mod_jk をロードバランサーとして使用するには、値/*を使用してすべての URL を mod_jk に転送します。# Load mod_jk module # Specify the filename of the mod_jk lib LoadModule jk_module modules/mod_jk.so # Where to find workers.properties JkWorkersFile conf/workers.properties # Where to put jk logs JkLogFile logs/mod_jk.log # Set the jk log level [debug/error/info] JkLogLevel info # Select the log format JkLogStampFormat "[%a %b %d %H:%M:%S %Y]" # JkOptions indicates to send SSK KEY SIZE JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories # JkRequestLogFormat JkRequestLogFormat "%w %V %T" # Mount your applications # The default setting only sends Java application data to mod_jk. # Use the commented-out line to send all URLs through mod_jk. # JkMount /* loadbalancer JkMount /application/* loadbalancer # Add shared memory. # This directive is present with 1.2.10 and # later versions of mod_jk, and is needed for # for load balancing to work properly JkShmFile logs/jk.shm # Add jkstatus for managing runtime data <Location /jkstatus/> JkMount status Order deny,allow Deny from all Allow from 127.0.0.1 </Location>
値を見て、セットアップに適切であることを確認します。適切な場合は、ファイルを保存します。JKMountFile ディレクティブの指定
mod-jk.confの JKMount ディレクティブに加えて、mod_jk に転送される複数の URL パターンを含むファイルを指定できます。- 以下の内容を
HTTPD_HOME/conf/mod-jk.confファイルに追加します。# You can use external file for mount points. # It will be checked for updates each 60 seconds. # The format of the file is: /url=worker # /examples/*=loadbalancer JkMountFile conf/uriworkermap.properties
- 照合される各 URL パターンに対する行を含む
HTTPD_HOME/conf/uriworkermap.propertiesという名前の新しいファイルを作成します。以下の例は、ファイルの構文の例を示しています。# Simple worker configuration file /*=loadbalancer
HTTPD のモジュールディレクトリーへの mod_jk.so ファイルのコピー
注記
これは HTTPD のmodules/ディレクトリにmod_jk.soがない場合のみ必要となります。JBoss Enterprise Application Platform 6 のダウンロードとして含まれている Apache HTTPD サーバーを使用している場合はこの手順を省略できます。Native Web Server Connectors ZIP パッケージを展開します。オペレーティングシステムが 32 ビットの場合はEAP_HOME/modules/native/lib/httpd/modules/ディレクトリ、64 ビットの場合はEAP_HOME/modules/native/lib64/httpd/modules/ディレクトリにあるmod_jk.soファイルを見つけます。このファイルをHTTPD_HOME/modules/ディレクトリーにコピーします。
mod_jk ワーカーノードを設定します。
HTTPD_HOME/conf/workers.propertiesという名前の新しいファイルを作成します。以下の例を土台として使用し、ニーズに応じてファイルを変更します。# Define list of workers that will be used # for mapping requests worker.list=loadbalancer,status # Define Node1 # modify the host as your host IP or DNS name. worker.node1.port=8009 worker.node1.host=node1.mydomain.com worker.node1.type=ajp13 worker.node1.ping_mode=A worker.node1.lbfactor=1 # Define Node2 # modify the host as your host IP or DNS name. worker.node2.port=8009 worker.node2.host=node2.mydomain.com worker.node2.type=ajp13 worker.node2.ping_mode=A worker.node2.lbfactor=1 # Load-balancing behavior worker.loadbalancer.type=lb worker.loadbalancer.balance_workers=node1,node2 worker.loadbalancer.sticky_session=1 # Status worker for managing load balancer worker.status.type=status
workers.propertiesファイルの構文と高度な設定オプションの詳細については、「Apache Mod_jk ワーカーの設定リファレンス」を参照してください。
HTTPD を再起動します。
HTTPD の再起動方法は、Red Hat Enterprise Linux の Apache HTTPD を使用しているか、JBoss Enterprise Web Server に含まれる HTTPD を使用しているかによって異なります。以下の 2 つのいずれかの方法を選択します。Red Hat Enterprise Linux の Apache HTTPD
以下のコマンドを発行します。[root@host]#
service httpd restartJBoss Enterprise Web Server HTTPD
JBoss Enterprise Web Server は、Red Hat Enterprise Linux と Microsoft Windows Server の両方で実行されます。HTTPD の再起動方法はそれぞれ異なります。Red Hat Enterprise Linux
Red Hat Enterprise Linux では、JBoss Enterprise Web Server は HTTPD をサービスとしてインストールします。HTTPD を再起動するには、以下の 2 つのコマンドを発行します。[root@host ~]# service httpd stop [root@host ~]# service httpd start
Microsoft Windows Server
コマンドプロンプトで以下のコマンドを管理権限で発行します。C:\> net stop httpd C:\> net start httpd
Solaris
コマンドプロンプトで以下のコマンドを管理権限で発行します。/opt/jboss-ews-2.0/sbin/apachectl restart
Apache HTTPD が mod_jk ロードバランサーを使用するよう設定されます。JBoss Enterprise Application Platform が mod_jk を認識するよう設定するには、「外部 HTTPD からの要求を受け入れるように JBoss Enterprise Application Platform を設定」を参照してください。
16.6.4. Apache Mod_jk ワーカーの設定リファレンス
workers.properties ファイルは mod_jk がクライアント要求を渡すワーカーノードの動作を定義します。Red Hat Enterprise Linux では、このファイルは /etc/httpd/conf/workers.properties にあります。workers.properties ファイルは、異なるサーブレットコンテナーが存在する場所と、負荷をコンテナー全体で分散する方法を定義します。
worker.WORKER_NAME.DIRECTIVE です。WORKER_NAME はワーカーの一意な名前で、DIRECTIVE はワーカーに適用される設定になります。
ノードテンプレートは、デフォルトのノードごとの設定を指定します。ノード設定内のテンプレートを上書きできます。ノードテンプレートの例は、例16.2「workers.properties サンプルファイル」 を参照してください。
表16.11 グローバルプロパティー
| プロパティー | 説明 |
|---|---|
| worker.list | mod_jk で使用されるワーカー名のリスト。これらのワーカーは要求を受信できます。 |
表16.12 各ワーカーのプロパティー
| プロパティー | 説明 |
|---|---|
| type |
ワーカーのタイプ。デフォルトのタイプは
ajp13 です。他の可能な値は ajp14、lb、 status です。
これらディレクティブの詳細は、http://tomcat.apache.org/connectors-doc/ajp/ajpv13a.html の Apache Tomcat Connector AJP Protocol Reference を参照してください。
|
| balance_workers |
ロードバランサーが管理する必要があるワーカーノードを指定します。同じロードバランサーに対してディレクティブを複数回使用できます。ディレクティブは、カンマで区切られたワーカー名のリストから構成されます。これはワーカーごとに設定され、ノードごとには設定されません。このワーカータイプにより調整されるすべてのノードが影響を受けます。
|
| sticky_session |
同じセッションからの要求を常に同じワーカーにルーティングするかどうかを指定します。デフォルト値は
0 であり、スティッキーセションが無効になります。スティッキーセッションを有効にするには、1 に設定します。すべての要求が実際にステートレスでない限り、スティッキーセッションは通常有効にする必要があります。これは、ワーカーごとに設定され、ノードごとに設定されません。そのワーカータイプにより調整されるすべてのノードが影響を受けます。
|
表16.13 各ノードのプロパティー
| プロパティー | 説明 |
|---|---|
| host |
ワーカーのホスト名または IP アドレス。ワーカーノードは
ajp プロトコルスタックをサポートする必要があります。デフォルト値は localhost です。
|
| port |
定義されたプロトコル要求をリッスンしているリモートサーバーインスタンスのポート番号。デフォルト値は、AJP13 ワーカーのデフォルトリッスンポートである
8009 です。AJP14 ワーカーのデフォルト値は 8011 です。
|
| ping_mode |
ネットワークステータスがプローブされる接続の状態。プローブは CPing に空の AJP13 パケットを使用し、応答で CPong を期待します。ディレクティブフラグの組み合わせを使用して状態を指定します。フラグはカンマまたはスペースで区切られません。ping_mode は、
C、P、I、および A の任意の組み合わせです。
|
| ping_timeout、connect_timeout、prepost_timeout、connection_ping_interval |
上記の接続プローブ設定のタイムアウト値。値はミリ秒単位で指定され、
ping_timeout のデフォルト値は 10000 です。
|
| lbfactor |
各ワーカーの負荷分散係数を指定し、ロードバランサーのメンバーワーカーにのみ適用します。これは、より強力なサーバーにより多くの負荷を割り当てる場合に役に立ちます。ワーカーにデフォルトの 3 倍の負荷を割り当てるには、これを
3 に設定します (worker.my_worker.lbfactor=3)。
|
例16.2 workers.properties サンプルファイル
worker.list=node1, node2, node3
worker.balancer1.sticky_sessions=1
worker.balancer1.balance_workers=node1
worker.balancer2.sticky_session=1
worker.balancer2.balance_workers=node2,node3
worker.nodetemplate.type=ajp13
worker.nodetemplate.port=8009
worker.node1.template=nodetemplate
worker.node1.host=localhost
worker.node1.ping_mode=CI
worker.node1.connection_ping_interval=9000
worker.node1.lbfactor=1
worker.node2.template=nodetemplate
worker.node2.host=192.168.1.1
worker.node2.ping_mode=A
worker.node3.template=nodetemplate
worker.node3.host=192.168.1.2
16.7. Apache mod_proxy
16.7.1. Apache mod_proxy HTTP コネクターについて
mod_proxy と mod_jk の 2 つのプロキシおよび負荷分散モジュールを提供します。mod_jk の詳細については、「Apache mod_jk HTTP コネクターについて」 を参照してください。JBoss Enterprise Application Platform はこれらのいずれかの使用をサポートしますが、JBoss HTTP コネクターである mod_cluster は JBoss Enterprise Application Platform と外部 HTTPD を密接に結合するため、推奨される HTTP コネクターになります。利点と欠点を含むサポート対象 HTTP コネクターの概要については、「HTTP コネクターの概要」 を参照してください。
mod_jk とは異なり、mod_proxy は、HTTP および HTTPS プロトコルを介して接続をサポートします。これらは AJP プロトコルもサポートします。
mod_proxy は、スタンドアロンまたは負荷分散設定で指定でき、スティッキーセッションをサポートします。
mod_proxy モジュールを使用するには、JBoss Enterprise Application Platform に HTTP、 HTTPS、または AJP Web コネクターが設定されている必要があります。これは Web サブシステムの一部となります。Web サブシステムの設定については 「Web サブシステムの設定」 を参照してください。
16.7.2. Apache HTTPD への Mod_proxy HTTP コネクターのインストール
mod_proxy は、Apache により提供される負荷分散モジュールです。このタスクは、基本的な設定を提供します。高度な設定または詳細については、Apache の mod_proxy ドキュメンテーション (https://httpd.apache.org/docs/2.2/mod/mod_proxy.html) を参照してください。JBoss Enterprise Application Platform の観点からの mod_proxy の詳細については、「Apache mod_proxy HTTP コネクターについて」と「HTTP コネクターの概要」を参照してください。
要件
- JBoss Enterprise Web Server HTTPD または Apache HTTPD のどちらかをインストールする必要があります。スタンドアロン HTTPD は、Red Hat カスタマーポータル (https://access.redhat.com) の JBoss Enterprise Application Platform 6 のダウンロードエリアより個別にダウンロードします。 スタンドアロン HTTPD を使用したい場合は 「JBoss Enterprise Application Platform 6 に含まれる Apache HTTPD のインストール」 の詳細情報を参照してください。
mod_proxyモジュールをインストールする必要があります。Apache HTTPD は、通常、すでに同梱されているmod_proxyモジュールで提供されます (Red Hat Enterprise Linux と JBoss Enterprise Web Server に含まれる HTTPD の場合)。- HTTPD 設定を変更するには、
rootまたは管理者権限が必要です。 - HTTPD 設定ディレクトリーを決定します。これは、Apache HTTPD 用の
conf/およびmodules/ディレクトリーを含むディレクトリーです。これはHTTPD_CONFと示されます。通常の値は以下のとおりです。/etc/httpd/EWS_HOME/httpd/(JBoss Enterprise Web Server がインストールされた場所から起動されます)
- ここで使用する例では JBoss Enterprise Application Platform が HTTP または HTTPS Web コネクターで設定されていることを仮定しています。Web サブシステムの設定については 「Web サブシステムの設定」 を参照してください。
HTTPD での
mod_proxyモジュールの有効化HTTPD_CONF/conf/httpd.confファイルで次の行を探します。これらの行が存在しない場合は、行を最下部に追加します。これらの行が存在し、行がコメント (#) 文字始まる場合は、この文字を削除します。後でファイルを保存します。通常は、モジュールはすでに存在し、有効になります。LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_balancer_module modules/mod_proxy_balancer.so LoadModule proxy_http_module modules/mod_proxy_http.so # Uncomment these to proxy FTP or HTTPS #LoadModule proxy_ftp_module modules/mod_proxy_ftp.so #LoadModule proxy_connect_module modules/mod_proxy_connect.so
非負荷分散プロキシーを追加します。
以下の設定を、他の<VirtualHost>ディレクトリーの直下にあるHTTPD_CONF/conf/httpd.confファイルに追加します。値をセットアップに適切な値に置き換えます。この例では、仮想ホストを使用します。デフォルトの HTTPD 設定を使用するには、次の手順を参照してください。<VirtualHost *:80> # Your domain name ServerName Domain_NAME_HERE ProxyPreserveHost On # The IP and port of the JBoss Enterprise Application Platform # These represent the default values, if your HTTPD is on the same host # as your JBoss Enterprise Application Platform managed domain or server ProxyPass / http://localhost:8080/ ProxyPassReverse / http://localhost:8080/ # The location of the HTML files, and access control information DocumentRoot /var/www <Directory /var/www> Options -Indexes Order allow,deny Allow from all </Directory> </VirtualHost>
変更後に、ファイルを保存します。負荷分散プロキシーを追加します。
mod_proxyをロードバランサーとして使用し、複数の JBoss Enterprise Application Platform サーバーにワークを送信するには、以下の設定をHTTPD_CONF/conf/httpd.confファイルに追加します。<Proxy balancer://mycluster> Order deny,allow Allow from all # Add each JBoss Enterprise Application Server by IP address and port. # If the route values are unique like this, one node will not fail over to the other. BalancerMember http://10.16.92.99:8080 route=node1 BalancerMember http://10.16.92.100:8180 route=node2 </Proxy> <VirtualHost *:80> # Your domain name ServerName YOUR_DOMAIN_NAME ProxyPreserveHost On ProxyPass / balancer://mycluster/ # The location of the HTML files, and access control information DocumentRoot /var/www <Directory /var/www> Options -Indexes Order allow,deny Allow from all </Directory> </VirtualHost>
上記の例では、すべて HTTP プロトコルを使用して通信します。 適切なmod_proxyモジュールをロードする場合は、AJP または HTTPS プロトコルを代わりに使用できます。詳細については、Apache のmod_proxyドキュメンテーション (http://httpd.apache.org/docs/2.2/mod/mod_proxy.html) を参照してください。スティッキーセッションを有効にします。
スティッキーセッションを使用すると、クライアント要求が特定の JBoss Enterprise Application Platform ノードに送信された場合に、ノードが利用不可にならない限り、すべての将来の要求が同じノードに送信されます。これは、ほとんどの場合で正しい動作です。mod_proxyのスティッキーセッションを有効にするには、stickysessionパラメーターをProxyPassステートメントに追加します。この例では、使用できる他のいくつかのパラメーターも示されます。詳細については、Apache のmod_proxyドキュメンテーション (http://httpd.apache.org/docs/2.2/mod/mod_proxy.html) を参照してください。ProxyPass /MyApp balancer://mycluster stickysession=JSESSIONID lbmethod=bytraffic nofailover=Off
HTTPD を再起動します。
HTTPD サーバーを再起動して変更を反映します。
標準または負荷分散設定で mod_proxy を使用してクライアント要求を JBoss Enterprise Application Platform サーバーまたはクラスターに送信するよう HTTPD が設定されます。JBoss Enterprise Application Platform がこれらの要求に応答するよう設定するには、「外部 HTTPD からの要求を受け入れるように JBoss Enterprise Application Platform を設定」 を参照してください。
16.8. Microsoft ISAPI
16.8.1. インターネットサーバー API (ISAPI) HTTP コネクターについて
16.8.2. Microsoft IIS が ISAPI リダイレクターを使用するよう設定
要件
- 必ずサポートされるオペレーティングシステムを使用し、IIS サーバーをインストールしてください。サポートされる設定の一覧は https://access.redhat.com/site/articles/111663 を参照してください。
- Microsoft Windows 向けの JBoss ネイティブコンポーネントパッケージをカスタマーサポートポータル (https://access.redhat.com) からダウンロードします。ダウンロード 、JBoss Enterprise Middleware、Application Platform の順に移動します。
i386またはx86_64を選択します。ファイルを解凍します。このファイルにはjboss-eap-6.0/modules/native/sbin/ディレクトリの ISAPI リダイレクト DLL が含まれます。ネイティブコンポーネント zip ファイルを展開し、sbin\ディレクトリの内容をサーバー上にコピーします。残りのタスクではC:\connectors\の使用を前提にします。
手順16.10 IIS マネージャー (IIS 7) を使用した IIS リダイレクターの設定
- Start → Run をクリックし、
inetmgrと入力して、IIS マネージャーを開きます。 - 左側のツリービューペインで、IIS 7 を展開します。
- ISAPI and CGI Registrations をダブルクリックして新しいウィンドウで開きます。
- Actions ペインで、Add をクリックします。Add ISAPI or CGI Restriction ウィンドウが開きます。
- 以下の値を指定します。
- ISAPI or CGI Path:
c:\connectors\sbin\isapi_redirect.dll - Description:
jboss - Allow extension path to execute: チェックボックスを選択します。
- OK をクリックして Add ISAPI or CGI Restriction ウィンドウを閉じます。
JBoss ネイティブ仮想ディレクトリーを開く
- Default Web Site を右クリックし、Add Virtual Directory をクリックします。Add Virtual Directory ウィンドウが開きます。
- 以下の値を指定して仮想ディレクトリーを追加します。
- Alias:
jboss - Physical Path:
C:\connectors\
- OK をクリックして値を保存し、Add Virtual Directory ウィンドウを閉じます。
JBoss ネイティブ ISAPI リダイレクトフィルター
- ツリービューペインで、Sites → Default Web Site を展開します。
- ISAPI Filters ダブルクリックします。ISAPI Filters Features ビューが表示されます。
- Actions ペインで、Add をクリックします。Add ISAPI Filter ウィンドウが表示されます。
- Add ISAPI Filter ウィンドウで以下の値を指定します。
- Filter name:
jboss - Executable:
C:\connectors\sbin\isapi_redirect.dll
- OK をクリックして値を保存し、Add ISAPI Filters ウィンドウを閉じます。
ISAPI-dll ハンドラーを有効にする
- ツリービューペインで、IIS 7 アイテムをダブルクリックします。IIS 7 Home Features View が開きます。
- Handler Mappings をダブルクリックします。Handler Mappings Features View が表示されます。
- Group by コンボボックスで、State を選択します。Handler Mappings が Enabled and Disabled Groups に表示されます。
- ISAPI-dll を見つけます。Disabled グループにある場合は、右クリックし、Edit Feature Permissions を選択します。
- 以下のパーミッションを有効にします。
- 読み取り
- スクリプト
- 実行
- OK をクリックして値を保存し、Edit Feature Permissions ウィンドウを閉じます。
Microsoft IIS が ISAPI リダイレクターを使用するよう設定されます。次に、「外部 HTTPD からの要求を受け入れるように JBoss Enterprise Application Platform を設定」 を行った後、「ISAPI リダイレクターがクライアント要求を JBoss Enterprise Application Platform に送信するよう設定する」、または 「ISAPI がクライアント要求を複数の JBoss Enterprise Application Platform サーバーで分散するよう設定」 へ進んでください。
16.8.3. ISAPI リダイレクターがクライアント要求を JBoss Enterprise Application Platform に送信するよう設定する
このタスクでは、JBoss Enterprise Application Platform サーバーのグループが ISAPI リダイレクターから要求を受け入れるよう設定します。負荷分散または高可用性フェイルオーバーの設定は含まれません。これらの機能が必要な場合は、「ISAPI がクライアント要求を複数の JBoss Enterprise Application Platform サーバーで分散するよう設定」を参照してください。
要件
- IIS サーバーへの完全な管理者アクセスが必要です。
手順16.11 プロパティーファイルの編集およびリダイレクトの設定
ログ、プロパティーファイル、およびロックファイルを格納するディレクトリーを作成します。
この手順の残りでは、この目的のためにディレクトリーC:\connectors\を使用していることを前提とします。異なるディレクトリーを使用する場合は、適切に手順を変更してください。isapi_redirect.propertiesファイルを作成します。C:\connectors\isapi_redirect.propertiesとい新しいファイルを作成します。このファイルに次の内容をコピーします。# Configuration file for the ISAPI Redirector # Extension uri definition extension_uri=c:\connectors\isapi_redirect.dll # Full path to the log file for the ISAPI Redirector log_file=c:\connectors\isapi_redirect.log # Log level (debug, info, warn, error or trace) # Use debug only testing phase, for production switch to info log_level=debug # Full path to the workers.properties file worker_file=c:\connectors\workers.properties # Full path to the uriworkermap.properties file worker_mount_file=c:\connectors\uriworkermap.properties #Full path to the rewrite.properties file rewrite_rule_file=c:\connectors\rewrite.properties
uriworkermap.propertiesファイルを作成します。uriworkermap.propertiesファイルには、デプロイされたアプリケーション URL と、それらへの要求を処理するワーカー間のマッピングが含まれます。以下のサンプルファイルはファイルの構文を示しています。uriworkermap.propertiesファイルをC:\connectors\に格納してください。# images and css files for path /status are provided by worker01 /status=worker01 /images/*=worker01 /css/*=worker01 # Path /web-console is provided by worker02 # IIS (customized) error page is used for http errors with number greater or equal to 400 # css files are provided by worker01 /web-console/*=worker02;use_server_errors=400 /web-console/css/*=worker01 # Example of exclusion from mapping, logo.gif won't be displayed # !/web-console/images/logo.gif=* # Requests to /app-01 or /app-01/something will be routed to worker01 /app-01|/*=worker01 # Requests to /app-02 or /app-02/something will be routed to worker02 /app-02|/*=worker02
workers.propertiesファイルを作成します。workers.propertiesファイルには、ワーカーラベルとサーバーインスタンス間のマッピング定義が含まれます。以下のサンプルファイルはファイルの構文を示しています。このファイルをC:\connectors\ディレクトリーに格納してください。# An entry that lists all the workers defined worker.list=worker01, worker02 # Entries that define the host and port associated with these workers # First JBoss Enterprise Application Platform server definition, port 8009 is standard port for AJP in EAP worker.worker01.host=127.0.0.1 worker.worker01.port=8009 worker.worker01.type=ajp13 # Second JBoss Enterprise Application Platform server definition worker.worker02.host= 127.0.0.100 worker.worker02.port=8009 worker.worker02.type=ajp13
rewrite.propertiesファイルを作成します。rewrite.propertiesファイルには、特定のアプリケーションの単純な URL 書き換えルールが含まれます。以下の例で示されているように、書き換えられたパスは名前と値のペアを使用して指定されます。このファイルをC:\connectors\ディレクトリーに格納してください。#Simple example # Images are accessible under abc path /app-01/abc/=/app-01/images/
IIS サーバーを再起動します。
net stopおよびnet startコマンドを使用して IIS サーバーを再起動します。C:\> net stop was /Y C:\> net start w3svc
アプリケーションごとに、設定した特定の JBoss Enterprise Application Platform サーバーにクライアント要求を送信するよう IIS サーバーが設定されます。
16.8.4. ISAPI がクライアント要求を複数の JBoss Enterprise Application Platform サーバーで分散するよう設定
この設定により、クライアント要求は指定した JBoss Enterprise Application Platform サーバーで分散されます。クライアント要求を、デプロイメントごとに、特定の JBoss Enterprise Application Platform サーバーに送信する場合は、「ISAPI リダイレクターがクライアント要求を JBoss Enterprise Application Platform に送信するよう設定する」 を参照してください。
要件
- IIS サーバーへの完全な管理者アクセス。
手順16.12 複数のサーバー間でクライアント要求を分散する
ログ、プロパティーファイル、およびロックファイルを格納するディレクトリーを作成します。
この手順の残りでは、この目的のためにディレクトリーC:\connectors\を使用していることを前提とします。異なるディレクトリーを使用する場合は、適切に手順を変更してください。isapi_redirect.propertiesファイルを作成します。C:\connectors\isapi_redirect.propertiesとい新しいファイルを作成します。このファイルに次の内容をコピーします。# Configuration file for the ISAPI Redirector # Extension uri definition extension_uri=C:\connectors\isapi_redirect.dll # Full path to the log file for the ISAPI Redirector log_file==c:\connectors\isapi_redirect.log # Log level (debug, info, warn, error or trace) # Use debug only testing phase, for production switch to info log_level=debug # Full path to the workers.properties file worker_file=c:\connectors\workers.properties # Full path to the uriworkermap.properties file worker_mount_file=c:\connectors\uriworkermap.properties #OPTIONAL: Full path to the rewrite.properties file rewrite_rule_file=c:\connectors\rewrite.properties
uriworkermap.propertiesファイルを作成します。uriworkermap.propertiesファイルには、デプロイされたアプリケーション URL と、それらへの要求を処理するワーカー間のマッピングが含まれます。以下のサンプルファイルは負荷分散が設定されたファイルの構文を示しています。ワイルドカード (*) 文字はさまざまな URL サブディレクトリーのすべての要求をrouterという名前のロードバランサーに送信します。ロードバランサーの設定については、ステップ 4 を参照してください。uriworkermap.propertiesファイルをC:\connectors\に格納してください。# images, css files, path /status and /web-console will be # provided by nodes defined in the load-balancer called "router" /css/*=router /images/*=router /status=router /web-console|/*=router # Example of exclusion from mapping, logo.gif won't be displayed !/web-console/images/logo.gif=* # Requests to /app-01 and /app-02 will be routed to nodes defined # in the load-balancer called "router" /app-01|/*=router /app-02|/*=router # mapping for management console, nodes in cluster can be enabled or disabled here /jkmanager|/*=status
workers.propertiesファイルを作成します。workers.propertiesファイルには、ワーカーラベルとサーバーインスタンス間のマッピング定義が含まれます。以下のサンプルファイルはファイルの構文を示しています。ロードバランサーは、ファイルの最後で設定され、ワーカーworker01およびworker02から構成されます。workers.propertiesファイルは Apache mod_jk 設定に使用されるのと同じファイルの構文に従います。workers.propertiesファイルの構文の詳細については、「Apache Mod_jk ワーカーの設定リファレンス」を参照してください。このファイルをC:\connectors\ディレクトリーに格納してください。# The advanced router LB worker worker.list=router,status # First EAP server definition, port 8009 is standard port for AJP in EAP # # lbfactor defines how much the worker will be used. # The higher the number, the more requests are served # lbfactor is useful when one machine is more powerful # ping_mode=A – all possible probes will be used to determine that # connections are still working worker.worker01.port=8009 worker.worker01.host=127.0.0.1 worker.worker01.type=ajp13 worker.worker01.ping_mode=A worker.worker01.socket_timeout=10 worker.worker01.lbfactor=3 # Second EAP server definition worker.worker02.port=8009 worker.worker02.host= 127.0.0.100 worker.worker02.type=ajp13 worker.worker02.ping_mode=A worker.worker02.socket_timeout=10 worker.worker02.lbfactor=1 # Define the LB worker worker.router.type=lb worker.router.balance_workers=worker01,worker02 # Define the status worker for jkmanager worker.status.type=status
rewrite.propertiesファイルを作成します。rewrite.propertiesファイルには、特定のアプリケーションの単純な URL 書き換えルールが含まれます。以下の例で示されているように、書き換えられたパスは名前と値のペアを使用して指定されます。このファイルをC:\connectors\ディレクトリーに格納してください。#Simple example # Images are accessible under abc path /app-01/abc/=/app-01/images/
IIS サーバーを再起動します。
net stopおよびnet startコマンドを使用して IIS サーバーを再起動します。C:\> net stop was /Y C:\> net start w3svc
IIS サーバーが、workers.properties ファイルに記述された JBoss Enterprise Application Platform サーバーにクライアント要求を送信し、サーバー間で負荷を均等に分散するよう設定されます。
16.9. Oracle NSAPI
16.9.1. Netscape Server API (NSAPI) HTTP コネクターについて
16.9.2. Oracle Solaris で NSAPI コネクターを設定
NSAPI コネクターは、Oracle iPlanet Web Server 内で実行されるモジュールです。
要件
- サーバーが、32 ビットまたは 64 ビットアーキテクチャーで Oracle Solaris 10 以上を実行している必要があります。
- NSAPI コネクターを除き、Oracle iPlanet Web Server 6.1 SP 12 または 7.0 U8 がインストールおよび設定されている必要があります。
- JBoss Enterprise Application Platform が、ワーカーノードとして動作する各サーバーでインストールおよび設定されている必要があります。「外部 HTTPD からの要求を受け入れるように JBoss Enterprise Application Platform を設定」 を参照してください。
- JBoss ネイティブコンポーネント ZIP パッケージをカスタマーサービスポータル (https://access.redhat.com) からダウンロードする必要があります。
手順16.13 NSAPI コネクターの抽出および設定
JBoss ネイティブコンポーネントパッケージを抽出します。
残りの手順では、ネイティブコンポーネントパッケージが/opt/oracle/webserver7/config/のconnectors/という名前のディレクトリに抽出されます。この手順の残りでは、このディレクトリは IPLANET_CONFIG と呼ばれます。Oracle iPlanet 設定ディレクトリーが異なる場合、または Oracle iPlanet Web Server 6 を実行している場合は、適切に手順を実行します。サーブレットマッピングを無効にします。
IPLANET_CONFIG/default.web.xmlファイルを開き、Built In Server Mappingsという見出しのセクションを見つけます。次の 3 つのサーブレットを XML コメント文字 (<!--および-->) で囲み、これらのサーブレットへのマッピングを無効にします。- デフォルト
- 呼び出し元
- jsp
以下の設定例は、無効にされたマッピングを示しています。<!-- ============== Built In Servlet Mappings =============== --> <!-- The servlet mappings for the built in servlets defined above. --> <!-- The mapping for the default servlet --> <!--servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping--> <!-- The mapping for the invoker servlet --> <!--servlet-mapping> <servlet-name>invoker</servlet-name> <url-pattern>/servlet/*</url-pattern> </servlet-mapping--> <!-- The mapping for the JSP servlet --> <!--servlet-mapping> <servlet-name>jsp</servlet-name> <url-pattern>*.jsp</url-pattern> </servlet-mapping-->
ファイルを保存し、終了します。iPlanet Web Server が NSAPI コネクターモジュールをロードするよう設定します。
IPLANET_CONFIG/magnus.confファイルの最後に次の行を追加し、お使いの設定に合うようファイルパスを変更します。これらの行は、nsapi_redirector.soモジュールと、ワーカーノードとプロパティーがリストされたworkers.propertiesファイルの場所を定義します。Init fn="load-modules" funcs="jk_init,jk_service" shlib="IPLANET_CONFIG/connectors/lib/nsapi_redirector.so" shlib_flags="(global|now)" Init fn="jk_init" worker_file="IPLANET_CONFIG/connectors/workers.properties" log_level="debug" log_file="IPLANET_CONFIG/config/connectors/nsapi.log" shm_file="IPLANET_CONFIG/conf/connectors/jk_shm"
上記の設定は 32 ビットアーキテクチャー向けです。64 ビット Solaris を使用している場合は、文字列lib/nsapi_redirector.soをlib64/nsapi_redirector.soに変更します。ファイルを保存し、終了します。NSAPI コネクターを設定します。
NSAPI コネクターに対して、基本的な設定 (負荷分散なし) を行えます。以下のいずれかのオプションを選択します。その後で設定は完了します。
16.9.3. NSAPI を基本的な HTTP コネクターとして設定する
このタスクでは、NSAPI コネクターが負荷分散またはフェールオーバーなしでクライアント要求を JBoss Enterprise Application Platform サーバーにリダイレクトするよう設定します。リダイレクトは、デプロイメントごとに (つまり、URL ごとに) 行われます。負荷分散設定については、「NSAPI を負荷分散クラスターとして設定」を参照してください。
要件
- 現在のタスクを続行する前に、「Oracle Solaris で NSAPI コネクターを設定」を完了する必要があります。
手順16.14 基本的な HTTP コネクターの設定
JBoss Enterprise Application Platform サーバーにリダイレクトする URL パスを定義します。
注記
IPLANET_CONFIG/obj.confでは、前の行から継続する行以外は、行の最初にスペースを挿入してはいけません。IPLANET_CONFIG/obj.confファイルを編集します。<Object name="default">で始まるセクションを見つけ、一致する各 URL パターンを次のサンプルファイルで示された形式で追加します。文字列jknsapiは、次の手順で定義される HTTP コネクターを示します。例は、ワイルドカードを使用したパターン一致を示しています。<Object name="default"> [...] NameTrans fn="assign-name" from="/status" name="jknsapi" NameTrans fn="assign-name" from="/images(|/*)" name="jknsapi" NameTrans fn="assign-name" from="/css(|/*)" name="jknsapi" NameTrans fn="assign-name" from="/nc(|/*)" name="jknsapi" NameTrans fn="assign-name" from="/jmx-console(|/*)" name="jknsapi" </Object>
各パスを提供するワーカーを定義します。
IPLANET_CONFIG/obj.confファイルの編集を続行します。編集したセクションの終了タグのすぐ後に次を追加します:</Object>。<Object name="jknsapi"> ObjectType fn=force-type type=text/plain Service fn="jk_service" worker="worker01" path="/status" Service fn="jk_service" worker="worker02" path="/nc(/*)" Service fn="jk_service" worker="worker01" </Object>
上記の例は、URL パス/statusを、worker01という名前のワーカーにリダイレクトし、/nc/以下のすべての URL パスを、worker02という名前のワーカーにリダイレクトします。3 番目の行は、前の行で一致しないjknsapiオブジェクトに割り当てられたすべての URL がworker01に提供されることを示しています。ファイルを保存し、終了します。ワーカーとその属性を定義します。
ディレクトリーに、IPLANET_CONFIG/connectors/workers.propertiesという名前のファイルを作成します。以下の内容をそのファイルにペーストし、お使いの環境に合わせて変更します。# An entry that lists all the workers defined worker.list=worker01, worker02 # Entries that define the host and port associated with these workers worker.worker01.host=127.0.0.1 worker.worker01.port=8009 worker.worker01.type=ajp13 worker.worker02.host=127.0.0.100 worker.worker02.port=8009 worker.worker02.type=ajp13
workers.propertiesファイルは、Apache mod_jk と同じ構文を使用します。利用可能なオプションについては、「Apache Mod_jk ワーカーの設定リファレンス」を参照してください。ファイルを保存し、終了します。iPlanet Web Server を再起動します。
iPlanet Web Server 6.1 または 7.0 のいずれかを実行するかに応じて、次のいずれかの手順を選択します。iPlanet Web Server 6.1
IPLANET_CONFIG/../stop IPLANET_CONFIG/../start
iPlanet Web Server 7.0
IPLANET_CONFIG/../bin/stopserv IPLANET_CONFIG/../bin/startserv
iPlanet Web Server が、設定した URL へのクライアント要求を JBoss Enterprise Application Platform のデプロイメントに送信します。
16.9.4. NSAPI を負荷分散クラスターとして設定
このタスクでは、NSAPI コネクターが負荷分散設定でクライアント要求を JBoss Enterprise Application Platform サーバーにリダイレクトするよう設定します。NSAPI を負荷分散なしの単純な HTTP コネクターとして使用するには、「NSAPI を基本的な HTTP コネクターとして設定する」 参照してください。
要件
- 現在のタスクを続行する前に、「Oracle Solaris で NSAPI コネクターを設定」 を完了する必要があります。
手順16.15 負荷分散のためコネクターを設定する
JBoss Enterprise Application Platform サーバーにリダイレクトする URL パスを定義します。
注記
IPLANET_CONFIG/obj.confでは、前の行から継続する行以外は、行の最初にスペースを挿入してはいけません。IPLANET_CONFIG/obj.confファイルを編集します。<Object name="default">で始まるセクションを見つけ、一致する各 URL パターンを次のサンプルファイルで示された形式で追加します。文字列jknsapiは、次の手順で定義される HTTP コネクターを示します。例は、ワイルドカードを使用したパターン一致を示しています。<Object name="default"> [...] NameTrans fn="assign-name" from="/status" name="jknsapi" NameTrans fn="assign-name" from="/images(|/*)" name="jknsapi" NameTrans fn="assign-name" from="/css(|/*)" name="jknsapi" NameTrans fn="assign-name" from="/nc(|/*)" name="jknsapi" NameTrans fn="assign-name" from="/jmx-console(|/*)" name="jknsapi" NameTrans fn="assign-name" from="/jkmanager/*" name="jknsapi" </Object>
各パスを提供するワーカーを定義します。
IPLANET_CONFIG/obj.confファイルの編集を続行します。前の手順で変更したセクションの終了タグ (</Object>) のすぐ後に、以下の新しいセクションを追加し、ニーズに合わせて変更します。<Object name="jknsapi"> ObjectType fn=force-type type=text/plain Service fn="jk_service" worker="status" path="/jkmanager(/*)" Service fn="jk_service" worker="router" </Object>
このjksnapiオブジェクトは、defaultオブジェクトのname="jksnapi"マッピングにマッピングされた各パスを提供するために使用されるワーカーノードを定義します。/jkmanager/*に一致する URL 以外のすべてが、routerという名前のワーカーにリダイレクトされます。ワーカーとその属性を定義します。
workers.propertiesという名前のファイルをで作成します。以下の内容をファイルに貼り付け、お使いの環境に合わせて変更します。IPLANET_CONFIG/conf/connector/# The advanced router LB worker # A list of each worker worker.list=router,status # First JBoss Enterprise Application Platform server # (worker node) definition. # Port 8009 is the standard port for AJP # worker.worker01.port=8009 worker.worker01.host=127.0.0.1 worker.worker01.type=ajp13 worker.worker01.ping_mode=A worker.worker01.socket_timeout=10 worker.worker01.lbfactor=3 # Second JBoss Enterprise Application Platform server worker.worker02.port=8009 worker.worker02.host=127.0.0.100 worker.worker02.type=ajp13 worker.worker02.ping_mode=A worker.worker02.socket_timeout=10 worker.worker02.lbfactor=1 # Define the load-balancer called "router" worker.router.type=lb worker.router.balance_workers=worker01,worker02 # Define the status worker worker.status.type=status
workers.propertiesファイルは、Apache mod_jk と同じ構文を使用します。利用可能なオプションについては、「Apache Mod_jk ワーカーの設定リファレンス」を参照してください。ファイルを保存し、終了します。iPlanet Web Server を再起動します。
iPlanet Web Server 6.1 または 7.0 のいずれかを実行するかに応じて、次のいずれかの手順を選択します。iPlanet Web Server 6.1
IPLANET_CONFIG/../stop IPLANET_CONFIG/../start
iPlanet Web Server 7.0
IPLANET_CONFIG/../bin/stopserv IPLANET_CONFIG/../bin/startserv
iPlanet Web Server は、設定した URL パターンを負荷分散設定の JBoss Enterprise Application Platform サーバーにリダイレクトします。
第17章 メッセージング
17.1. はじめに
17.1.1. HornetQ
17.1.2. Java Messaging Service (JMS) について
17.1.3. サポートされているメッセージ形式
- Message Queue パターン
- Message Queue パターンでは、メッセージをキューに送信する必要があります。メッセージがキューに入ると、通常は永続化されて、配信が保証されます。キューを通過したメッセージは、メッセージングシステムによりメッセージコンシューマーに配信されます。 メッセージが処理されると、メッセージコンシューマーはメッセージが配信されたことを確認応答します。Message Queue パターンでは、ポイントツーポイントメッセージングと併用すると、複数のコンシューマーをキューに入れることが可能ですが、各メッセージは単一のコンシューマーのみが受信可能となります。
- Publish-Subscribe パターン
- Publish-Subscribe パターンでは、サーバー上の単一のエンティティに対して複数の送信者がメッセージを送信することが可能です。このエンティティは、「トピック」として広く知られています。各トピックには、複数のコンシューマーが参加することが可能です。これは、「サブスクリプション」として知られています。各サブスクリプションは、トピックによって送信された全メッセージのコピーを受信します。これは、各メッセージを消費するのが単一のコンシューマーのみである Message Queue パターンとは異なります。永続的なサブスクリプションは、トピックに送信された各メッセージをサブスクライバーが消費するまで、そのコピーを保持します。このようなコピーは、サーバーの再起動時にも維持されます。非永続的なサブスクリプションは、そのサブスクリプションを作成した接続が有効な間のみ継続します。
17.2. アクセプターおよびコネクターについて
アクセプターおよびコネクター
Acceptor- アクセプターは、HornetQ サーバーが受け入れる接続タイプを定義します。
Connector- コネクターは、HornetQ サーバーに接続する方法を定義し、HornetQ クライアントによって使用されます。
Invm および Netty
Invm- Invm は、Intra Virtual Machine の略語であり、クライアントとサーバーが同じ JVM で実行されているときに使用できます。
Netty- JBoss プロジェクトの名前。クライアントとサーバーが異なる JVM で実行されている場合に使用する必要があります。
standalone.xml と domain.xml で設定されます。これらは、管理コンソールまたは管理 CLI のいずれかを使用して定義できます。
例17.1 デフォルトのアクセプターおよびコネクター設定の例
<connectors>
<netty-connector name="netty" socket-binding="messaging"/>
<netty-connector name="netty-throughput" socket-binding="messaging-throughput">
<param key="batch-delay" value="50"/>
</netty-connector>
<in-vm-connector name="in-vm" server-id="0"/>
</connectors>
<acceptors>
<netty-acceptor name="netty" socket-binding="messaging"/>
<netty-acceptor name="netty-throughput" socket-binding="messaging-throughput">
<param key="batch-delay" value="50"/>
<param key="direct-deliver" value="false"/>
</netty-acceptor>
<in-vm-acceptor name="in-vm" server-id="0"/>
</acceptors>
17.3. ブリッジについて
17.4. Java Naming and Directory Interface (JNDI) について
17.5. 大規模なメッセージの処理
17.6. 設定
17.6.1. JMS サーバーの設定
EAP_HOME/domain/configuration/domain.xml ファイル、またはスタンドアロンの EAP_HOME/standalone/configuration/standalone.xml ファイルに含まれています。
<subsystem xmlns="urn:jboss:domain:messaging:1.2"> 要素には、すべての JMS 設定が含まれています。JNDI に必要な JMS の ConnectionFactory、Queue、または Topic インスタンスを追加します。
JBoss Enterprise Application Platform で JMS サブシステムを有効にします。
<extensions>要素に、以下の行が存在し、コメントアウトされていないことを確認します。<extension module="org.jboss.as.messaging"/>
基本の JMS サブシステムを追加します。
メッセージングサブシステムが設定ファイルに存在しない場合は、追加します。- 使用するプロファイルに該当する
<profile>を探し、<subsystems>タグを見つけます。 <subsystems>タグのすぐ下に新しい行を追加します。以下をその行に貼り付けます。<subsystem xmlns="urn:jboss:domain:messaging:1.2"> </subsystem>
その他の設定はすべて、その上の空いている行に追加します。
JMS の基本設定を追加します。
<journal-file-size>102400</journal-file-size> <journal-min-files>2</journal-min-files> <journal-type>NIO</journal-type> <!-- disable messaging persistence --> <persistence-enabled>false</persistence-enabled>
要件に合わせて上記の値をカスタマイズします。警告
journal-file-sizeの値が、サーバーへ送信されたメッセージのサイズよりも大きくないと、サーバーはメッセージを格納できません。HornetQ に接続ファクトリインスタンスを追加します。
クライアントは、JMSConnectionFactoryオブジェクトを使い、サーバーへの接続を確立します。JMS 接続ファクトリオブジェクトを HornetQ に追加するには、次のように接続ファクトリごとに、単一の<jms-connection-factories>タグと<connection-factory>要素が含まれるようにします。<subsystem xmlns="urn:jboss:domain:messaging:1.2"> ... <jms-connection-factories> <connection-factory name="myConnectionFactory"> <connectors> <connector-ref connector-name="netty"/> </connectors> <entries> <entry name="/ConnectionFactory"/> </entries> </connection-factory> </jms-connection-factories> ... </subsystem>nettyコネクターを設定します。この JMS 接続ファクトリは、nettyコネクターを使用します。これは、サーバー設定ファイルにデプロイされたコネクターオブジェクトへの参照です。コネクターオブジェクトは、実際にサーバーへ接続するため使用する、トランスポートとパラメーターを定義します。nettyコネクターを設定するには、以下の設定が含まれるようにします。<subsystem xmlns="urn:jboss:domain:messaging:1.2"> ... <connectors> <netty-connector name="netty" socket-binding="messaging"/> <netty-connector name="netty-throughput" socket-binding="messaging-throughput"> <param key="batch-delay" value="50"/> </netty-connector> <in-vm-connector name="in-vm" server-id="0"/> </connectors> ... </subsystem>コネクターは、messagingおよびmessaging-throughputソケットバインディングを参照します。messagingソケットバインディングは、ポート 5445 を使用し、messaging-throughputソケットバインディングはポート 5455 を使用します。 以下のソケットバインディングが<socket-binding-groups>要素に存在するようにしてください。<socket-binding-groups> ... <socket-binding-group ... > <socket-binding name="messaging" port="5445"/> <socket-binding name="messaging-throughput" port="5455"/> ... </socket-binding-group> ... </socket-binding-groups>キューインスタンスを HornetQ への追加します。
HornetQ 向けにキューインスタンス (または JMS 宛先) を設定する方法は 4 つあります。- 管理コンソールの使用管理コンソールを使用するには、サーバーを
Message-Enabledモードで起動する必要があります。これには、-cオプションを使用し、standalone-full.xml(スタンドアロンサーバー向け) 設定ファイルの使用を強制します。たとえば、スタンドアロンモードでは以下を使用するとサーバーをメッセージ有効モードで起動できます。./standalone.sh -c standalone-full.xml
サーバーが起動したら、管理コンソールにログインし、Profile → Messaging → Destinations → default → View の順で選択します。Add ボタンをクリックし、JMS 宛先の詳細を入力します。 - 管理 CLI の使用:最初に、管理 CLI へ接続します。
bin/jboss-cli.sh --connect
次に、メッセージングサブシステムに移動します。cd /subsystem=messaging/hornetq-server=default
最後に、add 操作を実行します。以下の例の値は独自の値の置き換えてください。./jms-queue=testQueue:add(durable=false,entries=["java:jboss/exported/jms/queue/test"])
- JMS 設定ファイルの作成および deployments フォルダーへの追加最初に、JMS 設定ファイル example-jms.xml を作成します。以下のエントリーを追加し、値は独自の値に置き換えます。
<?xml version="1.0" encoding="UTF-8"?> <messaging-deployment xmlns="urn:jboss:messaging-deployment:1.0"> <hornetq-server> <jms-destinations> <jms-queue name="testQueue"> <entry name="queue/test"/> <entry name="java:jboss/exported/jms/queue/test"/> </jms-queue> <jms-topic name="testTopic"> <entry name="topic/test"/> <entry name="java:jboss/exported/jms/topic/test"/> </jms-topic> </jms-destinations> </hornetq-server> </messaging-deployment>このファイルを deployments フォルダーに保存し、デプロイメントを実行します。 - JBoss Enterprise Application Platform の設定ファイルにエントリーを追加します。standalone-full.xml を例として使用し、このファイルでメッセージングサブシステムを見つけます。
<subsystem xmlns="urn:jboss:domain:messaging:1.2">
再度、以下のエントリーを追加し、例の値は独自の値に置き換えます。これらのエントリーは </jms-connection-factories> 終了タグと </hornetq-server> 要素の間に追加する必要があります。<jms-destinations> <jms-queue name="testQueue"> <entry name="queue/test"/> <entry name="java:jboss/exported/jms/queue/test"/> </jms-queue> <jms-topic name="testTopic"> <entry name="topic/test"/> <entry name="java:jboss/exported/jms/topic/test"/> </jms-topic> </jms-destinations>
追加設定
追加設定が必要な場合はEAP_HOME/docs/schema/jboss-messaging_1_2.xsdの DTD を確認します。
17.6.2. HornetQ 向けに JNDI を設定
警告
17.6.3. JMS アドレス の設定
<address-settings> 設定要素内に存在します。
アドレスワイルドカードを使用すると単一のステートメントで複数の似たアドレスを一致させることができます。これは、システムがアスタリスク ( *) 文字を使用して 1 回の検索で複数のファイルや文字列を一致させることと似ています。以下の文字はワイルドカードステートメントでは特別な意味を持っています。
表17.1 JMX のワイルドカード構文
| 文字 | 説明 |
|---|---|
| . (ピリオド 1 つ) | ワイルドカード表現で単語の間のスペースを意味します。 |
| # (シャープまたはハッシュマーク) | ゼロ以上の単語シーケンスと一致します。 |
| * (アスタリスク) | 1 つの単語と一致します。 |
表17.2 JMS ワイルドカードの例
| 例 | 説明 |
|---|---|
| news.europe.# | news.europe、 news.europe.sport、 news.europe.politic と一致しますが、 news.usa や europe とは一致しません。
|
| news. | news.europe と一致しますが news.europe.sport とは一致しません。
|
| news.*.sport | news.europe.sport と news.usa.sport とは一致しますが、news.europe.politics とは一致しません。
|
例17.2 デフォルトアドレス設定
<address-settings>
<!--default for catch all-->
<address-setting match="#">
<dead-letter-address>jms.queue.DLQ</dead-letter-address>
<expiry-address>jms.queue.ExpiryQueue</expiry-address>
<redelivery-delay>0</redelivery-delay>
<max-size-bytes>10485760</max-size-bytes>
<address-full-policy>BLOCK</address-full-policy>
<message-counter-history-day-limit>10</message-counter-history-day-limit>
</address-setting>
</address-settings>
表17.3 JMS アドレス設定の説明
| 要素 | 説明 | デフォルト値 | タイプ |
|---|---|---|---|
address-full-policy
|
max-size-bytes が指定されたアドレスが満杯の場合に何が起こるかを決定します。
|
PAGE
|
STRING
|
dead-letter-address
|
無効なレターアドレスが指定された場合、
max-delivery-attempts 配信試行が失敗すると、メッセージが無効なレターアドレスに移動されます。それ以外の場合、これらに未配信メッセージは破棄されます。ワイルドカードは許可されます。
|
jms.queue.DLQ
|
STRING
|
expiry-address
|
有効期限が切れたアドレスが存在する場合、有効期限が切れたメッセージは破棄されるのではなく、一致するアドレスに送信されます。ワイルドカードは許可されます。
|
jms.queue.ExpiryQueue
|
STRING
|
last-value-queue
|
キューで最後の値のみを使用するかどうかを定義します。
|
false
|
BOOLEAN
|
max-delivery-attempts
| dead-letter-address に送信する前、または破棄する前にメッセージを再配信する最大試行回数。
|
10
|
INT
|
max-size-bytes
|
最大バイトサイズ。
|
10485760L
|
LONG
|
message-counter-history-day-limit
|
メッセージカウンター履歴の日数制限。
|
10
|
INT
|
page-max-cache-size
|
ページングナビゲーション中に IO を最適化するためにメモリー内に保持するページファイルの数。
|
5
|
INT
|
page-size-bytes
|
ページングサイズ。
|
5
|
INT
|
redelivery-delay
|
メッセージの再配信試行間の遅延時間 (ミリ秒単位)。
0 に設定された場合は、再配信が無限に試行されます。
|
0L
|
LONG
|
redistribution-delay
|
メッセージを再配信する前に最後のコンシューマーがキューで閉じられたときの待機時間を定義します。
|
-1L
|
LONG
|
send-to-dla-on-no-route
|
キューにルーティングされず、そのアドレスに指定された無効なレターアドレス (DLA) に送信されたメッセージの条件を設定するアドレスのパラメーター。
|
false
|
BOOLEAN
|
アドレス設定とパターン属性の設定
管理 CLI または管理コンソールを選択して、必要に応じてパターン属性を設定します。管理 CLI を使用したアドレス設定
管理 CLI を使用してアドレスを設定します。新しいパターンの追加
add操作を使用して、新しいアドレス設定を作成します (必要な場合)。このコマンドは、管理 CLI セッションのルートから実行できます。この場合、以下の例では、 patternname というタイトルの新しいパターンが作成され、max-delivery-attempts属性が 5 として宣言されます。fullプロファイルのスタンドアロンと管理対象ドメインの編集の例が示されます。[domain@localhost:9999 /] /profile=full/subsystem=messaging/hornetq-server=default/address-setting=patternname/:add(max-delivery-attempts=5)
[standalone@localhost:9999 /] /subsystem=messaging/hornetq-server=default/address-setting=patternname/:add(max-delivery-attempts=5)
パターン属性の編集
write操作を使用して新しい値を属性に書き込みます。タブ補完を使用して、入力するコマンド文字列を補完したり、利用可能な属性を公開したりできます。以下の例は、max-delivery-attempts値を 10 に更新します。[domain@localhost:9999 /] /profile=full/subsystem=messaging/hornetq-server=default/address-setting=patternname/:write-attribute(name=max-delivery-attempts,value=10)
[standalone@localhost:9999 /] /subsystem=messaging/hornetq-server=default/address-setting=patternname/:write-attribute(name=max-delivery-attempts,value=10)
パターン属性の確認
read-resource操作でinclude-runtime=trueパラメーターを実行して値を変更し、サーバーモデルでアクティブな現在のすべての値を公開します。[domain@localhost:9999 /] /profile=full/subsystem=messaging/hornetq-server=default/address-setting=patternname/:read-resource
[standalone@localhost:9999 /] /subsystem=messaging/hornetq-server=default/address-setting=patternname/:read-resource
管理コンソールを使用したアドレスの設定
管理コンソールを使用してアドレスを設定します。管理コンソールにログインします。
管理対象ドメインまたはスタンドアロンサーバーの管理コンソールにログインします。管理対象ドメインを使用する場合は、適切なプロファイルを選択します。
右上にある Profiles タブを選択し、次の画面の左上にある Profile メニューから適切なプロファイルを選択します。fullプロファイルとfull-haプロファイルのみでmessagingサブシステムが有効になります。ナビゲーションメニューから Messaging 項目を選択します。
ナビゲーションメニューから Messaging メニュー項目を展開し、Destinations をクリックします。JMS プロバイダーを表示します。
JMS プロバイダーのリストが表示されます。デフォルトの設定では、defaultという名前の 1 つのプロバイダーだけが表示されます。View リンクをクリックして、このプロバイダーの詳細な設定を表示します。アドレス設定を表示します。
Addressing タブをクリックします。Add ボタンをクリックして新しいパターンを追加するか、名前をクリックし、次に Edit ボタンをクリックすることにより、既存のパターンを編集します。オプションを設定します。
新しいパターンを追加する場合、Pattern フィールドはaddress-setting要素のmatchパラメーターを参照します。また、Dead Letter Address、Expiry Address、Redelivery Delay、および Max Delivery Attempts を編集することもできます。他のオプションは、管理 CLI を使用して設定する必要があります。
17.6.4. HornetQ でのメッセージングの設定
standalone.xml や domain.xml 設定ファイルを手作業で編集せずに永続的な変更を行うことができますが、デフォルト設定ファイルのメッセージングコンポーネントについて理解できると便利です。デフォルトの設定ファイルでは、管理ツールを使用するドキュメントサンプルにより参考用の設定ファイル断片が提供されます。
17.6.5. 遅延再配信の設定
遅延再配信は、Java Messaging Service (JMS) のサブシステム設定の <address-setting> 設定要素の子要素である <redelivery-delay> 要素に定義されます。
<!-- delay redelivery of messages for 5s --> <address-setting match="jms.queue.exampleQueue"> <redelivery-delay>5000</redelivery-delay> </address-setting>
<redelivery-delay> を 0 に設定すると、再配信の遅延はありません。<address-setting-match> 要素にアドレスワイルドカードを使用すると、ワイルドカードに一致するアドレスに対して再配信の遅延を設定することができます。
17.6.6. デッドレターアドレスの設定
デッドレターアドレスは Java Messaging Service (JMS) の サブシステム設定の <address-setting> 要素で定義されます。
<!-- undelivered messages in exampleQueue will be sent to the dead letter address deadLetterQueue after 3 unsuccessful delivery attempts --> <address-setting match="jms.queue.exampleQueue"> <dead-letter-address>jms.queue.deadLetterQueue</dead-letter-address> <max-delivery-attempts>3</max-delivery-attempts> </address-setting>
<dead-letter-address> が指定されていないと、 <max-delivery-attempts> で指定される回数配信を試みた後、メッセージが削除されます。 デフォルトでは 10回 メッセージの配信を試みます。<max-delivery-attempts> を -1 に設定すると、再配信が無限に試行されます。例えば、一致するアドレスのセットに対してグローバルにデッドレターを設定することができ、特定アドレスの <max-delivery-attempts> を -1 に設定し、このアドレスのみ再配信が無限に行われるようにすることが可能です。アドレスワイルドカードを使用してアドレスのセットにデッドレターを設定することも可能です。
17.6.7. メッセージ期限切れアドレス
メッセージ有効期限アドレスは Java Messaging Service (JMS) の address-setting 設定に定義されています。例は次のとおりです。
<!-- expired messages in exampleQueue will be sent to the expiry address expiryQueue --> <address-setting match="jms.queue.exampleQueue"> <expiry-address>jms.queue.expiryQueue</expiry-address> </address-setting>
アドレスワイルドカードを使用すると単一のステートメントで複数の似たアドレスを一致させることができます。これは、システムがアスタリスク ( *) 文字を使用して 1 回の検索で複数のファイルや文字列を一致させることと似ています。以下の文字はワイルドカードステートメントでは特別な意味を持っています。
表17.4 JMX のワイルドカード構文
| 文字 | 説明 |
|---|---|
| . (ピリオド 1 つ) | ワイルドカード表現で単語の間のスペースを意味します。 |
| # (シャープまたはハッシュマーク) | ゼロ以上の単語シーケンスと一致します。 |
| * (アスタリスク) | 1 つの単語と一致します。 |
表17.5 JMS ワイルドカードの例
| 例 | 説明 |
|---|---|
| news.europe.# | news.europe、 news.europe.sport、 news.europe.politic と一致しますが、 news.usa や europe とは一致しません。
|
| news. | news.europe と一致しますが news.europe.sport とは一致しません。
|
| news.*.sport | news.europe.sport と news.usa.sport とは一致しますが、news.europe.politics とは一致しません。
|
17.6.8. HornetQ 設定属性のリファレンス
read-resource 操作で設定可能または表示可能な属性を公開できます。
例17.3 例
[standalone@localhost:9999 /] /subsystem=messaging/hornetq-server=default:read-resource
表17.6 HornetQ 属性
| 属性 | サンプル値 | タイプ |
|---|---|---|
allow-failback | true | BOOLEAN |
async-connection-execution-enabled | true | BOOLEAN |
backup | false | BOOLEAN |
cluster-password | somethingsecure | STRING |
cluster-user | HORNETQ.CLUSTER.ADMIN.USER | STRING |
clustered | false | BOOLEAN |
connection-ttl-override | -1 | LONG |
create-bindings-dir | true | BOOLEAN |
create-journal-dir | true | BOOLEAN |
failback-delay | 5000 | LONG |
failover-on-shutdown | false | BOOLEAN |
id-cache-size | 2000 | INT |
jmx-domain | org.hornetq | STRING |
jmx-management-enabled | false | BOOLEAN |
journal-buffer-size | 100 | LONG |
journal-buffer-timeout | 100 | LONG |
journal-compact-min-files | 10 | INT |
journal-compact-percentage | 30 | INT |
journal-file-size | 102400 | LONG |
journal-max-io | 1 | INT |
journal-min-files | 2 | INT |
journal-sync-non-transactional | true | BOOLEAN |
journal-sync-transactional | true | BOOLEAN |
journal-type | ASYNCIO | STRING |
live-connector-ref | reference | STRING |
log-journal-write-rate | false | BOOLEAN |
management-address | jms.queue.hornetq.management | STRING |
management-notification-address | hornetq.notifications | STRING |
memory-measure-interval | -1 | LONG |
memory-warning-threshold | 25 | INT |
message-counter-enabled | false | BOOLEAN |
message-counter-max-day-history | 10 | INT |
message-counter-sample-period | 10000 | LONG |
message-expiry-scan-period | 30000 | LONG |
message-expiry-thread-priority | 3 | INT |
page-max-concurrent-io | 5 | INT |
perf-blast-pages | -1 | INT |
persist-delivery-count-before-delivery | false | BOOLEAN |
persist-id-cache | true | BOOLEAN |
persistence-enabled | true | BOOLEAN |
remoting-interceptors | 未定義 | LIST |
run-sync-speed-test | false | BOOLEAN |
scheduled-thread-pool-max-size | 5 | INT |
security-domain | other | STRING |
security-enabled | true | BOOLEAN |
security-invalidation-interval | 10000 | LONG |
server-dump-interval | -1 | LONG |
shared-store | true | BOOLEAN |
started | true | BOOLEAN |
thread-pool-max-size | 30 | INT |
transaction-timeout | 300000 | LONG |
transaction-timeout-scan-period | 1000 | LONG |
version | 2.2.16.Final (HQ_2_2_16_FINAL, 122) | STRING |
wild-card-routing-enabled | true | BOOLEAN |
警告
journal-file-size の値がサーバーへ送信されたメッセージのサイズよりも大きくないと、サーバーはメッセージを格納できません。
17.6.9. メッセージの有効期限の設定
HornetQ Core API を使用すると失効時間を直接メッセージに設定できます。例は次のとおりです。
// message will expire in 5000ms from now message.setExpiration(System.currentTimeMillis() + 5000);
MessageProducer
JMS MessageProducer には送信するメッセージの有効期限を制御する TimeToLive パラメーターが含まれています。
// messages sent by this producer will be retained for 5s (5000ms) before expiration producer.setTimeToLive(5000);
- _HQ_ORIG_ADDRESS
- _HQ_ACTUAL_EXPIRY
17.7. 永続性
17.7.1. HornetQ の永続性について
- Java ノンブロッキング IO (NIO)ファイルシステムとのインターフェースに標準の Java NIO を使用します。大変優れたパフォーマンスを実現し、Java 6 またはそれ以降のランタイムのプラットフォーム上で稼働します。
- Linux 非同期 IO (AIO)ネイティブコードラッパーを使用し、Linux 非同期 IO ライブラリ (AIO) と対話します。データが永続化されると、HornetQ は AIO を用いてメッセージを受信します。これにより、明示的な同期化の必要がなくなります。通常、AIO のパフォーマンスは Java NIO よりも優れていますが、Linux カーネル 2.6 (またはそれ以降) と libaio パッケージが必要になります。また、AIO には ext2、ext3、ext4、jfs、または xfs タイプのファイルシステムも必要になります。
- bindings journalサーバーおよび属性にデプロイされたキューのセットを含む、バインディング関連のデータを格納します。また、ID シーケンスカウンターなどのデータも格納します。メッセージジャーナルよりもスループットが低くなるため、バインディングジャーナルは常に NIO ジャーナルになります。このジャーナル上のファイルには、hornetq-bindings というプレフィックスが付けられます。各ファイルには bindings 拡張子が付けられます。ファイルサイズは 1048576 バイトで、bindings フォルダーに格納されます。
- JMS journalJMS キュー、トピックスまたは接続ファクトリ、これらリソースの JNDI バインディングなど、JMS 関連のデータをすべて格納します。管理 API で作成された JMS リソースはすべてこのジャーナルで永続化されますが、設定ファイルで設定されたリソースは永続化されません。このジャーナルは JMS が使用される場合のみ作成されます。
- message journalメッセージ自体および duplicate-id キャッシュを含む、メッセージ関連のデータをすべて格納します。デフォルトでは、HornetQ はこのジャーナルに AIO を使用します。AIO が使用できない場合は、自動的に NIO へフォールバックします。
17.8. 高可用性
17.8.1. HornetQ Shared の共有ストアについて
重要
重要
警告
- HornetQ は、ジャーナルタイプ ASYNCIO を使用するよう設定する必要があります。
- Red Hat Enterprise Linux NFS クライアントのキャッシュは無効にする必要があります。
重要
重要
libaio が、JBoss Enterprise Application Platform 6 が実行されている Red Hat Enterprise Linux システムにインストールされている必要があります。
注記
17.8.2. 高可用性 (HA) フェイルオーバーについて
重要
重要
17.9. メッセージレプリケーション
17.9.1. HornetQ のメッセージレプリケーション
警告
backup-group-name パラメーターが hornetq-configuration.xml ファイルに定義されているかどうかによって異なります。バックアップサーバーは、同じグループ名を共有するライブサーバーへのみ接続します。このパラメーターが定義されていない場合、バックアップサーバーは任意のライブサーバーに接続しようとします。
17.9.2. レプリケーションに対する HornetQ サーバーの設定
hornetq-configuration.xml に以下を設定します。
<shared-store>false</shared-store>
.
.
.
<cluster-connections>
<cluster-connection name="my-cluster">
...
</cluster-connection>
</cluster-connections>
<backup>true</backup>
<connectors>
<connector name="nameOfConfiguredLiveServerConnector">
<factory-class>
org.hornetq.core.remoting.impl.netty.NettyConnectorFactory
</factory-class>
<param key="port" value="5445"/>
</connector>
<!-- a real configuration could have more connectors here -->
<connectors>
第18章 トランザクションサブシステム
18.1. トランザクションサブシステムの設定
18.1.1. トランザクション設定の概要
次の手順は、JBoss Enterprise Application Platform のトランザクションサブシステムを設定する方法を示しています。
18.1.2. トランザクションマネージャーの設定
default 以外のプロファイルを修正したい場合は、以下の方法で手順とコマンドを修正する必要があることがあります。
例のコマンドに関する注意点
- 管理コンソールの場合、
defaultプロファイルは最初のコンソールログイン時に選択されるものです。異なるプロファイルでトランザクションマネージャーの設定を修正する必要がある場合は、defaultの代わりに使用しているプロファイルを選択してください。同様に、例の CLI コマンドのdefaultプロファイルを使用しているプロファイルに置き換えてください。 - スタンドアロンサーバーを使用する場合、存在するプロファイルは 1 つのみです。特定のプロファイルを選択する手順は無視してください。CLI コマンドでは、例のコマンドの
/profile=default部分を削除してください。
注記
transactions サブシステムが有効でなくてはなりません。これは、デフォルトで有効になっており、他の多くのサブシステムが適切に機能するために必要なため、無効にする可能性は大変低くなります。
Web ベースの管理コンソールを使用して TM を設定するには、管理コンソール画面の左上にある一覧から Runtime タブを選択します。管理対象ドメインを使用する場合、選択できるプロファイルがいくつかあります。プロファイル画面の右上にある Profile 選択ボックスから適切なプロファイルを選択してください。Container メニューを展開して、Transactions を選択します。
管理 CLI では、一連のコマンドを使用して TM を設定できます。プロファイル default の管理対象ドメインの場合、コマンドはすべて /profile=default/subsystem=transactions/ で始まり、スタンドアロンサーバーの場合は /subsystem=transactions で始まります。
表18.1 TM 設定オプション
| オプション | 説明 | CLI コマンド |
|---|---|---|
|
統計の有効化 (Enable Statistics)
|
トランザクションの統計を有効にするかどうか指定します。統計は Runtime タブの Subsystem Metrics セクションにある管理コンソールで閲覧できます。
| /profile=default/subsystem=transactions/:write-attribute(name=enable-statistics,value=true)
|
|
TSM ステータスの有効化 (Enable TSM Status)
|
トランザクションステータスマネージャー (TSM) のサービスを有効にするかどうか指定します。これは、アウトオブプロセスのリカバリに使用されます。
| /profile=default/subsystem=transactions/:write-attribute(name=enable-tsm-status,value=false)
|
|
デフォルトのタイムアウト (Default Timeout)
|
デフォルトのトランザクションタイムアウトです。デフォルトでは
300 秒に設定されています。トランザクションごとにプログラムで上書きできます。
| /profile=default/subsystem=transactions/:write-attribute(name=default-timeout,value=300)
|
|
パス (Path)
|
トランザクションマネージャーコアがデータを格納するファイルシステムの相対または絶対パスです。デフォルトの値は
relative-to 属性の値と相対的なパスです。
| /profile=default/subsystem=transactions/:write-attribute(name=path,value=var)
|
|
相対的 (Relative To)
|
ドメインモデルのグローバルなパス設定を参照します。デフォルト値は、JBoss Enterprise Application Platform 6 のデータディレクトリで、
jboss.server.data.dir プロパティーの値です。デフォルトは、管理対象ドメインの場合は EAP_HOME/domain/data/、スタンドアロンサーバーインスタンスの場合は EAP_HOME/standalone/data/ です。path TM 属性の値は、このパスに相対的です。空の文字列を使用して、デフォルト動作を無効にし、path 属性の値が絶対パスとして強制的に扱われるようにします。
| /profile=default/subsystem=transactions/:write-attribute(name=relative-to,value=jboss.server.data.dir)
|
|
オブジェクトストアパス (Object Store Path)
|
TM オブジェクトストアがデータを格納するファイルシステムの相対または絶対パスです。デフォルトでは、
object-store-relative-to パラメーターの値に相対的です。
| /profile=default/subsystem=transactions/:write-attribute(name=object-store-path,value=tx-object-store)
|
|
オブジェクトストアパスに相対的 (Object Store Path Relative To)
|
ドメインモデルのグローバルなパス設定を参照します。デフォルト値は、JBoss Enterprise Application Platform 6 のデータディレクトリで、
jboss.server.data.dir プロパティーの値です。デフォルトは、管理対象ドメインの場合は EAP_HOME/domain/data/、スタンドアロンサーバーインスタンスの場合は EAP_HOME/standalone/data/ です。path TM 属性の値は、このパスに相対的です。空の文字列を使用して、デフォルト動作を無効にし、path 属性の値が絶対パスとして強制的に扱われるようにします。
| /profile=default/subsystem=transactions/:write-attribute(name=object-store-relative-to,value=jboss.server.data.dir)
|
|
ソケットバインディング (Socket Binding)
|
ソケットベースのメカニズムを使用する場合に、トランザクションマネージャーの回復およびトランザクション識別子の生成に使用するソケットバインディングの名前を指定します。一意の識別子を生成する詳しい情報は、
process-id-socket-max-ports を参照してください。ソケットバインディングは、管理コンソールの Server タブでサーバーグループごとに指定されます。
| /profile=default/subsystem=transactions/:write-attribute(name=socket-binding,value=txn-recovery-environment)
|
|
ソケットバインディングのステータス (Status Socket Binding)
|
トランザクションステータスマネージャーで使用するソケットバインディングを指定します。
| /profile=default/subsystem=transactions/:write-attribute(name=status-socket-binding,value=txn-status-manager)
|
|
リカバリーリスナー (Recovery Listener)
|
トランザクションリカバリのプロセスがネットワークソケットをリッスンするかどうかを指定します。デフォルトは
false です。
| /profile=default/subsystem=transactions/:write-attribute(name=recovery-listener,value=false)
|
表18.2 高度な TM 設定オプション
| オプション | 説明 | CLI コマンド |
|---|---|---|
|
jts
|
Java Transaction Service (JTS) トランザクションを使用するかどうかを指定します。デフォルトは
false で、JTA トランザクションのみ使用します。
| /profile=default/subsystem=transactions/:write-attribute(name=jts,value=false)
|
|
node-identifier
|
JTS サービスのノード識別子です。トランザクションマネージャーがリカバリ時にこれを使用するため、JTS サービスごとに一意でなければなりません。
| /profile=default/subsystem=transactions/:write-attribute(name=node-identifier,value=1)
|
|
process-id-socket-max-ports
|
トランザクションマネージャーは、各トランザクションログに対し一意の識別子を作成します。一意の識別子を生成するメカニズムは 2 種類あります。ソケットベースのメカニズムとプロセスのプロセス識別子をベースにしたメカニズムです。
ソケットベースの識別子の場合、あるソケットを開くと、そのポート番号が識別子用に使用されます。ポートがすでに使用されている場合は、空きのポートが見つかるまで次のポートがプローブされます。
process-id-socket-max-ports は、TM が失敗するまでに試行するソケットの最大値を意味します。デフォルト値は 10 です。
| /profile=default/subsystem=transactions/:write-attribute(name=process-id-socket-max-ports,value=10)
|
|
process-id-uuid
| true に設定すると、プロセス識別子を使用して各トランザクションに一意の識別子を作成します。そうでない場合は、ソケットベースのメカニズムが使用されます。デフォルトは true です。詳細は process-id-socket-max-ports を参照してください。
| /profile=default/subsystem=transactions/:write-attribute(name=process-id-uuid,value=true)
|
|
use-hornetq-store
|
トランザクションログ用に、ファイルベースのストレージの代わりに HornetQ のジャーナルストレージメカニズムを使用します。デフォルトでは無効になっていますが、I/O パフォーマンスが向上します。別々のトランザクションマネージャーで JTS トランザクションを使用することは推奨されません。
| /profile=default/subsystem=transactions/:write-attribute(name=use-hornetq-store,value=false)
|
18.1.3. JTA トランザクションを使用するようにデータソースを設定
ここでは、データソースで Java Transactions API (JTA) を有効にする方法を説明します。
このタスクを行う前に、 次の条件を満たす必要があります。
- お使いのデータベースまたはその他のリソースが JTA をサポートしている必要があります。不明な場合は、データソースまたはリソースの文書を参照してください。
- データベースを作成する必要があります。「管理インターフェースによる非 XA データソースの作成」 を参照してください。
- JBoss Enterprise Application Platform を停止します。
- テキストエディターで設定ファイルを直接編集できる権限を持たなければなりません。
手順18.1 JTA トランザクションを使用するようデータソースを設定する
テキストエディターで設定ファイルを開きます。
JBoss Enterprise Application Platform を管理対象ドメインまたはスタンドアロンサーバーで実行するかによって、設定ファイルの場所は異なります。管理対象ドメイン
管理対象ドメインのデフォルトの設定ファイルは、Red Hat Enterprise Linux の場合はEAP_HOME/domain/configuration/domain.xmlにあります。Microsoft Windows サーバーの場合はEAP_HOME\domain\configuration\domain.xmlにあります。スタンドアロンサーバー
スタンドアロンサーバーのデフォルトの設定ファイルは、Red Hat Enterprise Linux の場合はEAP_HOME/standalone/configuration/standalone.xmlにあります。Microsoft Windows サーバーの場合はEAP_HOME\standalone\configuration\standalone.xmlにあります。
お使いのデータソースに対応する
<datasource>タグを探します。データソースのjndi-name属性には作成時に指定した属性が設定されます。例えば、 ExampleDS データソースは次のようになります。<datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="H2DS" enabled="true" jta="true" use-java-context="true" use-ccm="true">
jta属性をtrueに設定します。上記のように、jta="true"を<datasource>タグの内容に追加します。設定ファイルを保存します。
設定ファイルを保存しテキストエディターを終了します。JBoss Enterprise Application Platform を起動します。
JBoss Enterprise Application Platform 6 サーバーを再起動します。
JBoss Enterprise Application Platform が起動し、データソースが JTA トランザクションを使用するように設定されます。
18.1.4. XA Datasource の設定
XA Datasource を追加するには、管理コンソールにログインする必要があります。詳細は 「管理コンソールへログイン」 を参照してください。
新しいデータソースの追加
新しいデータソースを JBoss Enterprise Application Platform に追加します。「管理インターフェースによる非 XA データソースの作成」 の手順に従いますが、上部の XA Datasource タブをクリックしてください。必要に応じて他のプロパティーを設定します。
データソースパラメーターの一覧は 「データソースのパラメーター」 にあります。
XA Datasource が設定され、使用する準備ができました。
18.1.5. トランザクションログメッセージについて
DEBUG ログレベルを使用します。詳細なデバッグでは TRACE ログレベルを使用します。トランザクションロガーの設定に関する詳細は 「トランザクションサブシステムのログ設定」 を参照してください。
TRACE ログレベルに設定すると、トランザクションマネージャーは多くのロギング情報を生成できます。一般的に表示されるメッセージの一部は次のとおりです。他のメッセージが表示されることもあります。
表18.3 トランザクションステートの変更
| トランザクションの開始 |
トランザクションが開始されると、次のコードが実行されます。
com.arjuna.ats.arjuna.coordinator.BasicAction::Begin:1342 tsLogger.logger.trace("BasicAction::Begin() for action-id "+ get_uid());
|
| トランザクションのコミット |
トランザクションがコミットすると、次のコードが実行されます。
com.arjuna.ats.arjuna.coordinator.BasicAction::End:1342 tsLogger.logger.trace("BasicAction::End() for action-id "+ get_uid());
|
| トランザクションのロールバック |
トランザクションがロールバックすると、次のコードが実行されます。
com.arjuna.ats.arjuna.coordinator.BasicAction::Abort:1575 tsLogger.logger.trace("BasicAction::Abort() for action-id "+ get_uid());
|
| トランザクションのタイムアウト |
トランザクションがタイムアウトすると、次のコードが実行されます。
com.arjuna.ats.arjuna.coordinator.TransactionReaper::doCancellations:349 tsLogger.logger.trace("Reaper Worker " + Thread.currentThread() + " attempting to cancel " + e._control.get_uid());
その後、上記のように同じスレッドがトランザクションをロールバックすることが確認できます。
|
18.1.6. トランザクションサブシステムのログ設定
JBoss Enterprise Application Platform の他のログ設定に依存せずにトランザクションログの情報量を制御する手順を説明します。主に Web ベースの管理コンソールを用いた手順を説明し、管理 CLI のコマンドはその説明の後で取り上げます。
手順18.2 管理コンソールを使用したトランザクションロガーの設定
ログ設定エリアへの移動
管理コンソールにて画面の左上にある Profiles タブをクリックします。管理対象ドメインを使用する場合は、右上の Profile 選択ボックスから設定したいサーバープロファイルを選択します。Core メニューを展開して、Logging ラベルをクリックします。com.arjuna属性を編集します。ページの下の方にある Details セクションの Edit ボタンをクリックします。ここにクラス固有のログ情報を追加できます。com.arjunaクラスはすでに存在しています。ログレベルと親ハンドラーを使用するかどうか変更できます。- ログレベル
- デフォルトのログレベルは
WARNです。トランザクションはログを大量に出力できるため、標準的なログレベルの意味は、トランザクションロガーでは若干異なります。通常、選択したレベルより重要度が低いレベルでタグ付けされたメッセージは破棄されます。トランザクションログのレベル (詳細度が最高レベルから最低レベルまで)
- TRACE
- DEBUG
- INFO
- WARN
- ERROR
- FAILURE
- 親ハンドラーの使用
- ロガーがログ出力を親ロガーに送信するかどうか指定します。デフォルトの動作は
trueです。
- 変更は直ちに反映されます。
18.2. トランザクション管理
18.2.1. トランザクションの参照と管理
log-store と呼ばれるリソースとして公開します。probe と呼ばれる API 操作はトランザクションログを読み取り、各ログに対してノードを作成します。probe コマンドは、log-store を更新する必要があるときに、いつでも手動で呼び出すことができます。トランザクションログが現れて、すぐに消失されるのは通常のことです。
例18.1 ログストアの更新
default を使用するサーバーグループに対してログストアを更新します。スタンドアローンサーバーの場合は、コマンドから profile=default を削除します。
/profile=default/subsystem=transactions/log-store=log-store/:probe
例18.2 準備されたすべてのトランザクションの表示
ls コマンドに類似した機能を持つ次のコマンドを実行します。
ls /profile=default/subsystem=transactions/log-store=log-store/transactions
トランザクションの管理
- トランザクションの属性を表示します。
- JNDI 名、EIS 製品名およびバージョン、ステータスなどのトランザクションに関する情報を表示するには、
:read-resourceCLIコマンドを使用します。/profile=default/subsystem=transactions/log-store=log-store/transactions=0\:ffff7f000001\:-b66efc2\:4f9e6f8f\:9:read-resource
- トランザクションの参加者を表示します。
- 各トランザクションログには、
participants(参加者) と呼ばれる子要素が含まれます。トランザクションの参加者を確認するには、この要素に対してread-resourceCLI コマンドを使用します。参加者は、JNDI 名によって識別されます。/profile=default/subsystem=transactions/log-store=log-store/transactions=0\:ffff7f000001\:-b66efc2\:4f9e6f8f\:9/participants=java\:\/JmsXA:read-resource
結果は以下のようになります。{ "outcome" => "success", "result" => { "eis-product-name" => "HornetQ", "eis-product-version" => "2.0", "jndi-name" => "java:/JmsXA", "status" => "HEURISTIC", "type" => "/StateManager/AbstractRecord/XAResourceRecord" } }ここで示された結果ステータスはHEURISTICであり、リカバリーが可能です。詳細については、トランザクションをリカバリーします。 を参照してください。 - トランザクションを削除します。
- 各トランザクションログは、トランザクションを表すトランザクションログを削除するために、
:delete操作をサポートします。/profile=default/subsystem=transactions/log-store=log-store/transactions=0\:ffff7f000001\:-b66efc2\:4f9e6f8f\:9:delete
- トランザクションをリカバリーします。
- 各トランザクションログは、
:recoverCLI コマンドを使用したリカバリーをサポートします。ヒューリスティックなトランザクションと参加者のリカバリー
- トランザクションのステータスが
HEURISTICである場合は、リカバリー操作によって、ステータスがPREPAREに変わり、リカバリーがトリガーされます。 - トランザクションの参加者の 1 つがヒューリスティックな場合、リカバリー操作により、
commit操作の応答が試行されます。成功した場合、トランザクションログから参加者が削除されます。これを確認するには、log-store上で:probe操作を再実行し、参加者がリストされていないことを確認します。これが最後の参加者の場合は、トランザクションも削除されます。
- リカバリーが必要なトランザクションのステータスを更新します。
- トランザクションをリカバリーする必要がある場合は、リカバリーを試行する前に
:refreshCLI コマンドを使用して、トランザクションのリカバリーが必要であるかを確認できます。/profile=default/subsystem=transactions/log-store=log-store/transactions=0\:ffff7f000001\:-b66efc2\:4f9e6f8f\:9:refresh
注記
use-hornetq-store オプションの値を true に設定します。トランザクションマネージャーの設定については、「トランザクションマネージャーの設定」 を参照してください。
トランザクションマネージャー (TM) の統計が有効になっていると、トランザクションマネージャーおよびトランザクションサブシステムに関する統計を表示できます。TM の統計を有効にする方法は 「トランザクションマネージャーの設定」 を参照してください。
表18.4 トランザクションサブシステム統計情報
| 統計 | 説明 | CLI コマンド |
|---|---|---|
| Total (合計) |
このサーバー上でトランザクションマネージャーにより処理されるトランザクションの合計数。
|
/host=master/server=server-one/subsystem=transactions/:read-attribute(name=number-of-transactions,include-defaults=true) |
| Committed (コミット済み) |
このサーバー上でトランザクションマネージャーにより処理されるコミット済みトランザクションの数。
|
/host=master/server=server-one/subsystem=transactions/:read-attribute(name=number-of-committed-transactions,include-defaults=true) |
| Aborted (異常終了) |
このサーバー上でトランザクションマネージャーにより処理される異常終了したトランザクションの数。
|
/host=master/server=server-one/subsystem=transactions/:read-attribute(name=number-of-aborted-transactions,include-defaults=true) |
| Timed Out (タイムアウト) |
このサーバー上でトランザクションマネージャーにより処理されるタイムアウトのトランザクションの数。
|
/host=master/server=server-one/subsystem=transactions/:read-attribute(name=number-of-timed-out-transactions,include-defaults=true) |
| Heuristics (ヒューリスティック) |
管理コンソールで利用不可です。ヒューリスティック状態のトランザクションの数。
|
/host=master/server=server-one/subsystem=transactions/:read-attribute(name=number-of-heuristics,include-defaults=true) |
| In-Flight Transactions (フライト状態のトランザクション) |
管理コンソールでは使用できません。開始した未終了のトランザクションの数。
|
/host=master/server=server-one/subsystem=transactions/:read-attribute(name=number-of-inflight-transactions,include-defaults=true) |
| Failure Origin - Applications (障害の原因 - アプリケーション) |
障害の原因がアプリケーションであった失敗トランザクションの数。
|
/host=master/server=server-one/subsystem=transactions/:read-attribute(name=number-of-application-rollbacks,include-defaults=true) |
| Failure Origin - Resources (障害の原因 - リソース) |
障害の原因がリソースであった失敗トランザクションの数。
|
/host=master/server=server-one/subsystem=transactions/:read-attribute(name=number-of-resource-rollbacks,include-defaults=true) |
18.3. トランザクションに関する参考資料
18.3.1. JBoss Transactions エラーと例外
UserTransaction クラスのメソッドがスローする例外に関する詳細は、http://download.oracle.com/javaee/1.3/api/javax/transaction/UserTransaction.html の 『UserTransaction API』 の仕様を参照してください。
18.3.2. JTA クラスタリングの制限事項
18.4. ORB 設定
18.4.1. Common Object Request Broker Architecture (CORBA) について
18.4.2. JTS トランザクション用 ORB の設定
注記
full および full-ha プロファイルでのみ利用可能です。スタンドアロンサーバーでは、standalone-full.xml または standalone-full-ha.xml 設定で利用可能です。
手順18.3 管理コンソールを使用した ORB の設定
プロファイル設定を表示します。
管理コンソールの右上から Profiles (管理対象ドメイン) または Profile (スタンドアロンサーバー) を選択します。管理対象ドメインを使用する場合は、左上にある選択ボックスから full または full-ha プロファイルを選択します。Initializers 設定の変更
必要な場合は、左側にある Subsystems メニューを展開します。Container サブメニューを展開し、JacORB をクリックします。メイン画面に表示されるフォームで、Initializers タブを選択し、Edit ボタンをクリックします。Security の値をonに設定して、セキュリティーインターセプターを有効にします。JTS 用 ORB を有効にするには、Transaction Interceptors 値をデフォルトのspecではなくonに設定します。これらの値に関する詳細な説明については、フォームの Need Help? リンクを参照してください。値の編集が完了したら、Save をクリックします。高度な ORB 設定
高度な設定オプションについては、フォームの他のセクションを参照してください。各セクションには、パラメーターに関する詳細な情報とともに Need Help? リンクが含まれます。
管理 CLI を使用して ORB の各側面を設定できます。以下のコマンドは、管理コンソールに対するイニシャライザーに上記の手順と同じ値を設定します。これは、JTS と使用する ORB の最小設定です。
/profile=full 部分を省略します。
例18.3 セキュリティーインターセプターの有効化
/profile=full/subsystem=jacorb/:write-attribute(name=security,value=on)
例18.4 JTS 用 ORB の有効化
/profile=full/subsystem=jacorb/:write-attribute(name=transactions,value=on)
第19章 Enterprise JavaBeans
19.1. はじめに
19.1.1. Enterprise JavaBeans の概要
19.1.2. 管理者向け Enterprise JavaBeans の概要
- 右上の Profile リンクをクリックして Profile ビューに切り替えます。
- ラベルの横にある矢印をクリックし、左側の Profile メニューを展開します。
- Container をクリックして展開し、EJB 3をクリックします。
- 上部の Profile リンクをクリックして、Profile ビューに切り替えます。
- ラベルの横にある矢印をクリックし、左側の Pubsystems メニューを展開します。
- Profile メニューから、変更するプロファイルを選択します。
- Container をクリックして展開し、EJB 3をクリックします。

図19.1 管理コンソールの EJB 設定オプション (スタンドアロンサーバー)
19.1.3. エンタープライズ Bean
重要
19.1.4. セッション Bean
19.1.5. メッセージ駆動型 Bean
19.2. Bean プールの設定
19.2.1. Bean プール
19.2.2. Bean プールの作成
手順19.1 管理コンソールを使用した Bean プールの作成
- 管理コンソールへログインします。「管理コンソールへログイン」 を参照してください。
- EJB3 Bean Pools パネルへ移動します。

図19.2 EJB3 Bean プールパネル
- Add ボタンをクリックすると、Add EJB3 Bean Pools ダイアログが表示されます。
- 必要な詳細、Name、Max Pool Size、Timeout の値と、Timeout の単位を指定します。
- Save ボタンをクリックして新しい Bean プールを追加するか、 Cancel リンクをクリックして取り消します。
- Save ボタンをクリックすると、ダイアログが閉じられ、新しい Bean プールが一覧に表示されます。
- Cancel をクリックするとダイアログが閉じられ、新しい Bean プールは作成されません。
手順19.2 CLI を使用した Bean プールの作成
- CLI ツールを起動し、サーバーに接続します。「管理 CLI を使用した管理対象サーバーインスタンスへの接続」を参照してください。
- 次の構文で
add操作を使用します。/subsystem=ejb3/strict-max-bean-instance-pool=BEANPOOLNAME:add(max-pool-size=MAXSIZE, timeout=TIMEOUT, timeout-unit="UNIT")
- BEANPOOLNAME を Bean プールの必要な名前に置き換えます。
- MAXSIZE を Bean プールの最大サイズに置き換えます。
- TIMEOUT の置き換え
- UNIT を必要な時間単位に置き換えます。使用可能な値は
NANOSECONDS、MICROSECONDS、MILLISECONDS、SECONDS、MINUTES,HOURS、DAYSです。
read-resource操作を使用して Bean プールの作成を確認します。/subsystem=ejb3/strict-max-bean-instance-pool=BEANPOOLNAME:read-resource
例19.1 CLI を使用した Bean プールの作成
[standalone@localhost:9999 /] /subsystem=ejb3/strict-max-bean-instance-pool=ACCTS_BEAN_POOL:add(max-pool-size=500, timeout=5000, timeout-unit="SECONDS")
{"outcome" => "success"}
[standalone@localhost:9999 /]例19.2 XML 設定の例
<subsystem xmlns="urn:jboss:domain:ejb3:1.2">
<pools>
<bean-instance-pools>
<strict-max-pool name="slsb-strict-max-pool" max-pool-size="20"
instance-acquisition-timeout="5"
instance-acquisition-timeout-unit="MINUTES" />
<strict-max-pool name="mdb-strict-max-pool" max-pool-size="20"
instance-acquisition-timeout="5"
instance-acquisition-timeout-unit="MINUTES" />
</bean-instance-pools>
</pools>
</subsystem>
19.2.3. Bean プールの削除
前提条件
- 使用されている Bean プールは削除できません。「セッションおよびメッセージ駆動型 Bean に対する Bean プールの割り当て」 を参照して、Bean プールが使用されていないことを確認してください。
手順19.3 管理コンソールを使用した Bean プールの削除
- 管理コンソールへログインします。「管理コンソールへログイン」 を参照してください。
- 右上の Profile をクリックし、左側の Profile パネルの Container 項目を展開して、EJB 3 を選択します。次に、メインパネルから Bean Pools タブを選択します。

図19.3 EJB3 Bean プールパネル
- 一覧より削除する Bean プールを選択します。
- Remove ボタンをクリックします。Remove Item ダイアログが表示されます。
- OK ボタンをクリックして削除を実行するか、Cancel リンクをクリックして処理を取り消します。Ok ボタンをクリックすると、ダイアログが閉じられます。Bean プールが削除され、一覧からも削除されます。Cancel をクリックするとダイアログが閉じられ、何も変更されません。
手順19.4 CLI を使用した Bean プールの削除
- CLI ツールを起動し、サーバーに接続します。「管理 CLI を使用した管理対象サーバーインスタンスへの接続」を参照してください。
- 次の構文で
remove操作を使用します。/subsystem=ejb3/strict-max-bean-instance-pool=BEANPOOLNAME:remove
- BEANPOOLNAME を Bean プールの必要な名前に置き換えます。
例19.3 CLI を使用した Bean プールの削除
[standalone@localhost:9999 /] /subsystem=ejb3/strict-max-bean-instance-pool=ACCTS_BEAN_POOL:remove
{"outcome" => "success"}
[standalone@localhost:9999 /]19.2.4. Bean プールの編集
手順19.5 管理コンソールを使用した Bean プールの編集
- 管理コンソールへログインします。「管理コンソールへログイン」 を参照してください。
- 右上の Profile をクリックし、左側の Profile パネルの Container 項目を展開して、EJB 3 を選択します。次に、メインパネルから Bean Pools タブを選択します。

図19.4 EJB3 Bean プールパネル
- 一覧より編集する Bean プールを選択します。
- Edit ボタンをクリックします。Details 領域のフィールドが編集可能になります。
- 変更したい詳細を編集します。Max Pool Size と Timeout の値と、Timeout の単位のみが変更可能です。
- 変更を保存するには Save ボタンをクリックします。変更を破棄するには Cancel リンクをクリックします。Ok ボタンをクリックすると、Details エリアが編集不可能になり、Bean プールが新しい詳細に更新されます。Cancel リンクをクリックすると、 Details エリアが編集不可能になり、何も変更されません。
手順19.6 CLI を使用した Bean プールの編集
- CLI ツールを起動し、サーバーに接続します。「管理 CLI を使用した管理対象サーバーインスタンスへの接続」を参照してください。
- Bean プールの各属性を変更するために、次の構文で
write-attribute操作を使用します。/subsystem=ejb3/strict-max-bean-instance-pool=BEANPOOLNAME:write-attribute(name="ATTRIBUTE", value="VALUE")
- BEANPOOLNAME を Bean プールの必要な名前に置き換えます。
- ATTRIBUTE を、編集する属性の名前に置き換えます。このように編集できる属性は、
max-pool-size、timeout、およびtimeout-unitです。 - VALUE を属性の必要な値に置き換えます。
read-resource操作を使用して Bean プールの変更を確認します。/subsystem=ejb3/strict-max-bean-instance-pool=BEANPOOLNAME:read-resource
例19.4 CLI を使用した Bean プールのタイムアウト値の設定
[standalone@localhost:9999 /] /subsystem=ejb3/strict-max-bean-instance-pool=HSBeanPool:write-attribute(name="timeout", value="1500")
{"outcome" => "success"}
[standalone@localhost:9999 /]19.2.5. セッションおよびメッセージ駆動型 Bean に対する Bean プールの割り当て
slsb-strict-max-pool とメッセージ駆動型 Bean に対する mdb-strict-max-pool の 2 つの Bean プールが提供されます。
手順19.7 管理コンソールを使用したセッションおよびメッセージ駆動型 Bean に対する Bean プールの割り当て
- 管理コンソールへログインします。「管理コンソールへログイン」 を参照してください。
- EJB3 コンテナー設定パネルへ移動します。

図19.5 管理コンソールの EJB3 コンテナー設定パネル (スタンドアロンサーバー)
- Edit ボタンをクリックします。Details 領域のフィールドが編集可能になります。
- 適切なコンボボックスから、Bean の各タイプに使用する Bean プールを選択します。
- Save ボタンをクリックして変更を維持するか、 Cancel リンクをクリックして変更を破棄します。
- Details 領域が編集可能になり、正しい Bean プール選択が表示されます。
手順19.8 CLI を使用したセッションおよびメッセージ駆動型 Bean に対する Bean プールの割り当て
- CLI ツールを起動し、サーバーに接続します。「管理 CLI を使用した管理対象サーバーインスタンスへの接続」を参照してください。
- 次の構文で
write-attribute操作を使用します。/subsystem=ejb3:write-attribute(name="BEANTYPE", value="BEANPOOL")
- BEANTYPE は、メッセージ駆動型 Bean の
default-mdb-instance-poolまたはステートレスセッション Bean のdefault-slsb-instance-poolに置き換えます。 - BEANPOOL を割り当てる Bean プールの名前に置き換えます。
read-resource操作を使用して変更を確認します。/subsystem=ejb3:read-resource
例19.5 CLI を使用したセッション Bean に対する Bean プールの割り当て
[standalone@localhost:9999 /] /subsystem=ejb3:write-attribute(name="default-slsb-instance-pool", value="LV_SLSB_POOL")
{"outcome" => "success"}
[standalone@localhost:9999 /]例19.6 XML 設定の例
<subsystem xmlns="urn:jboss:domain:ejb3:1.2">
<session-bean>
<stateless>
<bean-instance-pool-ref pool-name="slsb-strict-max-pool"/>
</stateless>
<stateful default-access-timeout="5000" cache-ref="simple"/>
<singleton default-access-timeout="5000"/>
</session-bean>
<mdb>
<resource-adapter-ref resource-adapter-name="hornetq-ra"/>
<bean-instance-pool-ref pool-name="mdb-strict-max-pool"/>
</mdb>
</subsystem>
19.3. EJB スレッドプールの設定
19.3.1. エンタープライズ Bean スレッドプール
19.3.2. スレッドプールの作成
手順19.9 管理コンソールを使用した EJB スレッドプールの作成
- 管理コンソールへログインします。「管理コンソールへログイン」 を参照してください。
- 右上の Profile をクリックし、左側の Profile パネルの Container 項目を展開して、EJB 3 を選択します。次に、メインパネルから Thread Pools タブを選択します。

図19.6 EJB3 スレッドプールパネル
- Add ボタンをクリックすると、Add EJB3 Thread Pools ダイアログが表示されます。
- 必要な詳細、Name、Max. Threads、Keep-Alive Timeout の値を指定します。
- Save ボタンをクリックして新しいスレッドプールを追加するか、 Cancel リンクをクリックして取り消しします。
- Save ボタンをクリックすると、ダイアログが閉じられ、新しいスレッドプールが一覧に表示されます。
- Cancel をクリックするとダイアログが閉じられ、新しいスレッドプールは作成されません。
手順19.10 CLI を使用したスレッドプールの作成
- CLI ツールを起動し、サーバーに接続します。「管理 CLI を使用した管理対象サーバーインスタンスへの接続」を参照してください。
- 次の構文で
add操作を使用します。/subsystem=ejb3/thread-pool=THREADPOOLNAME:add(max-threads=MAXSIZE, keepalive-time={"time"=>"TIME", "unit"=>UNIT"})- THREADPOOLNAME をスレッドプールの必要な名前に置き換えます。
- MAXSIZE を スレッドプールの最大サイズに置き換えます。
- UNIT を必要な keep-alive 時間に使用される時間単位に置き換えます。使用可能な値は
NANOSECONDS、MICROSECONDS、MILLISECONDS、SECONDS、MINUTES,HOURS、DAYSです。 - TIME を必要な keep-alive 時間の整数値に置き換えます。この値は UNIT の数になります。
read-resource操作を使用して Bean プールの作成を確認します。/subsystem=ejb3/strict-max-bean-instance-pool=THREADPOOLNAME:read-resource
例19.7 CLI を使用したスレッドプールの作成
[standalone@localhost:9999 /] /subsystem=ejb3/thread-pool=testmepool:add(max-threads=50, keepalive-time={"time"=>"150", "unit"=>"SECONDS"})
{"outcome" => "success"}
[standalone@localhost:9999 /]例19.8 XML 設定の例
<subsystem xmlns="urn:jboss:domain:ejb3:1.2">
<thread-pools>
<thread-pool name="default" max-threads="20" keepalive-time="150"/>
</thread-pools>
</subsystem>
19.3.3. スレッドプールの削除
要件
- 使用されているスレッドプールは削除できません。次のタスクを参照して、スレッドプールが使用されていないことを確認してください。
手順19.11 管理コンソールを使用した EJB スレッドプールの削除
- 管理コンソールへログインします。「管理コンソールへログイン」 を参照してください。
- 右上の Profile をクリックし、左側の Profile パネルの Container 項目を展開して、EJB 3 を選択します。次に、メインパネルから Thread Pools タブを選択します。

図19.7 EJB3 スレッドプールパネル
- 一覧より削除するスレッドプールを選択します。
- Remove ボタンをクリックします。Remove Item ダイアログが表示されます。
- OK ボタンをクリックして削除を実行するか、Cancel リンクをクリックして処理を取り消します。Ok ボタンをクリックすると、ダイアログが閉じられます。スレッドプールが削除され、一覧からも削除されます。Cancel をクリックするとダイアログが閉じられ、何も変更されません。
手順19.12 CLI を使用したスレッドプールの削除
- CLI ツールを起動し、サーバーに接続します。「管理 CLI を使用した管理対象サーバーインスタンスへの接続」を参照してください。
- 次の構文で
remove操作を使用します。/subsystem=ejb3/thread-pool=THREADPOOLNAME:remove
- THREADPOOLNAME をスレッドプールの名前に置き換えます。
例19.9 CLI を使用したスレッドプールの削除
[standalone@localhost:9999 /] /subsystem=ejb3/thread-pool=ACCTS_THREADS:remove
{"outcome" => "success"}
[standalone@localhost:9999 /]19.3.4. スレッドプールの編集
手順19.13 管理コンソールを使用したスレッドプールの編集
ログイン
管理コンソールへログインします。EJB3 スレッドプールタブへの移動
右上の Profile をクリックし、左側の Profile パネルの Container 項目を展開して、EJB 3 を選択します。次に、メインパネルから Thread Pools タブを選択します。
図19.8 EJB3 スレッドプールタブ
編集するスレッドプールの選択
一覧より編集するスレッドプールを選択します。Edit ボタンのクリック
Details エリアのフィールドが編集可能になります。詳細の編集
変更したい詳細を編集します。Thread Factory、Max Threads、Keepalive Timeout、Keepalive Timeout Unitの値のみが編集可能です。保存またはキャンセル
変更を保存するには Save ボタンをクリックします。変更を破棄するには Cancel リンクをクリックします。
手順19.14 CLI を使用したスレッドプールの編集
- CLI ツールを起動し、サーバーに接続します。「管理 CLI を使用した管理対象サーバーインスタンスへの接続」を参照してください。
- スレッドプールの各属性を変更するために、次の構文で
write-attribute操作を使用します。/subsystem=ejb3/thread-pool=THREADPOOLNAME:write-attribute(name="ATTRIBUTE", value="VALUE")
- THREADPOOLNAME をスレッドプールの名前に置き換えます。
- ATTRIBUTE を、編集する属性の名前に置き換えます。このように編集できる属性は、
keepalive-time、max-threads、およびthread-factoryです。 - VALUE を属性の必要な値に置き換えます。
read-resource操作を使用して、スレッドプールへの変更を確認します。/subsystem=ejb3/thread-pool=THREADPOOLNAME:read-resource
重要
keepalive-time 属性の値を CLI で変更する場合、必要な値はオブジェクト表現です。構文は次のとおりです。
/subsystem=ejb3/thread-pool=THREADPOOLNAME:write-attribute(name="keepalive-time", value={"time" => "VALUE","unit" => "UNIT"}例19.10 CLI を使用したスレッドプールの最大値の設定
[standalone@localhost:9999 /] /subsystem=ejb3/thread-pool=HSThreads:write-attribute(name="max-threads", value="50")
{"outcome" => "success"}
[standalone@localhost:9999 /]例19.11 CLI を使用したスレッドプールの keepalive-time 時間値の設定
[standalone@localhost:9999 /] /subsystem=ejb3/thread-pool=HSThreads:write-attribute(name="keepalive-time", value={"time"=>"150"})
{"outcome" => "success"}
[standalone@localhost:9999 /]19.4. セッション Bean の設定
19.4.1. セッション Bean のアクセスタイムアウト
@javax.ejb.AccessTimeout アノテーションを用いて、使用するタイムアウトの値と時間の単位を指定できます。セッション Bean (すべての Bean のメソッドに適用) や特定のメソッドに指定し、Bean の設定を上書きできます。
19.4.2. デフォルトセッション Bean アクセスタイムアウト値の設定
手順19.15 管理コンソールを使用してデフォルトのセッション Bean アクセスタイムアウト値を設定
- 管理コンソールへログインします。「管理コンソールへログイン」 を参照してください。
- 右上の Profile をクリックし、左側の Profile パネルの Container 項目を展開して、EJB 3 を選択します。次に、メインパネルから Container タブを選択します。

図19.9 管理コンソールの EJB3 コンテナー設定パネル (スタンドアロンサーバー)
- Edit ボタンをクリックします。Details 領域のフィールドが編集可能になります。
- Stateful Access Timeout または Singleton Access Timeout テキストボックスに必要な値を入力します。
- Save ボタンをクリックして変更を維持するか、 Cancel リンクをクリックして変更を破棄します。
- Details 領域が編集不可になり、正しいタイムアウト値が表示されます。
手順19.16 CLI を使用したセッション Bean のアクセスタイムアウト値の設定
- CLI ツールを起動し、サーバーに接続します。「管理 CLI を使用した管理対象サーバーインスタンスへの接続」を参照してください。
- 次の構文で
write-attribute操作を使用します。/subsystem=ejb3:write-attribute(name="BEANTYPE", value=TIME)
- BEANTYPE は、ステートフルセッション Bean の
default-stateful-bean-access-timeoutまたはシングルトンセッション Bean のdefault-singleton-bean-access-timeoutに置き換えます。 - TIME を必要なタイムアウト値に置き換えます。
read-resource操作を使用して変更を確認します。/subsystem=ejb3:read-resource
例19.12 CLI を使用してデフォルトのステートフル Bean のアクセスタイムアウト値を 9000 に設定する
[standalone@localhost:9999 /] /subsystem=ejb3:write-attribute(name="default-stateful-bean-access-timeout", value=9000)
{"outcome" => "success"}
[standalone@localhost:9999 /]例19.13 XML 設定の例
<subsystem xmlns="urn:jboss:domain:ejb3:1.2">
<session-bean>
<stateless>
<bean-instance-pool-ref pool-name="slsb-strict-max-pool"/>
</stateless>
<stateful default-access-timeout="5000" cache-ref="simple"/>
<singleton default-access-timeout="5000"/>
</session-bean>
</subsystem>
19.5. メッセージ駆動型 Bean の設定
19.5.1. メッセージ駆動型 Bean のデフォルトリソースアダプターの設定
hornetq-ra です。
手順19.17 管理コンソールを使用したメッセージ駆動型 Bean のデフォルトリソースアダプターの設定
- 管理コンソールへログインします。「管理コンソールへログイン」 を参照してください。
- 右上の Profile をクリックし、左側の Profile パネルの Container 項目を展開して、EJB 3 を選択します。次に、メインパネルから Container タブを選択します。

図19.10 管理コンソールの EJB3 コンテナー設定パネル (スタンドアロンサーバー)
- Edit ボタンをクリックします。Details 領域のフィールドが編集可能になります。
- Default Resource Adapter テキストボックスに使用するリソースアダプターの名前を入力します。
- Save ボタンをクリックして変更を維持するか、 Cancel リンクをクリックして変更を破棄します。
- Details エリアが編集不可能になり、正しいリソースアダプター名が表示されます。
手順19.18 CLI を使用したメッセージ駆動型 Bean のデフォルトリソースアダプターの設定
- CLI ツールを起動し、サーバーに接続します。「管理 CLI を使用した管理対象サーバーインスタンスへの接続」を参照してください。
- 次の構文で
write-attribute操作を使用します。/subsystem=ejb3:write-attribute(name="default-resource-adapter-name", value="RESOURCE-ADAPTER")
RESOURCE-ADAPTER を使用されるリソースアダプターの名前に置き換えます。 read-resource操作を使用して変更を確認します。/subsystem=ejb3:read-resource
例19.14 CLI を使用したメッセージ駆動型 Bean のデフォルトリソースアダプターの設定
[standalone@localhost:9999 subsystem=ejb3] /subsystem=ejb3:write-attribute(name="default-resource-adapter-name", value="EDIS-RA")
{"outcome" => "success"}
[standalone@localhost:9999 subsystem=ejb3]例19.15 XML 設定の例
<subsystem xmlns="urn:jboss:domain:ejb3:1.2">
<mdb>
<resource-adapter-ref resource-adapter-name="hornetq-ra"/>
<bean-instance-pool-ref pool-name="mdb-strict-max-pool"/>
</mdb>
</subsystem>
19.6. EJB3 タイマーサービスの設定
19.6.1. EJB3 タイマーサービス
19.6.2. EJB3 タイマーサービスの設定
手順19.19 EJB3 タイマーサービスの設定
ログイン
管理コンソールへログインします。Timer Service タブを開く
右上の Profile をクリックし、左側の Profile パネルの Container 項目を展開して、EJB 3 を選択します。メインパネルから Services タブを選択した後、Timer Service タブを選択します。
図19.11 EJB3 Services パネルの Timer Service タブ
編集モードの入力
Edit ボタンをクリックします。フィールドが編集可能になります。必要な変更を追加します。
追加のスレッドプールが設定されている場合はタイマーサービスに使用される別の EJB3 スレッドプールを選択し、タイマーサービスデータの保存に使用されるディレクトリを変更することができます。タイマーサービスデータディレクトリの設定は、データが保存されるディレクトリであるPathと、Pathが含まれるディレクトリであるRelative Toの 2 つの値で構成されます。デフォルトではRelative Toはファイルシステムの Path 変数に設定されています。保存またはキャンセル
Save ボタンをクリックして変更を維持するか、 Cancel リンクをクリックして変更を破棄します。
19.7. EJB3 非同期呼び出しサービスの設定
19.7.1. EJB3 非同期呼び出しサービス
19.7.2. EJB3 非同期呼び出しサービスのスレッドプールの設定
手順19.20 EJB3 非同期呼び出しサービスのスレッドプールの設定
ログイン
管理コンソールへログインします。Async Service タブを開く
右上の Profile をクリックし、左側の Profile パネルの Container 項目を展開して、EJB 3 を選択します。メインパネルから Services タブを選択した後、Async Service タブを選択します。
図19.12 EJB3 Services パネルの Async Service タブ
編集モードの入力
Edit ボタンをクリックします。フィールドが編集可能になります。スレッドプールの選択
使用する EJB3 スレッドプールを一覧より選択します。スレッドプールが既に作成されていなければなりません。保存またはキャンセル
Save ボタンをクリックして変更を維持するか、 Cancel リンクをクリックして変更を破棄します。
19.8. EJB3 リモート呼び出しサービスの設定
19.8.2. EJB3 リモートサービスの設定
手順19.21 EJB3 リモートサービスの設定
ログイン
管理コンソールへログインします。Remote Service タブを開く
右上の Profile をクリックし、左側の Profile パネルの Container 項目を展開して、EJB 3 を選択します。メインパネルから Services タブを選択した後、Remote Service タブを選択します。
図19.13 EJB3 Services パネルの Remote Service タブ
編集モードの入力
Edit ボタンをクリックします。フィールドが編集可能になります。必要な変更の追加
追加のスレッドプールが設定されている場合はリモートサービスに使用される別の EJB3 スレッドプールを選択することができます。EJB リモーティングチャネルの登録に使用されるコネクターを変更できます。保存またはキャンセル
Save ボタンをクリックして変更を維持するか、 Cancel リンクをクリックして変更を破棄します。
19.9. EJB 2.x エンティティー Bean の設定
19.9.1. EJB セッション Bean
19.9.2. コンテナ管理による永続性
19.9.3. EJB 2.x のコンテナ管理による永続性の有効化
org.jboss.as.cmp 拡張子によって処理されます。CMP は管理対象ドメインや standalone-full.xml などのスタンドアロンサーバーの完全設定ではデフォルトで有効になっています。
org.jboss.as.cmp モジュールをサーバー設定ファイルの有効な拡張子の一覧に追加します。
<extensions>
<extension module="org.jboss.as.cmp"/>
</extensions>
org.jboss.as.cmp モジュールの拡張子エントリーを削除します。
19.9.4. EJB 2.x のコンテナ管理による永続性の設定
- UUID ベースのキージェネレーター
- UUID ベースのキージェネレーターは、Universally Unique Identifiers を使用してキーを生成します。UUID キージェネレーターは、一意の名前のみを持つ必要があり、他の設定は持ちません。UUID ベースのキージェネレーターは、以下のコマンド構文を使用して CLI で追加できます。
/subsystem=cmp/uuid-keygenerator=UNIQUE_NAME:add
例19.16 UUID キージェネレーターの追加
名前がuuid_identitiesの UUID ベースのキージェネレーターを追加するには、以下の CLI コマンドを使用します。/subsystem=cmp/uuid-keygenerator=uuid_identities:add
このコマンドで作成される XML 設定は以下のとおりです。<subsystem xmlns="urn:jboss:domain:cmp:1.0"> <key-generators> <uuid name="uuid_identities" /> </key-generators> </subsystem> - HiLo キージェネレーター
- HiLo キージェネレーターは、データベースを使用してエンティティー ID キーを作成および格納します。HiLo キージェネレーターは、一意の名前を持つ必要があり、データと、キーを格納するテーブルおよび列の名前を格納するために使用されるデータソースを指定するプロパティーで設定されます。HiLo キージェネレーターは、以下のコマンド構文を使用して CLI で追加できます。
/subsystem=cmp/hilo-keygenerator=UNIQUE_NAME/:add(property=value, property=value, ...)
例19.17 HiLo キージェネレーターの追加
/subsystem=cmp/hilo-keygenerator=DB_KEYS/:add(create-table=false,data-source=java:jboss/datasources/ExampleDS,drop-table=false,id-column=cmp_key_ids,select-hi-ddl=select max(cmp_key_ids) from cmp_key_seq,sequence-column=cmp_key_seq,table-name=cmp-keys))
このコマンドで作成される XML 設定は以下のとおりです。<subsystem xmlns="urn:jboss:domain:cmp:1.0"> <key-generators> <hilo name="DB_KEYS"> <create-table>false</create-table> <data-source>java:jboss/datasources/ExampleDS</data-source> <drop-table>false</drop-table> <id-column>cmp_key_ids</id-column> <select-hi-ddl>select max(cmp_key_ids) from cmp_key_seq</select-hi-ddl> <sequence-column>cmp_key_seq</sequence-column> <table-name>cmp-keys</table-name> </hilo> </key-generators> </subsystem>
19.9.5. HiLo キージェネレーター用の CMP サブシステムプロパティー
表19.1 HiLo キージェネレーター用の CMP サブシステムプロパティー
| プロパティー | データ型 | 説明 |
|---|---|---|
block-size | long |
-
|
create-table | boolean | TRUE に設定すると、table-name というテーブルが見つからない場合に create-table-ddl の内容を使用して table-name テーブルが作成されます。
|
create-table-ddl | string | table-name で指定されたテーブルが見つからず、かつ create-table が TRUE に設定されている場合に、そのテーブルを作成するために使用される DDL コマンド。
|
data-source | token |
データベースへの接続に使用するデータソース。
|
drop-table | boolean |
-
|
id-column | token |
-
|
select-hi-ddl | string | 現在保管されている中で最も大きなキーを返す SQL コマンド。 |
sequence-column | token |
-
|
sequence-name | token |
-
|
table-name | token |
キー情報の格納に使用されるテーブルの名前。
|
第20章 Java Connector Architecture (JCA)
20.1. はじめに
20.1.1. Java EE Connector API (JCA) について
20.1.2. Java Connector Architecture (JCA)
- 接続
- トランザクション
- セキュリティ
- ライフサイクル
- 作業インスタンス
- トランザクションインフロー
- メッセージインフロー
20.1.3. リソースアダプター
20.2. Java Connector Architecture (JCA) サブシステムの設定
- アーカイブの検証
- この設定はデプロイメントユニット上でアーカイブの検証が実行されるかどうかを決定します。
- アーカイブの検証に設定できる属性は下表のとおりです。
表20.1 アーカイブ検証の属性
属性 デフォルト値 説明 enabledtrue アーカイブの検証が有効であるかどうかを指定します。fail-on-errortrue アーカイブ検証のエラーレポートによってデプロイメントが失敗するかどうかを指定しますfail-on-warnfalse アーカイブ検証の警告レポートによってデプロイメントが失敗するかどうかを指定します。 - アーカイブ検証が有効な状態で、アーカイブが Java EE Connector Architecture 仕様を正しく実装しない場合、デプロイメント中に問題を説明するエラーメッセージが表示されます。例は次のとおりです。
Severity: ERROR Section: 19.4.2 Description: A ResourceAdapter must implement a "public int hashCode()" method. Code: com.mycompany.myproject.ResourceAdapterImpl Severity: ERROR Section: 19.4.2 Description: A ResourceAdapter must implement a "public boolean equals(Object)" method. Code: com.mycompany.myproject.ResourceAdapterImpl
- アーカイブ検証が指定されていない場合は、アーカイブ検証が指定されているとみなされ、
enabled属性のデフォルトが true に設定されます。
- Bean の検証
- この設定はデプロイメントユニット上で Bean の検証 (JSR-303) が実行されるかどうかを決定します。
- Bean の検証に設定できる属性は下表のとおりです。
表20.2 Bean 検証の属性
属性 デフォルト値 説明 enabledtrue Bean の検証が有効であるかどうかを指定します。 - Bean 検証が指定されていない場合は、Bean 検証が指定されているとみなされ、
enabled属性のデフォルトが true に設定されます。
- ワークマネージャー
- ワークマネージャーには次の 2 種類があります。
- デフォルトワークマネージャー
- デフォルトのワークマネージャーおよびそのスレッドプール。
- カスタムワークマネージャー
- カスタムワークマネージャーの定義およびそのスレッドプール。
- ワークマネージャーに設定できる属性は下表のとおりです。
表20.3 ワークマネージャーの属性
属性 説明 nameワークマネージャーの名前を指定します。カスタムワークマネージャーは必須になります。short-running-threads標準の Work インスタンスのスレッドプール。ワークマネージャーごとに短時間実行されるスレッドプールが 1 つあります。long-running-threadsLONG_RUNNINGヒントを設定する JCA 1.6 Work インスタンスのスレッドプール。各ワークマネージャーはオプションの長期スレッドプールを 1 つ持てます。 - ワークマネージャーのスレッドプールに設定できる属性は下表のとおりです。
表20.4 スレッドプールの属性
属性 説明 allow-core-timeoutコアスレッドがタイムアウトするかどうかを決定するブール値の設定。デフォルト値は false です。core-threadsコアスレッドプールのサイズ。スレッドプールの最大サイズより小さくなければなりません。queue-lengthキューの最大長。max-threadスレッドプールの最大サイズ。keepalive-timeワーク実行後にスレッドプールが保持される期間を指定します。thread-factoryスレッドファクトリへの参照。
- ブートストラップコンテキスト
- カスタムのブートストラップコンテキストを定義するために使用されます。
- ブートストラップコンテキストに設定できる属性は下表のとおりです。
表20.5 ブートストラップコンテキストの属性
属性 説明 nameブートストラップコンテキストの名前を指定します。workmanagerこのコンテキストに使用するワークマネージャーの名前を指定します。
- キャッシュ済み接続マネージャー
- 接続のデバッグ、およびトランザクションにおける接続の lazy enlistment のサポートに使用されます。また、接続がアプリケーションによって適切に使用およびリリースされるかどうかを追跡します。
- キャッシュ済みの接続マネージャーに設定できる属性は下表のとおりです。
表20.6 キャッシュ済み接続マネージャーの属性
属性 デフォルト値 説明 debugfalse 接続を明示的に閉じるた障害時に警告を出力します。errorfalse 接続を明示的に閉じるため、障害時に例外をスローします。
手順20.1 管理コンソールを使用した JCA サブシステムの設定
- JBoss Enterprise Application Platform 6 の JCA can be configured in the Management Console. JCA 設定オプションは、サーバーがどのように実行されているかに応じて、管理コンソールの若干異なる場所に存在します。JCA 設定オプションは、どのようにサーバーが実行されているかに応じて、管理コンソールの若干異なる場所に存在します。
- サーバーがスタンドアロンサーバーとして実行されている場合は、次の手順を実行します。
- 右上の Profile リンクをクリックして Profile ビューに切り替えます。
- 左側のナビゲートパネルの Profile セクションが展開されていることを確認します。
- Connector をクリックして添加し位、JCA をクリックします。
- サーバーが管理対象ドメインの一部として実行されている場合は、次の手順を実行します。
- 右上の Profile リンクをクリックして Profile ビューをに切り替えます。
- 左側のナビゲートパネル最上部の Profile メニューから変更するプロファイルを選択します。
- Connector をクリックして添加し位、JCA をクリックします。
- 3 つのタブを使用して JCA サブシステムを設定します。
共通設定
Common Config タブには、キャッシュ済み接続マネージャー、アーカイブ検証、および Bean 検証 (JSR-303) の設定が含まれます。また、これらの各設定は独自のタブに含まれます。これらの設定を変更するには、適切なタブを開き、編集ボタンをクリックして必要な変更を行い、保存ボタンをクリックします。
図20.1 JCA 共通設定
ワークマネージャー
Work Manager タブには、設定されたワークマネージャーのリストが含まれます。新しいワークマネージャーを追加および削除でき、スレッドプールをここで設定できます。各ワークマネージャーは短時間実行されるスレッドプールを 1 つ持つことができ、任意で長時間実行されるスレッドプールを 1 つ持つことができます。
図20.2 ワークマネージャー
スレッドプールの属性は以下で設定できます。
図20.3 ワークマネージャースレッドプール
ブートストラップコンテキスト
Bootstrap Contexts タブには、設定されたブートストラップコンテキストのリストが含まれます。新しいブートストラップコンテキストオブジェクトを追加、削除、および設定できます。各ブートストラップコンテキストをワークマネージャーに割り当てる必要があります。
図20.4 ブートストラップコンテキスト
20.3. リソースアダプターのデプロイ
手順20.2 管理 CLI を使用したリソースアダプターのデプロイ
- 使用しているオペレーティングシステムのコマンドプロンプトを開きます。
- 管理 CLI へ接続します。
- Linux の場合は、コマンドラインで以下を入力します。
$ EAP_HOME/bin/jboss-cli.sh --connect $ Connected to standalone controller at localhost:9999
- Windows の場合は、コマンドラインで以下を入力します。
C:\>EAP_HOME\bin\jboss-cli.bat --connect C:\> Connected to standalone controller at localhost:9999
- リソースアダプターをデプロイします。
- リソースアダプターをスタンドアロンサーバーへデプロイするには、次のコマンドラインを入力します。
$ deploy path/to/resource-adapter-name.rar
- リソースアダプターを管理対象ドメインのすべてのサーバーグループにデプロイするには、次のコマンドラインを入力します。
$ deploy path/to/resource-adapter-name.rar --all-server-groups
手順20.3 Web ベースの管理コンソールを使用したリソースアダプターのデプロイ
- JBoss Enterprise Application Platform 6 サーバーを起動します。
- 管理ユーザーを追加していない場合は、ここで追加します。詳細は、JBoss Enterprise Application Platform 6 インストールガイドの「JBoss Enterprise Application Platform 6 を初めて使用」の章を参照してください。
- Web ブラウザーを開き、管理コンソールへ移動します。デフォルトの場所は http://localhost:9990/console/ です。管理コンソールについての詳細は 「管理コンソールへログイン」 を参照してください。
- 右上にある Runtime リンクをクリックして Runtime ビューに切り替えた後、左のナビゲーションパネルにある Manage Deployments を選択して右上にある Add Content をクリックします。

図20.5 デプロイメントの管理 - コンテンツの追加
- リソースアダプターアーカイブを閲覧して選択した後、Next をクリックします。

図20.6 デプロイメントの選択
- デプロイ名を検証した後、Save をクリックします。

図20.7 デプロイメント名の検証
- この時点で、リソースアダプターアーカイブが無効の状態でリストに表示されるはずです。Enable リンクをクリックして有効にします。

図20.8 デプロイメントの有効化
- 「Are you sure?」 (本当にリストされた RAR を有効にしたいですか) という内容のダイアログが表示されます。Confirm をクリックするとリソースアダプターアーカイブの状態が
Enabledと表示されます。
図20.9 デプロイメント
手順20.4 手作業によるリソースアダプターのデプロイ
- リソースアダプターアーカイブをサーバーデプロイメントディレクトリへコピーします。
- スタンドアロンサーバーの場合、リソースアダプターアーカイブを
EAP_HOME/standalone/deployments/ディレクトリへコピーします。 - 管理対象ドメインの場合、リソースアダプターアーカイブをドメインコントローラーの
EAP_HOME/domain/deployments/ディレクトリへコピーします。
20.4. デプロイされたリソースアダプターの設定
注記
[standalone@localhost:9999 /] プロンプトの後にコマンドラインを入力する必要があります。波括弧の間にテキストを入力しないでください。コマンドを入力すると、{"outcome" => "success"} (出力例) のような出力が生成されます。
手順20.5 管理 CLI を使用したリソースアダプターの設定
- オペレーティングシステムのコマンドプロンプトを開きます。
- 管理 CLI へ接続します。
- Linux の場合は、コマンドラインで以下を入力します。
$ EAP_HOME/bin/jboss-cli.sh --connect
次のような出力が表示されるはずです。$ Connected to standalone controller at localhost:9999
- Windows の場合は、コマンドラインで以下を入力します。
C:\>EAP_HOME\bin\jboss-cli.bat --connect
次のような出力が表示されるはずです。C:\> Connected to standalone controller at localhost:9999
- リソースアダプター設定を追加します。
[standalone@localhost:9999 /] /subsystem=resource-adapters/resource-adapter=eis.rar:add(archive=eis.rar, transaction-support=XATransaction) {"outcome" => "success"} serverリソースアダプターレベル <config-property> を設定します。[standalone@localhost:9999 /] /subsystem=resource-adapters/resource-adapter=eis.rar/config-properties=server/:add(value=localhost) {"outcome" => "success"}portリソースアダプターレベル <config-property> を設定します。[standalone@localhost:9999 /] /subsystem=resource-adapters/resource-adapter=eis.rar/config-properties=port/:add(value=9000) {"outcome" => "success"}- 管理対象接続ファクトリの接続定義を追加します。
[standalone@localhost:9999 /] /subsystem=resource-adapters/resource-adapter=eis.rar/connection-definitions=cfName:add(class-name=com.acme.eis.ra.EISManagedConnectionFactory, jndi-name=java:/eis/AcmeConnectionFactory) {"outcome" => "success"} name管理対象接続ファクトリレベル <config-property> を設定します。[standalone@localhost:9999 /] /subsystem=resource-adapters/resource-adapter=eis.rar/connection-definitions=cfName/config-properties=name/:add(value=Acme Inc) {"outcome" => "success"}- 管理オブジェクトを追加します。
[standalone@localhost:9999 /] /subsystem=resource-adapters/resource-adapter=eis.rar/admin-objects=aoName:add(class-name=com.acme.eis.ra.EISAdminObjectImpl, jndi-name=java:/eis/AcmeAdminObject) {"outcome" => "success"} threshold管理オブジェクトプロパティーを設定します。[standalone@localhost:9999 /] /subsystem=resource-adapters/resource-adapter=eis.rar/admin-objects=aoName/config-properties=threshold/:add(value=10) {"outcome" => "success"}- リソースアダプターをアクティベートします。
[standalone@localhost:9999 /] /subsystem=resource-adapters/resource-adapter=eis.rar:activate {"outcome" => "success"} - 新しく設定されアクティベートされたリソースアダプターを表示します。
[standalone@localhost:9999 /] /subsystem=resource-adapters/resource-adapter=eis.rar:read-resource(recursive=true) { "outcome" => "success", "result" => { "archive" => "eis.rar", "beanvalidationgroups" => undefined, "bootstrap-context" => undefined, "transaction-support" => "XATransaction", "admin-objects" => {"aoName" => { "class-name" => "com.acme.eis.ra.EISAdminObjectImpl", "enabled" => true, "jndi-name" => "java:/eis/AcmeAdminObject", "use-java-context" => true, "config-properties" => {"threshold" => {"value" => 10}} }}, "config-properties" => { "server" => {"value" => "localhost"}, "port" => {"value" => 9000} }, "connection-definitions" => {"cfName" => { "allocation-retry" => undefined, "allocation-retry-wait-millis" => undefined, "background-validation" => false, "background-validation-millis" => undefined, "blocking-timeout-wait-millis" => undefined, "class-name" => "com.acme.eis.ra.EISManagedConnectionFactory", "enabled" => true, "flush-strategy" => "FailingConnectionOnly", "idle-timeout-minutes" => undefined, "interleaving" => false, "jndi-name" => "java:/eis/AcmeConnectionFactory", "max-pool-size" => 20, "min-pool-size" => 0, "no-recovery" => undefined, "no-tx-separate-pool" => false, "pad-xid" => false, "pool-prefill" => false, "pool-use-strict-min" => false, "recovery-password" => undefined, "recovery-plugin-class-name" => undefined, "recovery-plugin-properties" => undefined, "recovery-security-domain" => undefined, "recovery-username" => undefined, "same-rm-override" => undefined, "security-application" => undefined, "security-domain" => undefined, "security-domain-and-application" => undefined, "use-ccm" => true, "use-fast-fail" => false, "use-java-context" => true, "use-try-lock" => undefined, "wrap-xa-resource" => true, "xa-resource-timeout" => undefined, "config-properties" => {"name" => {"value" => "Acme Inc"}} }} } }
手順20.6 Web ベースの管理コンソールを使用したリソースアダプターの設定
- JBoss Enterprise Application Platform 6 サーバーを起動します。
- 管理ユーザーを追加していない場合は、ここで追加します。詳細は、JBoss Enterprise Application Platform 6 インストールガイドの「JBoss Enterprise Application Platform 6 を初めて使用」の章を参照してください。
- Web ブラウザーを開き、管理コンソールへ移動します。デフォルトの場所は http://localhost:9990/console/ です。管理コンソールについての詳細は 「管理コンソールへログイン」 を参照してください。
- 右上にある Profile リンクをクリックして Profile ビューに切り替えた後、左のナビゲーションパネルにある Resource Adapters を選択して右上にある Add をクリックします。

図20.10 JCA リソースアダプター
- アーカイブ名を入力し、TX: ドロップダウンボックスよりトランザクションタイプ
XATransactionを選択した後、Save をクリックします。
図20.11 リソースアダプターの作成
- Properties タブを選択した後、Add をクリックしてリソースアダプタープロパティーを追加します。

図20.12 リソースアダプタープロパティーの追加
- Name に
serverを入力し、Value にホスト名 (例:localhost) を入力します。Save をクリックしてプロパティーを保存します。
図20.13 リソースアダプターサーバープロパティーの追加
- Name に
portを入力し、Value にポート番号 (例:9000) を入力します。Save をクリックしてプロパティーを保存します。
図20.14 リソースアダプターポートプロパティーの追加
- この時点で
serverおよびportプロパティーが Properties パネルに表示されます。一覧表示されたリソースアダプターの Option カラム下にある View リンクをクリックし、Connection Definitions を表示します。
図20.15 リソースアダプターサーバープロパティーの完了
- ページの右上にある Add をクリックし、接続定義を追加します。

図20.16 接続定義の追加
- JNDI Name と Connection Class の完全修飾クラス名を入力し、Next をクリックします。

図20.17 接続定義プロパティーの作成 - 手順 1
- Add をクリックし、この接続定義の Key および Value データを入力します。

図20.18 接続定義プロパティーの作成 - 手順 2
- Key カラム下の
nameフィールドをクリックし、そのフィールドのデータ入力を有効にします。プロパティー名を入力し、入力が終了したら Enter を押します。Value カラム下のvalueフィールドをクリックし、そのフィールドのデータ入力を有効にします。プロパティーの値を入力し、入力が終了したら Enter を押します。Save をクリックしてプロパティーを保存します。
図20.19 接続定義プロパティーの作成 - 手順 2
- これで接続定義は完了しましたが、無効の状態になっています。Enable をクリックして接続定義を有効にします。

図20.20 接続定義の作成 - 無効
- JNDI 名に対し「Really modify Connection Definition?」(本当に接続定義を編集しますか) という内容のダイアログが表示されます。Confirm をクリックします。この時点で 接続定義の状態が
Enabledと表示されるはずです。
図20.21 有効になった接続定義
- ページ上部の中央部にある Admin Objects をクリックし、管理オブジェクトを作成および設定します。その後、Add をクリックします。

図20.22 使用可能な管理オブジェクト
- 管理オブジェクトの JNDI Name と完全修飾 Class Name を入力します。入力後、Save をクリックします。

図20.23 管理オブジェクトの作成
- Properties タブを選択した後、Add をクリックして管理オブジェクトプロパティーを追加します。

図20.24 管理オブジェクトプロパティーの追加
- Name フィールドに管理オブジェクト設定プロパティー (例:
threshold) を入力します。Value フィールドに設定プロパティー値 (例:10) を入力します。すべて入力後、Save をクリックしてプロパティーを保存します。
図20.25 管理オブジェクト設定プロパティーの作成
- これで管理オブジェクトは完了しましたが、無効の状態になっています。Enable をクリックして管理オブジェクトを有効にします。

図20.26 管理オブジェクト - 無効
- JNDI 名に対し「Really modify Admin Object?」(本当に管理オブジェクトを編集しますか) という内容のダイアログが表示されます。Confirm をクリックします。この時点で管理オブジェクトの状態が
Enabledと表示されるはずです。
図20.27 有効になった接続定義
- この処理を完了するにはサーバー設定をリロードする必要があります。右上にある Runtime リンクをクリックして Runtime ビューに切り替えた後、左のナビゲーションパネルにある Configuration を選択して右側の Reload をクリックします。

図20.28 サーバー設定のリロード
- 指定のサーバーに対し「Do you want to reload the server configuration?」(サーバー設定をリロードしますか) という内容のダイアログが表示されます。Confirm をクリックします。これでサーバー設定が最新の状態になります。

図20.29 有効になった接続定義
手順20.7 手作業によるリソースサーバーの設定
- JBoss Enterprise Application Platform サーバーを停止します。
重要
変更がサーバーの再起動後にも維持されるようにするには、サーバー設定ファイルの編集前にサーバーを停止する必要があります。 - 編集するため、サーバー設定ファイルを開きます。
- スタンドアロンサーバーの場合は
EAP_HOME/standalone/configuration/standalone.xmlファイルになります。 - 管理対象ドメインの場合は
EAP_HOME/domain/configuration/domain.xmlファイルになります。
- 設定ファイルで
urn:jboss:domain:resource-adaptersサブシステムを探します。 - このサブシステムに対して定義されたリソースアダプターがない場合、最初に以下を置き換えます。
<subsystem xmlns="urn:jboss:domain:resource-adapters:1.0"/>
以下のように置き換えます。<subsystem xmlns="urn:jboss:domain:resource-adapters:1.0"> <resource-adapters> <!-- <resource-adapter> configuration listed below --> </resource-adapters> </subsystem> <!-- <resource-adapter> configuration listed below -->をリソースアダプターの XML 定義に置き換えます。前述の管理 CLI および Web ベース管理コンソールを使用して作成されたリソースアダプター設定の XML は次のとおりです。<resource-adapter> <archive> eis.rar </archive> <transaction-support>XATransaction</transaction-support> <config-property name="server"> localhost </config-property> <config-property name="port"> 9000 </config-property> <connection-definitions> <connection-definition class-name="com.acme.eis.ra.EISManagedConnectionFactory" jndi-name="java:/eis/AcmeConnectionFactory" pool-name="java:/eis/AcmeConnectionFactory"> <config-property name="name"> Acme Inc </config-property> </connection-definition> </connection-definitions> <admin-objects> <admin-object class-name="com.acme.eis.ra.EISAdminObjectImpl" jndi-name="java:/eis/AcmeAdminObject" pool-name="java:/eis/AcmeAdminObject"> <config-property name="threshold"> 10 </config-property> </admin-object> </admin-objects> </resource-adapter>サーバーを起動する
JBoss Enterprise Application Platform サーバーを再起動し、新しい設定で実行します。
20.5. リソースアダプター記述子リファレンス
表20.7 主要な要素
| 要素 | 説明 |
|---|---|
bean-validation-groups | 使用する必要がある Bean 検証グループを指定します。 |
bootstrap-context | 使用する必要があるブートストラップコンテキストの一意な名前を指定します。 |
config-property | config-property は、リソースアダプター設定プロパティーを指定します。 |
transaction-support | このリソースアダプターによりサポートされたトランザクションのタイプを定義します。有効値は NoTransaction、LocalTransaction、XATransaction です。 |
connection-definitions | 接続定義を指定します。 |
admin-objects | 管理オブジェクトを指定します。 |
表20.8 Bean 有効グループ要素
| 要素 | 説明 |
|---|---|
bean-validation-group | 検証に使用する Bean 検証グループの完全修飾クラス名を指定します。 |
表20.9 接続定義/管理オブジェクト属性
| 属性 | 説明 |
|---|---|
class-name | 管理対象接続ファクトリーまたは管理オブジェクトの完全修飾クラス名を指定します。 |
jndi-name | JNDI 名を指定します。 |
enabled | オブジェクトをアクティベートするかどうか。 |
use-java-context | java:/ JNDI コンテキストを使用するかどうかを指定します。 |
pool-name | オブジェクトのプール名を指定します。 |
use-ccm | キャッシュ済み接続マネージャーを有効にします。 |
表20.10 接続定義要素
| 要素 | 説明 |
|---|---|
config-property | config-property は、管理対象接続ファクトリー設定プロパティーを指定します。 |
pool | プール設定を指定します。 |
xa-pool | XA プール設定を指定します。 |
security | セキュリティー設定を指定します。 |
timeout | タイムアウト設定を指定します。 |
validation | 検証設定を指定します。 |
recovery | XA リカバリー設定を指定します。 |
表20.11 プール要素
| 要素 | 説明 |
|---|---|
min-pool-size | min-pool-size 要素は、プールが保持する最小接続数を指定します。これらは、接続の要求からサブジェクトが既知になるまで作成されません。このデフォルト値は 0 です。 |
max-pool-size | max-pool-size 要素は、プールの最大接続数を指定します。各サブプールで作成できる最大接続数は、max-pool-size の接続数です。このデフォルト値は 20 です。 |
prefill | 接続プールを事前に満たすかどうかを指定します。デフォルトでは false です。 |
use-strict-min | min-pool-size を厳密と見なすかどうかを指定します。デフォルトは false です。 |
flush-strategy | エラー発生時にプールをどのようにフラッシュするかを指定します。有効値は FailingConnectionOnly (デフォルト値)、IdleConnections、EntirePool です。 |
表20.12 XA プール要素
| 要素 | 説明 |
|---|---|
min-pool-size | min-pool-size 要素は、プールが保持する最小接続数を指定します。これらは、接続の要求からサブジェクトが既知になるまで作成されません。このデフォルト値は 0 です。 |
max-pool-size | max-pool-size 要素は、プールの最大接続数を指定します。各サブプールで作成できる最大接続数は、max-pool-size の接続数です。このデフォルト値は 20 です。 |
prefill | 接続プールを事前に満たすかどうかを指定します。デフォルトでは false です。 |
use-strict-min | min-pool-size を厳密と見なすかどうかを指定します。デフォルトは false です。 |
flush-strategy | エラー発生時にプールをどのようにフラッシュするかを指定します。有効値は FailingConnectionOnly (デフォルト値)、IdleConnections、EntirePool です。 |
is-same-rm-override | is-same-rm-override 要素を使用すると、javax.transaction.xa.XAResource.isSameRM(XAResource) が true を返すか、false を返すかを無条件に設定できます。 |
interleaving | XA 接続ファクトリのインターリービングを有効にする要素 |
no-tx-separate-pools | Oracle では、XA 接続を JTA トランザクションの内部と外部の両方で使用することが推奨されません。この問題を回避するには、さまざまなコンテキストに個別のサブプールを作成します。 |
pad-xid | Xid をパディングするかどうか |
wrap-xa-resource | XAResource インスタンスを org.jboss.tm.XAResourceWrapper インスタンスにラップするかどうか |
表20.13 セキュリティー要素
| 要素 | 説明 |
|---|---|
application | プール内の接続を区別するために、アプリケーションにより提供されたパラメーター (getConnection(user, pw) など) を使用することを指定します。 |
security-domain | プール内の接続を区別するために (セキュリティードメインからの) サブジェクトを使用することを指定します。security-domain の内容は認証を処理する JAAS セキュリティーマネージャーの名前です。この名前は、JAAS login-config.xml 記述子の application-policy/name 属性に相関します。 |
security-domain-and-application | プール内の接続を区別するために、アプリケーションにより提供されたパラメーター (getConnection(user, pw) など) または (セキュリティードメインからの) サブジェクトを使用することを指定します。security-domain の内容は認証を処理する JAAS セキュリティーマネージャーの名前です。この名前は、JAAS login-config.xml 記述子の application-policy/name 属性に相関します。 |
表20.14 タイムアウト要素
| 要素 | 説明 |
|---|---|
blocking-timeout-millis | blocking-timeout-millis 要素は、接続待機中にブロックする最大時間数 (ミリ秒単位) を指定します。この時間を超過すると、例外が送出されます。これは、接続許可の待機中にブロックするだけで、新規接続の作成に長時間要している場合は例外を送出しません。デフォルト値は 30000 (30 秒) です。 |
idle-timeout-minutes | idle-timeout-minutes 要素は、接続が閉じられるまでのアイドル最大時間 (分単位) を指定します。実際の最大時間は、IdleRemover スキャン時間 (プールの最小 idle-timeout-minutes の 1/2) に基づきます。 |
allocation-retry | allocation-retry 要素は、接続の割り当てを再試行する回数を指定します。その回数を超えると、例外が発生します。デフォルト値は 0 です。 |
allocation-retry-wait-millis | allocation-retry-wait-millis 要素は、接続割り当ての再試行間の時間 (ミリ秒単位) を指定します。デフォルト値は 5000 (5 秒) です。 |
xa-resource-timeout | XAResource.setTransactionTimeout() に渡されます。デフォルト値はゼロであり、セッターは呼び出されません。秒単位で指定されます。 |
表20.15 検証要素
| 要素 | 説明 |
|---|---|
background-validation | 接続をバックグラウンドで検証するか、使用する前に検証するかを指定する要素 |
background-validation-minutes | background-validation-minutes 要素は、バックグラウンド検証が実行される時間を分単位で指定します。 |
use-fast-fail | 無効な場合に最初の接続で接続割り当てを失敗させるか (true)、プールですべての接続が使用されるまで試行を続けるか (false) を指定します。デフォルト値は false です。 |
表20.16 管理オブジェクト要素
| 要素 | 説明 |
|---|---|
config-property | 管理オブジェクト設定プロパティーを指定します。 |
表20.17 復元要素
| 要素 | 説明 |
|---|---|
recover-credential | 復元に使用する名前とパスワードのペアまたはセキュリティードメインを指定します。 |
recover-plugin | org.jboss.jca.core.spi.recovery.RecoveryPlugin クラスの実装を指定します。 |
jboss-as-resource-adapters_1_0.xsd と http://docs.jboss.org/ironjacamar/schema/ironjacamar_1_0.xsd (自動アクティブ化用) で定義されます。
20.6. 定義された接続統計の表示
deployment=name.rar サブツリーより確認できます。
/subsystem レベルでは定義されていません。これは、standalone.xml または domain.xml ファイルの設定に定義されていない rar に対してアクセス可能にするためです。
例20.1
/deployment=example.rar/subsystem=resource-adapters/statistics=statistics/connection-definitions=java\:\/testMe:read-resource(include-runtime=true)
注記
false であるため、必ず include-runtime=true 引数を指定するようにしてください。
20.7. リソースアダプターの統計
サポートされるリソースアダプターの主要統計は下表のとおりです。
表20.18 主要統計
| 名前 | 説明 |
|---|---|
ActiveCount |
アクティブな接続の数。各接続はアプリケーションによって使用されているか、プールで使用可能な状態であるかのいずれかになります。
|
AvailableCount |
プールの使用可能な接続の数。
|
AverageBlockingTime |
プールの排他ロックの取得をブロックするために費やされた平均時間。値はミリ秒単位です。
|
AverageCreationTime |
接続の作成に費やされた平均時間。値はミリ秒単位です。
|
CreatedCount |
作成された接続の数。
|
DestroyedCount |
破棄された接続の数。
|
InUseCount |
現在使用中の接続の数。
|
MaxCreationTime |
接続の作成にかかった最大時間。値はミリ秒単位です。
|
MaxUsedCount |
使用される接続の最大数。
|
MaxWaitCount |
同時に接続を待機するリクエストの最大数。
|
MaxWaitTime |
プールの排他ロックを待つために費やされた最大時間。
|
TimedOut |
タイムアウトした接続の数。
|
TotalBlockingTime |
プールの排他ロックを待つために費やされた合計時間。値はミリ秒単位です。
|
TotalCreationTime |
接続の作成に費やされた合計時間。値はミリ秒単位です。
|
WaitCount |
接続を待つ必要があるリクエストの数。
|
20.8. WebSphere MQ リソースアダプターのデプロイ
WebSphere MQ は、分散型システム上のアプリケーションの相互通信を可能にする、IBM の Messaging Oriented Middleware (MOM) ソフトウェアです。この機能は、メッセージとメッセージキューを使用することによって実現します。WebSphere MQ はメッセージキューへのメッセージ配信と、メッセージチャネルを使用したその他のキューマネージャーへのデータ転送を行います。WebSphere MQ に関する詳しい情報は、WebSphere MQ を参照してください。
本トピックでは、JBoss Enterprise Application Platform 6 における WebSphere MQ Resource Adapter のデプロイと設定の手順について説明します。この作業は、設定ファイルを手動で編集する方法もしくは Management CLI ツールや Web ベースの管理コンソールを使用する方法で行うことができます。
作業を開始する前に、WebSphere MQ リソースアダプターのバージョンを確認して、一部の WebSphere MQ 設定プロパティーについて理解しておく必要があります。
- WebSphere MQ リソースアダプターは、
wmq.jmsra-VERSION.rarと呼ばれる Resource Archive (RAR) ファイルとして提供されます。7.0.1.7以降のバージョンを使用する必要があります。 - 以下の WebSphere MQ 設定プロパティーの値を知っておく必要があります。これらのプロパティーに関する詳細は、WebSphere MQ 製品ドキュメントを参照してください。
- MQ.QUEUE.MANAGER: WebSphere MQ キューマネージャーの名前
- MQ.HOST.NAME: WebSphere MQ キューマネージャーへの接続に使用するホストの名前
- MQ.CHANNEL.NAME: WebSphere MQ キューマネージャーへの接続に使用するサーバーチャネル
- MQ.QUEUE.NAME: 宛先キューの名前
- MQ.PORT: WebSphere MQ キューマネージャーへの接続に使用するポート
- MQ.CLIENT: トランスポートタイプ
- 送信接続には、以下の設定プロパティーに精通している必要があります。
- :MQ.CONNECTIONFACTORY.NAME: リモートシステムへの接続を提供する接続ファクトリインスタンスの名前
注記
手順20.8 リソースアダプターの手動でのデプロイ
- WebSphereMQ リソースアダプターにトランザクションサポートが必要な場合は、
wmq.jmsra-VERSION.rarアーカイブを再パッケージ化し、mqetclient.jarが含まれるようにします。これには次のコマンドを使用できます。[user@host ~]$
必ず VERSION を正しいバージョン番号に置き換えてください。jar -uf wmq.jmsra-VERSION.rar mqetclient.jar wmq.jmsra-VERSION.rarファイルをEAP_HOME/standalone/deployments/ディレクトリにコピーします。- サーバー設定ファイルにリソースアダプターを追加します。
- エディターで
EAP_HOME/standalone/configuration/standalone-full.xmlファイルを開きます。 - 設定ファイルで
urn:jboss:domain:resource-adaptersサブシステムを探します。 - このサブシステムに対して定義されているリソースアダプターがない場合、最初に以下を置き換えます。
<subsystem xmlns="urn:jboss:domain:resource-adapters:1.0"/>
以下のように置き換えます。<subsystem xmlns="urn:jboss:domain:resource-adapters:1.0"> <resource-adapters> <!-- <resource-adapter> configuration listed below --> </resource-adapters> </subsystem> - リソースアダプターの設定は、トランザクションサポートとリカバリが必要であるかどうかによって異なります。トランザクションサポートが必要でない場合は以下の最初の設定手順を選択します。トランザクションサポートが必要な場合は 2 番目の設定手順を選択します。
- 非トランザクションデプロイメントの場合、
<!-- <resource-adapter> configuration listed below -->を以下に置き換えます。<resource-adapter> <archive> wmq.jmsra-VERSION.rar </archive> <transaction-support>NoTransaction</transaction-support> <connection-definitions> <connection-definition class-name="com.ibm.mq.connector.outbound.ManagedConnectionFactoryImpl" jndi-name="java:jboss/MQ.CONNECTIONFACTORY.NAME" pool-name="MQ.CONNECTIONFACTORY.NAME"> <config-property name="channel"> MQ.CHANNEL.NAME </config-property> <config-property name="transportType"> MQ.CLIENT </config-property> <config-property name="queueManager"> MQ.QUEUE.MANAGER </config-property> <security> <security-domain>MySecurityDomain</security-domain> </security> </connection-definition> </connection-definitions> <admin-objects> <admin-object class-name="com.ibm.mq.connector.outbound.MQQueueProxy" jndi-name="java:jboss/MQ.QUEUE.NAME" pool-name="MQ.QUEUE.NAME"> <config-property name="baseQueueName"> MQ.QUEUE.NAME </config-property> </admin-object> </admin-objects> </resource-adapter>必ず VERSION を RAR 名の実際のバージョンに置き換えてください。 - トランザクションデプロイメントの場合、
<!-- <resource-adapter> configuration listed below -->を以下に置き換えます。<resource-adapter> <archive> wmq.jmsra-VERSION.rar </archive> <transaction-support>XATransaction</transaction-support> <connection-definitions> <connection-definition class-name="com.ibm.mq.connector.outbound.ManagedConnectionFactoryImpl" jndi-name="java:jboss/MQ.CONNECTIONFACTORY.NAME" pool-name="MQ.CONNECTIONFACTORY.NAME"> <config-property name="channel"> MQ.CHANNEL.NAME </config-property> <config-property name="transportType"> MQ.CLIENT </config-property> <config-property name="queueManager"> MQ.QUEUE.MANAGER </config-property> <security> <security-domain>MySecurityDomain</security-domain> </security> <recovery> <recover-credential> <user-name>USER_NAME</user-name> <password>PASSWORD</password> </recover-credential> </recovery> </connection-definition> </connection-definitions> <admin-objects> <admin-object class-name="com.ibm.mq.connector.outbound.MQQueueProxy" jndi-name="java:jboss/MQ.QUEUE.NAME" pool-name="MQ.QUEUE.NAME"> <config-property name="baseQueueName"> MQ.QUEUE.NAME </config-property> </admin-object> </admin-objects> </resource-adapter>必ず VERSION を RAR 名の実際のバージョンに置き換えてください。さらに、USER_NAME と PASSWORD も有効なユーザー名とパスワードに置き換える必要があります。注記
トランザクションをサポートするため、<transaction-support> 要素がXATransactionに設定されました。XA リカバリーをサポートするするため、<recovery> 要素が接続定義に追加されました。
- JBoss Enterprise Application Platform 6 で EJB3 メッセージングシステムのデフォルトプロバイダーを HornetQ から WebSphere MQ に変更するには、
urn:jboss:domain:ejb3:1.2サブシステムを以下のように変更します:以下を置き換えます。<mdb> <resource-adapter-ref resource-adapter-name="hornetq-ra"/> <bean-instance-pool-ref pool-name="mdb-strict-max-pool"/> </mdb>以下のように置き換えます。<mdb> <resource-adapter-ref resource-adapter-name="wmq.jmsra-VERSION.rar"/> <bean-instance-pool-ref pool-name="mdb-strict-max-pool"/> </mdb>必ず VERSION を RAR 名の実際のバージョンに置き換えてください。
手順20.9 リソースアダプターを使用するように MDB コードを変更します。
- 次のように、MDB コードの ActivationConfigProperty および ResourceAdapter を設定します。
@MessageDriven( name="WebSphereMQMDB", activationConfig = { @ActivationConfigProperty(propertyName = "destinationType",propertyValue = "javax.jms.Queue"), @ActivationConfigProperty(propertyName = "useJNDI", propertyValue = "false"), @ActivationConfigProperty(propertyName = "hostName", propertyValue = "MQ.HOST.NAME"), @ActivationConfigProperty(propertyName = "port", propertyValue = "MQ.PORT"), @ActivationConfigProperty(propertyName = "channel", propertyValue = "MQ.CHANNEL.NAME"), @ActivationConfigProperty(propertyName = "queueManager", propertyValue = "MQ.QUEUE.MANAGER"), @ActivationConfigProperty(propertyName = "destination", propertyValue = "MQ.QUEUE.NAME"), @ActivationConfigProperty(propertyName = "transportType", propertyValue = "MQ.CLIENT") }) @ResourceAdapter(value = "wmq.jmsra-VERSION.rar") @TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED) public class WebSphereMQMDB implements MessageListener { }必ず VERSION を RAR 名の実際のバージョンに置き換えてください。
第21章 Amazon EC2 での JBoss Enterprise Application Platform 6 のデプロイ
21.1. はじめに
21.1.1. Amazon EC2 について
21.1.2. Amazon Machine Instance (AMI) について
21.1.3. JBoss Cloud Access について
21.1.4. JBoss Cloud Access 機能
- Red Hat Enterprise Linux 6
- JBoss Enterprise Application Platform 6
- JBoss Operations Network (JON) 3 エージェント
- Red Hat Update Infrastructure を使用した RPM による製品アップデート
重要
21.1.5. サポートされる Amazon EC2 インスタンスタイプ
表21.1 サポートされる Amazon EC2 インスタンスタイプ
| インスタンスタイプ | 説明 |
|---|---|
| 標準インスタンス |
標準インスタンスは、memory-to-CPU 比率が調整された汎用的な環境です。
|
| 高メモリーインスタンス |
高メモリーインスタンスでは、標準インスタンスよりも多いメモリーが割り当てられます。高メモリーインスタンスは、データベースやメモリーキャッシングアプリケーションなどの高スループットアプリケーションに適しています。
|
| 高 CPU インスタンス |
高 CPU インスタンスでは、メモリーよりも多い CPU リソースが割り当てられるため、これはスループットが比較的低く、CPU リソースを大量に消費するアプリケーションに適しています。
|
重要
Micro (t1.micro) は、JBoss Enterprise Application Platform のデプロイメントに適していません。
21.1.6. サポート対象 Red Hat AMI
RHEL-osversion-JBEAP-6.0.0-arch-creationdate
6.2 など)。
x86_64 または i386 です。
20120501 など)。
RHEL-6.2-JBEAP-6.0.0-x86_64-20120501。
21.2. Amazon EC2 での JBoss Enterprise Application Platform 6 のデプロイ
21.2.1. Amazon EC2 での JBoss Enterprise Application Platform 6 のデプロイの概要
- JBoss Enterprise Application Platform 6 (https://access.redhat.com/site/documentation/JBoss_Enterprise_Application_Platform/)
- Red Hat Enterprise Linux 6 (https://access.redhat.com/site/documentation/Red_Hat_Enterprise_Linux/)
- Amazon Web Services (http://aws.amazon.com/documentation/)
21.2.2. 非クラスター化の JBoss Enterprise Application Platform 6
21.2.2.1. 非クラスターインスタンスについて
21.2.2.2. 非クラスターインスタンス
21.2.2.2.1. 非クラスター JBoss Enterprise Application Platform 6 インスタンスの起動
このトピックでは、Red Hat AMI (Amazon Machine Image) 上の JBoss Enterprise Application Platform 6 の非クラスターインスタンスを起動するために必要な手順について説明します。
要件
- 適切な Red Hat AMI。「サポート対象 Red Hat AMI」を参照してください。
- 少なくともポート 22、8080、および 9990 で受信要求を許可する事前設定済みセキュリティーグループ。
手順21.1 Red Hat AMI (Amazon Machine Image) 上の JBoss Enterprise Application Platform 6 の非クラスターインスタンスを起動する
例21.1 User Data フィールドの例
この例は、非クラスター JBoss Enterprise Application Platform 6 インスタンス用の User Data フィールドを示します。ユーザーadminのパスワードはadminpwdに設定されます。JBOSSAS_ADMIN_PASSWORD=adminpwd JBOSS_IP=0.0.0.0 #listen on all IPs and interfaces # In production, access to these ports needs to be restricted for security reasons PORTS_ALLOWED="9990 9443" cat> $USER_SCRIPT << "EOF" # Get the application to be deployed from an Internet URL # mkdir -p /usr/share/java/jboss-ec2-eap-applications # wget https://<your secure storage hostname>/<path>/<app name>.war -O /usr/share/java/jboss-ec2-eap-applications/<app name>.war # Create a file of CLI commands to be executed after starting the server cat> $USER_CLI_COMMANDS << "EOC" # deploy /usr/share/java/jboss-ec2-eap-applications/<app name>.war EOC EOF
本番稼働インスタンスの場合
本番環境インスタンスの場合は、次の行をUser DataフィールドのUSER_SCRIPT行の下に追加してセキュリティーアップデートが起動時に適用されるようにします。yum -y update
注記
yum -y updateを定期的に実行して、セキュリティー修正と拡張を適用する必要があります。- Red Hat AMI インスタンスを起動します。
JBoss Enterprise Application Platform 6 の非クラスターインスタンスが設定され、Red Hat AMI で起動されます。
21.2.2.2.2. 非クラスター JBoss Enterprise Application Platform インスタンスでのアプリケーションのデプロイ
このトピックでは、Red Hat AMI 上の非クラスター JBoss Enterprise Application Platform 6 インスタンスへのアプリケーションのデプロイについて説明します。
サンプルアプリケーションのデプロイ
次の行をUser Dataフィールドに追加します。# Deploy the sample application from the local filesystem deploy --force /usr/share/java/jboss-ec2-eap-samples/hello.war
例21.2 サンプルアプリケーションの User Data フィールドの例
この例では、Red Hat AMI で提供されたサンプルアプリケーションを使用します。また、非クラスター JBoss Enterprise Application Platform 6 インスタンスの基本的な設定も含まれます。ユーザーadminのパスワードがadminpwdに設定されています。JBOSSAS_ADMIN_PASSWORD=adminpwd JBOSS_IP=0.0.0.0 #listen on all IPs and interfaces # In production, access to these ports needs to be restricted for security reasons PORTS_ALLOWED="9990 9443" cat> $USER_SCRIPT << "EOF" # Create a file of CLI commands to be executed after starting the server cat> $USER_CLI_COMMANDS << "EOC" # Deploy the sample application from the local filesystem deploy --force /usr/share/java/jboss-ec2-eap-samples/hello.war EOC EOF
カスタムアプリケーションのデプロイ
次の行をUser Dataフィールドに追加し、アプリケーションメイト URL を設定します。# Get the application to be deployed from an Internet URL mkdir -p /usr/share/java/jboss-ec2-eap-applications wget https://<your secure storage hostname>/<path>/<app name>.war -O /usr/share/java/jboss-ec2-eap-applications/<app name>.war
例21.3 カスタムアプリケーションの User Data フィールドの例
この例では、MyAppと呼ばれるアプリケーションが使用され、非クラスター JBoss Enterprise Application Platform 6 インスタンスの基本的な設定が含まれます。ユーザーadminのパスワードがadminpwdに設定されます。JBOSSAS_ADMIN_PASSWORD=adminpwd JBOSS_IP=0.0.0.0 #listen on all IPs and interfaces # In production, access to these ports needs to be restricted for security reasons PORTS_ALLOWED="9990 9443" cat> $USER_SCRIPT << "EOF" # Get the application to be deployed from an Internet URL mkdir -p /usr/share/java/jboss-ec2-eap-applications wget https://PATH_TO_MYAPP/MyApp.war -O /usr/share/java/jboss-ec2-eap-applications/MyApp.war # Create a file of CLI commands to be executed after starting the server cat> $USER_CLI_COMMANDS << "EOC" deploy /usr/share/java/jboss-ec2-eap-applications/MyApp.war EOC EOF
- Red Hat AMI インスタンスを起動します。
アプリケーションが JBoss Enterprise Application Platform 6 に正常にデプロイされます。
21.2.2.2.3. 非クラスター化された JBoss Enterprise Application Platform 6 インスタンスのテスト
このトピックでは、非クラスター化された JBoss Enterprise Application Platform 6 が正常に実行されていることをテストするために必要な手順について説明します。
手順21.2 非クラスター化された JBoss Enterprise Application Platform 6 インスタンスが正常に実行されていることをテストする
- インスタンスの詳細ペインにあるインスタンスの
Public DNSを調べます。 http://<public-DNS>:8080に移動します。- 管理コンソールへのリンクを含む JBoss Enterprise Application Platform ホームページが表示されることを確認します。ホームページが表示されない場合は、「Amazon EC2 のトラブルシューティングについて」を参照してください。
- Admin Console ハイパーリンクをクリックします。
- ログイン:
- ユーザー名:
admin - パスワード:
User Dataフィールドで指定されます: 「非クラスター JBoss Enterprise Application Platform 6 インスタンスの起動」.
サンプルアプリケーションのテスト
http://<public-DNS>:8080/helloに移動して、サンプルアプリケーションが正常に実行されていることをテストします。テキストHello World!がブラウザーで表示されます。このテキストが表示されない場合は、「Amazon EC2 のトラブルシューティングについて」を参照してください。- JBoss Enterprise Application Platform 管理コンソールからログアウトします。
JBoss Enterprise Application Platform 6 インスタンスが正常に実行されます。
21.2.2.3. 非クラスター化管理対象ドメイン
21.2.2.3.1. ドメインコントローラーとして機能するインスタンスの起動
このトピックでは、Red Hat AMI (Amazon Machine Image) 上の非クラスター化された JBoss Enterprise Application Platform 6 管理対象ドメインを起動するために必要な手順について説明します。
要件
- 適切な Red Hat AMI。「サポート対象 Red Hat AMI」を参照してください。
手順21.3 Red Hat AMI (Amazon Machine Image) 上の非クラスター化された JBoss Enterprise Application Platform 6 管理対象ドメインを起動する
- Security Group タブですべてのトラフィックが許可されていることを確認します。アクセスを制限したい場合は、Red Hat Enterprise Linux のビルトインファイアウォール機能を使用できます。
- VPC のパブリックサブネットを running に設定します。
- 静的 IP を選択します。
例21.4 User Data フィールドの例
この例は、非クラスター化された JBoss Enterprise Application Platform 6 管理対象ドメイン用の User Data フィールドを示しています。ユーザーadminのパスワードはadminに設定されます。## password that will be used by slave host controllers to connect to the domain controller JBOSSAS_ADMIN_PASSWORD=admin ## subnet prefix this machine is connected to SUBNET=10.0.0. #### to run the example no modifications below should be needed #### JBOSS_DOMAIN_CONTROLLER=true PORTS_ALLOWED="9999 9990 9443" JBOSS_IP=`hostname | sed -e 's/ip-//' -e 'y/-/./'` #listen on public/private EC2 IP address cat > $USER_SCRIPT << "EOF" ## Get the application to be deployed from an Internet URL # mkdir -p /usr/share/java/jboss-ec2-eap-applications # wget https://<your secure storage hostname>/<path>/<app name>.war -O /usr/share/java/jboss-ec2-eap-applications/<app name>.war ## Create a file of CLI commands to be executed after starting the server cat> $USER_CLI_COMMANDS << "EOC" # Add the modcluster subsystem to the default profile to set up a proxy /profile=default/subsystem=web/connector=ajp:add(name=ajp,protocol=AJP/1.3,scheme=http,socket-binding=ajp) /:composite(steps=[ {"operation" => "add", "address" => [ ("profile" => "default"), ("subsystem" => "modcluster") ] },{ "operation" => "add", "address" => [ ("profile" => "default"), ("subsystem" => "modcluster"), ("mod-cluster-config" => "configuration") ], "advertise" => "false", "proxy-list" => "${jboss.modcluster.proxyList}", "connector" => "ajp"}, { "operation" => "add", "address" => [ ("profile" => "default"), ("subsystem" => "modcluster"), ("mod-cluster-config" => "configuration"), ("dynamic-load-provider" => "configuration") ]}, { "operation" => "add", "address" => [ ("profile" => "default"), ("subsystem" => "modcluster"), ("mod-cluster-config" => "configuration"), ("dynamic-load-provider" => "configuration"), ("load-metric" => "busyness")], "type" => "busyness"} ]) # Deploy the sample application from the local filesystem deploy /usr/share/java/jboss-ec2-eap-samples/hello.war --server-groups=main-server-group EOC ## this will workaround the problem that in a VPC, instance hostnames are not resolvable echo -e "127.0.0.1\tlocalhost.localdomain localhost" > /etc/hosts echo -e "::1\tlocalhost6.localdomain6 localhost6" >> /etc/hosts for (( i=1 ; i<255 ; i++ )); do echo -e "$SUBNET$i\tip-${SUBNET//./-}$i" ; done >> /etc/hosts EOF本番稼働インスタンスの場合
本番環境インスタンスの場合は、次の行をUser DataフィールドのUSER_SCRIPT行の下に追加してセキュリティーアップデートが起動時に適用されるようにします。yum -y update
注記
yum -y updateを定期的に実行して、セキュリティー修正と拡張を適用する必要があります。- Red Hat AMI インスタンスを起動します。
非クラスター化された JBoss Enterprise Application Platform 6 管理対象ドメインが設定され、Red Hat AMI で起動されます。
21.2.2.3.2. ホストコントローラーとして機能する 1 つまたは複数のインスタンスの起動
このトピックでは、Red Hat AMI (Amazon Machine Image) 上の非クラスターホストコントローラーとして機能する JBoss Enterprise Application Platform 6 の 1 つまたは複数のインスタンスを起動するために必要な手順について説明します。
要件
- 非クラスタードメインコントローラーを設定および起動します。「ドメインコントローラーとして機能するインスタンスの起動」 を参照してください。
手順21.4 ホストコントローラーの起動
- AMI を選択します。
- インスタンスの必要な数 (スレーブホストコントローラーの数) を定義します。
- VPC およびインスタンスタイプを選択します。
- Security Group をクリックします。
- JBoss Enterprise Application Platform サブネットからのすべてのトラフィックが許可されることを確認します。
- 必要に応じて他の制限を定義します。
- 以下の内容を User Data: フィールドに追加します。
## mod cluster proxy addresses MOD_CLUSTER_PROXY_LIST=10.0.0.4:7654 ## host controller setup JBOSS_DOMAIN_MASTER_ADDRESS=10.0.0.5 JBOSS_HOST_PASSWORD=<password for slave host controllers> ## subnet prefix this machine is connected to SUBNET=10.0.1. #### to run the example no modifications below should be needed #### JBOSS_HOST_USERNAME=admin PORTS_ALLOWED="1024:65535" JBOSS_IP=`hostname | sed -e 's/ip-//' -e 'y/-/./'` #listen on public/private EC2 IP address cat > $USER_SCRIPT << "EOF" ## Server instance configuration sed -i "s/other-server-group/main-server-group/" $JBOSS_CONFIG_DIR/$JBOSS_HOST_CONFIG ## this will workaround the problem that in a VPC, instance hostnames are not resolvable echo -e "127.0.0.1\tlocalhost.localdomain localhost" > /etc/hosts echo -e "::1\tlocalhost6.localdomain6 localhost6" >> /etc/hosts for (( i=1 ; i<255 ; i++ )); do echo -e "$SUBNET$i\tip-${SUBNET//./-}$i" ; done >> /etc/hosts EOF 本番稼働インスタンスの場合
本番環境インスタンスの場合は、次の行をUser DataフィールドのUSER_SCRIPT行の下に追加してセキュリティーアップデートが起動時に適用されるようにします。yum -y update
注記
yum -y updateを定期的に実行して、セキュリティー修正と拡張を適用する必要があります。- Red Hat AMI インスタンスを起動します。
JBoss Enterprise Application Platform 6 非クラスターホストコントローラーが設定され、Red Hat AMI で起動されます。
21.2.2.3.3. 非クラスター化された JBoss Enterprise Application Platform 6 管理対象ドメインのテスト
このトピックでは、Red Hat AMI (Amazon Machine Image) 上の非クラスター化された JBoss Enterprise Application Platform 6 管理対象ドメインをテストするために必要な手順について説明します。
要件
- ドメインコントローラーを設定および起動する必要があります。「ドメインコントローラーとして機能するインスタンスの起動」 を参照してください。
- ホストコントローラーを設定および起動する必要があります。「ホストコントローラーとして機能する 1 つまたは複数のインスタンスの起動」 を参照してください。
手順21.5 Web サーバーのテスト
- ブラウザーで
http://ELASTIC_IP_OF_APACHE_HTTPDに移動し、Web サーバーが正常に実行されていることを確認します。
手順21.6 ドメインコントローラーのテスト
http://ELASTIC_IP_OF_DOMAIN_CONTROLLER:9990/consoleへの移動- ドメインコントローラーの User Data フィールドで指定されたユーザー名
adminとパスワードを使用してログインします。管理対象ドメインに対する管理コンソールランディングページ (http://ELASTIC_IP_OF_DOMAIN_CONTROLLER:9990/console/App.html#server-instances) が表示されるはずです。 - 画面の右上にある Server ラベルをクリックし、画面の左上にある Host ドロップダウンメニューでいずれかのホストコントローラーを選択します。
- 各ホストコントローラーに
server-oneとserver-twoの 2 つのサーバー構成があることを確認し、これら両方がmain-server-groupに属することを確認します。 - JBoss Enterprise Application Platform 管理コンソールからログアウトします。
手順21.7 ホストコントローラーのテスト
- Navigate to
http://ELASTIC_IP_OF_APACHE_HTTPD/helloto test that the sample application is running successfully. The textHello World!should appear in the browser.テキストが表示されない場合は、18.5.1 の「Amazon EC2 のトラブルシューティングについて」を参照してください。 - Apache HTTPD インスタンスに接続します。
$ ssh -L7654:localhost:7654 ELASTIC_IP_OF_APACHE_HTTPD
http://localhost:7654/mod_cluster-managerに移動して、すべてのインスタンスが正常に実行されていることを確認します。
JBoss Enterprise Application Platform 6 Web サーバー、ドメインコントローラー、およびホストコントローラーが Red Hat AMI で正常に実行されます。
21.2.3. クラスター化の JBoss Enterprise Application Platform 6
21.2.3.1. クラスターインスタンスについて
standalone-ec2-ha.xml と standalone-mod_cluster-ec2-ha.xml) が含まれます。Amazon EC2 はマルチキャストをサポートしないため、これらの各設定ファイルは、マルチキャストを使用せずにクラスタリングを提供します。これは、クラスター通信用 TCP ユニキャストと S3_PING を検出プロトコルとして使用して行われます。また、standalone-mod_cluster-ec2-ha.xml 設定は、mod_cluster プロキシを使用して簡単な登録を提供します。
domain-ec2.xml 設定ファイルはクラスター化された管理対象ドメインで使用される ec2-ha と mod_cluster-ec2-ha の 2 つのプロファイルを提供します。
21.2.3.2. リレーショナルデータベースサービスデータベースインスタンスの作成
このトピックでは、MySQL を例として使用して、リレーショナルデータベースサービスデータベースインスタンスを作成する手順について説明します。
警告
重要
手順21.8 リレーショナルデータベースサービスデータベースインスタンスの作成
- AWS コンソールの RDS をクリックします。
- 必要な場合は、サービスをサブスクライブします。
- Launch DB instance をクリックします。
- MySQL をクリックします。
- バージョンを選択します (
5.5.12など)。 - small instance を選択します。
- Multi-AZ Deployment と Auto upgrade が
offであることを確認します。 - Storage を
5GBに設定します。 - データベース管理者のユーザー名とパスワードを定義し、Next をクリックします。
- インスタンスで作成するデータベース名を選択し、Next をクリックします。
- 必要な場合は、バックアップおよび保守を無効にします。
- 設定を確認します。
データベースが作成されます。数分後に、データベースは初期化され、使用できるようになります。
21.2.3.3. Virtual Private Cloud について
21.2.3.4. Virtual Private Cloud (VPC) の作成
このトピックでは、VPC に対して外部のデータベースを例として使用して Virtual Private Cloud を作成するのに必要な手順について説明します。セキュリティーポリシーでは、データベースに対する接続を暗号化する必要がある場合があります。データベース接続の暗号化の詳細については、Amazon の 『RDS FAQ』 を参照してください。
重要
- AWS コンソールの VPC タブに移動します。
- 必要な場合は、サービスをサブスクライブします。
- "Create new VPC" をクリックします。
- 1 つのパブリックサブネットと 1 つのプライベートサブネットがある VPC を選択します。
- パブリックサブネットを
10.0.0.0/24に設定します。 - プライベートサブネットを
10.0.1.0/24に設定します。
- Elastic IPs に移動します。
- mod_cluster プロキシ/NAT インスタンスが使用する弾力的な IP を作成します。
- Security groups に移動し、すべての送受信トラフィックを許可するセキュリティーグループを作成します。
- ネットワーク ACL に移動します。
- すべての送受信トラフィックを許可する ACL を作成します。
- TCP ポート
22、8009、8080、8443、9443、9990、および16163でのみすべての送受信トラフィックを許可する ACL を作成します。
Virtual Private Cloud が正常に作成されます。
21.2.3.5. mod_cluster プロキシとして使用する Apache HTTPD インスタンスと VPC 用 NAT インスタンスを起動する
このトピックでは、mod_cluster プロキシとして使用する Apache HTTPD インスタンスと Virtual Private Cloud 用 NAT インスタンスを起動するために必要な手順について説明します。
手順21.9 mod_cluster プロキシとして使用する Apache HTTPD インスタンスと VPC 用 NAT インスタンスを起動する
- このインスタンスに対して弾力的な IP を作成します。
- AMI を選択します。
- Security Group に移動し、すべてのトラフィックを許可します (必要な場合は、アクセスを制限する Red Hat Enterprise Linux の組み込みファイアウォール機能を使用)。
- VPC のパブリックサブネットで "
running" を選択します。 - 静的な IP (
10.0.0.4など) を選択します。 - 以下の内容を User Data: フィールドに指定します。
JBOSSCONF=disabled cat > $USER_SCRIPT << "EOS" echo 1 > /proc/sys/net/ipv4/ip_forward echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter echo 0 > /proc/sys/net/ipv4/conf/eth0/rp_filter iptables -I INPUT 4 -s 10.0.1.0/24 -p tcp --dport 7654 -j ACCEPT iptables -I INPUT 4 -p tcp --dport 80 -j ACCEPT iptables -I FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -I FORWARD -s 10.0.1.0/24 -j ACCEPT iptables -t nat -A POSTROUTING -o eth0 ! -s 10.0.0.4 -j MASQUERADE # balancer module incompatible with mod_cluster sed -i -e 's/LoadModule proxy_balancer_module/#\0/' /etc/httpd/conf/httpd.conf cat > /etc/httpd/conf.d/mod_cluster.conf << "EOF" #LoadModule proxy_module modules/mod_proxy.so #LoadModule proxy_ajp_module modules/mod_proxy_ajp.so LoadModule slotmem_module modules/mod_slotmem.so LoadModule manager_module modules/mod_manager.so LoadModule proxy_cluster_module modules/mod_proxy_cluster.so LoadModule advertise_module modules/mod_advertise.so Listen 7654 # workaround JBPAPP-4557 MemManagerFile /var/cache/mod_proxy/manager <VirtualHost *:7654> <Location /mod_cluster-manager> SetHandler mod_cluster-manager Order deny,allow Deny from all Allow from 127.0.0.1 </Location> <Location /> Order deny,allow Deny from all Allow from 10. Allow from 127.0.0.1 </Location> KeepAliveTimeout 60 MaxKeepAliveRequests 0 ManagerBalancerName mycluster ServerAdvertise Off EnableMCPMReceive On </VirtualHost> EOF echo "`hostname | sed -e 's/ip-//' -e 'y/-/./'` `hostname`" >> /etc/hosts semanage port -a -t http_port_t -p tcp 7654 #add port in the apache port list for the below to work setsebool -P httpd_can_network_relay 1 #for mod_proxy_cluster to work chcon -t httpd_config_t -u system_u /etc/httpd/conf.d/mod_cluster.conf #### Uncomment the following line when launching a managed domain #### # setsebool -P httpd_can_network_connect 1 service httpd start EOS - このインスタンスに対する Amazon EC2 クラウド送信元/送信先チェックを無効にして、ルーターとして動作できるようにします。
- 稼働している Apache HTTPD インスタンスを右クリックし、"Change Source/Dest check" を選択します。
- Yes, Disable をクリックします。
- このインスタンスに弾力的な IP を割り当てます。
Apache HTTPD インスタンスが正常に起動されます。
21.2.3.6. VPC プライベートサブネットデフォルトルートの設定
このトピックでは、VPC プライベートサブネットデフォルトルートを設定するために必要な手順について説明します。JBoss Enterprise Application Platform クラスターノードは VPC のプライベートサブネットで実行されますが、クラスターノードでは S3 接続のインターネットアクセスが必要です。NAT インスタンスを通過するためにデフォルトルートを設定する必要があります。
手順21.10 VPC プライベートサブネットデフォルトルートの設定
- Amazon AWS コンソールで Apache HTTPD インスタンスに移動します。
- VPC → route tables に移動します。
- プライベートサブネットで使用されたルーティングテーブルをクリックします。
- 新しいルートのフィールドに、
0.0.0.0/0を入力します。 - "Select a target" をクリックします。
- "
Enter Instance ID" を選択します。 - 稼働している Apache HTTPD インスタンスの ID を選択します。
デフォルトルートが、VPC サブネットに対して正常に設定されます。
21.2.3.7. Identity and Access Management (IAM) について
21.2.3.8. IAM セットアップの設定
このトピックでは、クラスター JBoss Enterprise Application Platform インスタンス用の IAM をセットアップするのに必要な設定手順について説明します。S3_PING プロトコルは S3 バケットを使用して他のクラスターメンバーを検出します。JGroups バージョン 3.0.x では、S3 サービスに対して認証するために Amazon AWS アカウントアクセスとシークレットキーが必要です。
手順21.11 IAM セットアップの設定
- AWS コンソールの IAM タブに移動します。
- users をクリックします。
- Create New Users を選択します。
- 名前を選択し、Generate an access key for each User オプションがチェックされていることを確認します。
- Download credentials を選択し、セキュアな場所に保存します。
- ウィンドウを閉じます。
- 新しく作成されたユーザーをクリックします。
User ARM値を書き留めます。この値は、S3 バケットをセットアップするために必要です (「S3 バケットセットアップの設定」 を参照)。
IAM ユーザーアカウントが正常に作成されます。
21.2.3.9. S3 バケットについて
21.2.3.10. S3 バケットセットアップの設定
このトピックでは、新しい S3 バケットを設定するのに必要な手順について説明します。
要件
手順21.12 S3 バケットセットアップの設定
- AWS コンソールで S3 タブを開きます。
- Create Bucket をクリックします。
- バケットの名前を選択し、Create をクリックします。
注記
バケット名は S3 全体で一意です。名前は再使用できません。 - 新しいバケットを右クリックし、Properties を選択します。
- パーミッションタブの Add bucket policy をクリックします。
- New policy をクリックして、ポリシー作成ウィザードを開きます。
- 以下の内容を新しいポリシーにコピーし、
arn:aws:iam::05555555555:user/jbosscluster*を 「IAM セットアップの設定」で定義された値に置き換えます。clusterbucket123の両方のインスタンスをこの手順 3 で定義されたバケットの名前に変更します。{ "Version": "2008-10-17", "Id": "Policy1312228794320", "Statement": [ { "Sid": "Stmt1312228781799", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::055555555555:user/jbosscluster" ] }, "Action": [ "s3:ListBucketVersions", "s3:GetObjectVersion", "s3:ListBucket", "s3:PutBucketVersioning", "s3:DeleteObject", "s3:DeleteObjectVersion", "s3:GetObject", "s3:ListBucketMultipartUploads", "s3:ListMultipartUploadParts", "s3:PutObject", "s3:GetBucketVersioning" ], "Resource": [ "arn:aws:s3:::clusterbucket123/*", "arn:aws:s3:::clusterbucket123" ] } ] }
新しい S3 バケットが正常に作成および設定されます。
21.2.3.11. クラスターインスタンス
21.2.3.11.1. クラスター JBoss Enterprise Application Platform 6 AMI の起動
このトピックでは、クラスター JBoss Enterprise Application Platform 6 AMI を起動するのに必要な手順について説明します。
前提条件
警告
JBOSS_CLUSTER_ID 変数を参照してください (「永続的な設定パラメーター」)。
重要
警告
手順21.13 クラスター JBoss Enterprise Application Platform 6 AMI の起動
- AMI を選択します。
- 必要な数のインスタンス (クラスターサイズ) を定義します。
- VPC およびインスタンスタイプを選択します。
- Security Group をクリックします。
- JBoss Enterprise Application Platform クラスターサブネットからのすべてのトラフィックが許可されることを確認します。
- 必要に応じて他の制限を定義します。
- 以下の内容を User Data フィールドに追加します。
例21.5 User Data フィールドの例
## mod cluster proxy addresses MOD_CLUSTER_PROXY_LIST=10.0.0.4:7654 ## clustering setup JBOSS_JGROUPS_S3_PING_SECRET_ACCESS_KEY=<your secret key> JBOSS_JGROUPS_S3_PING_ACCESS_KEY=<your access key> JBOSS_JGROUPS_S3_PING_BUCKET=<your bucket name> ## password to access admin console JBOSSAS_ADMIN_PASSWORD=<your password for opening admin console> ## database credentials configuration JAVA_OPTS="$JAVA_OPTS -Ddb.host=instancename.something.rds.amazonaws.com -Ddb.database=mydatabase -Ddb.user=<user> -Ddb.passwd=<pass>" ## subnet prefix this machine is connected to SUBNET=10.0.1. #### to run the example no modifications below should be needed #### PORTS_ALLOWED="1024:65535" JBOSS_IP=`hostname | sed -e 's/ip-//' -e 'y/-/./'` #listen on public/private EC2 IP address cat > $USER_SCRIPT << "EOF" ## Get the application to be deployed from an Internet URL # mkdir -p /usr/share/java/jboss-ec2-eap-applications # wget https://<your secure storage hostname>/<path>/<app name>.war -O /usr/share/java/jboss-ec2-eap-applications/<app name>.war ## install the JDBC driver as a core module yum -y install mysql-connector-java mkdir -p /usr/share/jbossas/modules/com/mysql/main cp -v /usr/share/java/mysql-connector-java-*.jar /usr/share/jbossas/modules/com/mysql/main/mysql-connector-java.jar cat > /usr/share/jbossas/modules/com/mysql/main/module.xml <<"EOM" <module xmlns="urn:jboss:module:1.0" name="com.mysql"> <resources> <resource-root path="mysql-connector-java.jar"/> </resources> <dependencies> <module name="javax.api"/> </dependencies> </module> EOM cat > $USER_CLI_COMMANDS << "EOC" ## Deploy sample application from local filesystem deploy --force /usr/share/java/jboss-ec2-eap-samples/cluster-demo.war ## ExampleDS configuration for MySQL database data-source remove --name=ExampleDS /subsystem=datasources/jdbc-driver=mysql:add(driver-name="mysql",driver-module-name="com.mysql") data-source add --name=ExampleDS --connection-url="jdbc:mysql://${db.host}:3306/${db.database}" --jndi-name=java:jboss/datasources/ExampleDS --driver-name=mysql --user-name="${db.user}" --password="${db.passwd}" /subsystem=datasources/data-source=ExampleDS:enable /subsystem=datasources/data-source=ExampleDS:test-connection-in-pool EOC ## this will workaround the problem that in a VPC, instance hostnames are not resolvable echo -e "127.0.0.1\tlocalhost.localdomain localhost" > /etc/hosts echo -e "::1\tlocalhost6.localdomain6 localhost6" >> /etc/hosts for (( i=1 ; i<255 ; i++ )); do echo -e "$SUBNET$i\tip-${SUBNET//./-}$i" ; done >> /etc/hosts EOF
クラスター JBoss Enterprise Application Platform 6 AMI が正常に設定および起動されます。
21.2.3.11.2. クラスター JBoss Enterprise Application Platform 6 インスタンスのテスト
このトピックでは、クラスター JBoss Enterprise Application Platform 6 インスタンスが正常に実行されていることを確認する手順について説明します。
手順21.14 クラスターインスタンスのテスト
- ブラウザーで http://ELASTIC_IP_OF_APACHE_HTTPD に移動し、Web サーバーが正常に実行されていることを確認します。
クラスターノードのテスト
- ブラウザーで http://ELASTIC_IP_OF_APACHE_HTTPD/cluster-demo/put.jsp に移動します。
- いずれかのクラスターノードが次のメッセージをログに記録することを確認します。
Putting date now
- 前の手順でメッセージをログに記録したクラスターノードを停止します。
- ブラウザーで http://ELASTIC_IP_OF_APACHE_HTTPD/cluster-demo/get.jsp に移動します。
- 示された時間が、手順 2-a で
put.jspを使用して示された時間と同じであることを確認します。 - いずれかの稼働クラスターノードが次のメッセージをログに記録することを確認します。
Getting date now
- 停止されたクラスターノードを再起動します。
- Apache HTTPD インスタンスに接続します。
ssh -L7654:localhost:7654 <ELASTIC_IP_OF_APACHE_HTTPD>
- http://localhost:7654/mod_cluster-manager に移動して、すべてのインスタンスが正常に実行されていることを確認します。
クラスター JBoss Enterprise Application Platform 6 インスタンスがテストされ、正常に稼働していることが確認されます。
21.2.3.12. クラスター化管理対象ドメイン
21.2.3.12.1. クラスタードメインコントローラーとして機能するインスタンスの起動
このトピックでは、Red Hat AMI (Amazon Machine Image) 上のクラスター化された JBoss Enterprise Application Platform 6 管理対象ドメインを起動するために必要な手順について説明します。
要件
- 適切な Red Hat AMI。「サポート対象 Red Hat AMI」 を参照してください。
手順21.15 クラスタードメインコントローラーの起動
- このインスタンスに対して弾力的な IP を作成します。
- AMI を選択します。
- Security Group に移動し、すべてのトラフィックを許可します (必要な場合は、アクセスを制限する Red Hat Enterprise Linux の組み込みファイアウォール機能を使用)。
- VPC のパブリックサブネットで "running" を選択します。
- 静的な IP (10.0.0.5 など) を選択します。
- 以下の内容を User Data: フィールドに指定します。
## mod cluster proxy addresses MOD_CLUSTER_PROXY_LIST=10.0.0.4:7654 ## password that will be used by slave host controllers to connect to the domain controller JBOSSAS_ADMIN_PASSWORD=<password for slave host controllers> ## subnet prefix this machine is connected to SUBNET=10.0.0. #### to run the example no modifications below should be needed #### JBOSS_DOMAIN_CONTROLLER=true PORTS_ALLOWED="9999 9990 9443" JBOSS_IP=`hostname | sed -e 's/ip-//' -e 'y/-/./'` #listen on public/private EC2 IP address cat > $USER_SCRIPT << "EOF" ## Get the application to be deployed from an Internet URL # mkdir -p /usr/share/java/jboss-ec2-eap-applications # wget https://<your secure storage hostname>/<path>/<app name>.war -O /usr/share/java/jboss-ec2-eap-applications/<app name>.war ## Install the JDBC driver as a core module yum -y install mysql-connector-java mkdir -p /usr/share/jbossas/modules/com/mysql/main cp -v /usr/share/java/mysql-connector-java-*.jar /usr/share/jbossas/modules/com/mysql/main/mysql-connector-java.jar cat > /usr/share/jbossas/modules/com/mysql/main/module.xml <<"EOM" <module xmlns="urn:jboss:module:1.0" name="com.mysql"> <resources> <resource-root path="mysql-connector-java.jar"/> </resources> <dependencies> <module name="javax.api"/> </dependencies> </module> EOM cat > $USER_CLI_COMMANDS << "EOC" ## Deploy the sample application from the local filesystem deploy /usr/share/java/jboss-ec2-eap-samples/cluster-demo.war --server-groups=other-server-group ## ExampleDS configuration for MySQL database data-source --profile=mod_cluster-ec2-ha remove --name=ExampleDS /profile=mod_cluster-ec2-ha/subsystem=datasources/jdbc-driver=mysql:add(driver-name="mysql",driver-module-name="com.mysql") data-source --profile=mod_cluster-ec2-ha add --name=ExampleDS --connection-url="jdbc:mysql://${db.host}:3306/${db.database}" --jndi-name=java:jboss/datasources/ExampleDS --driver-name=mysql --user-name="${db.user}" --password="${db.passwd}" /profile=mod_cluster-ec2-ha/subsystem=datasources/data-source=ExampleDS:enable EOC ## this will workaround the problem that in a VPC, instance hostnames are not resolvable echo -e "127.0.0.1\tlocalhost.localdomain localhost" > /etc/hosts echo -e "::1\tlocalhost6.localdomain6 localhost6" >> /etc/hosts for (( i=1 ; i<255 ; i++ )); do echo -e "$SUBNET$i\tip-${SUBNET//./-}$i" ; done >> /etc/hosts EOF 本番稼働インスタンスの場合
本番環境インスタンスの場合は、次の行をUser DataフィールドのUSER_SCRIPT行の下に追加してセキュリティーアップデートが起動時に適用されるようにします。yum -y update
注記
yum -y updateを定期的に実行して、セキュリティー修正と拡張を適用する必要があります。- Red Hat AMI インスタンスを起動します。
クラスター化された JBoss Enterprise Application Platform 6 管理対象ドメインが設定され、Red Hat AMI で起動されます。
21.2.3.12.2. クラスターホストコントローラーとして機能する 1 つまたは複数のインスタンスの起動
このトピックでは、Red Hat AMI (Amazon Machine Image) 上のクラスターホストコントローラーとして機能する JBoss Enterprise Application Platform 6 の 1 つまたは複数のインスタンスを起動するために必要な手順について説明します。
要件
- クラスタードメインコントローラーを設定および起動します。「クラスタードメインコントローラーとして機能するインスタンスの起動」 を参照してください。
手順21.16 ホストコントローラーの起動
- AMI を選択します。
- インスタンスの必要な数 (スレーブホストコントローラーの数) を定義します。
- VPC およびインスタンスタイプを選択します。
- Security Group をクリックします。
- JBoss Enterprise Application Platform クラスターサブネットからのすべてのトラフィックが許可されることを確認します。
- 必要に応じて他の制限を定義します。
- 以下の内容を User Data: フィールドに追加します。
## mod cluster proxy addresses MOD_CLUSTER_PROXY_LIST=10.0.0.4:7654 ## clustering setup JBOSS_JGROUPS_S3_PING_SECRET_ACCESS_KEY=<your secret key> JBOSS_JGROUPS_S3_PING_ACCESS_KEY=<your access key> JBOSS_JGROUPS_S3_PING_BUCKET=<your bucket name> ## host controller setup JBOSS_DOMAIN_MASTER_ADDRESS=10.0.0.5 JBOSS_HOST_PASSWORD=<password for slave host controllers> ## database credentials configuration JAVA_OPTS="$JAVA_OPTS -Ddb.host=instancename.something.rds.amazonaws.com -Ddb.database=mydatabase -Ddb.user=<user> -Ddb.passwd=<pass>" ## subnet prefix this machine is connected to SUBNET=10.0.1. #### to run the example no modifications below should be needed #### JBOSS_HOST_USERNAME=admin PORTS_ALLOWED="1024:65535" JBOSS_IP=`hostname | sed -e 's/ip-//' -e 'y/-/./'` #listen on public/private EC2 IP address cat > $USER_SCRIPT << "EOF" ## Server instance configuration sed -i "s/main-server-group/other-server-group/" $JBOSS_CONFIG_DIR/$JBOSS_HOST_CONFIG ## install the JDBC driver as a core module yum -y install mysql-connector-java mkdir -p /usr/share/jbossas/modules/com/mysql/main cp -v /usr/share/java/mysql-connector-java-*.jar /usr/share/jbossas/modules/com/mysql/main/mysql-connector-java.jar cat > /usr/share/jbossas/modules/com/mysql/main/module.xml <<"EOM" <module xmlns="urn:jboss:module:1.0" name="com.mysql"> <resources> <resource-root path="mysql-connector-java.jar"/> </resources> <dependencies> <module name="javax.api"/> </dependencies> </module> EOM ## this will workaround the problem that in a VPC, instance hostnames are not resolvable echo -e "127.0.0.1\tlocalhost.localdomain localhost" > /etc/hosts echo -e "::1\tlocalhost6.localdomain6 localhost6" >> /etc/hosts for (( i=1 ; i<255 ; i++ )); do echo -e "$SUBNET$i\tip-${SUBNET//./-}$i" ; done >> /etc/hosts EOF 本番稼働インスタンスの場合
本番環境インスタンスの場合は、次の行をUser DataフィールドのUSER_SCRIPT行の下に追加してセキュリティーアップデートが起動時に適用されるようにします。yum -y update
注記
yum -y updateを定期的に実行して、セキュリティー修正と拡張を適用する必要があります。- Red Hat AMI インスタンスを起動します。
JBoss Enterprise Application Platform 6 クラスターホストコントローラーが設定され、Red Hat AMI で起動されます。
21.2.3.12.3. クラスター JBoss Enterprise Application Platform 6 管理対象ドメインのテスト
このトピックでは、Red Hat AMI (Amazon Machine Image) 上のクラスター JBoss Enterprise Application Platform 6 管理対象ドメインをテストするために必要な手順について説明します。
要件
- クラスタードメインコントローラーを設定および起動します。「クラスタードメインコントローラーとして機能するインスタンスの起動」 を参照してください。
- クラスターホストコントローラーを設定および起動します。「クラスターホストコントローラーとして機能する 1 つまたは複数のインスタンスの起動」 を参照してください。
手順21.17 Apache HTTPD インスタンスのテスト
- ブラウザーで
http://ELASTIC_IP_OF_APACHE_HTTPDに移動し、Web サーバーが正常に実行されていることを確認します。
手順21.18 ドメインコントローラーのテスト
http://ELASTIC_IP_OF_DOMAIN_CONTROLLER:9990/consoleへの移動- ドメインコントローラーの User Data フィールドで指定されたユーザー名
adminとパスワードを使用してログインします。ログイン後に、管理対象ドメインに対する管理コンソールランディングページ (http://ELASTIC_IP_OF_DOMAIN_CONTROLLER:9990/console/App.html#server-instances) が表示されるはずです。 - 画面の右上にある Server ラベルをクリックします。画面の左上にある Host ドロップダウンメニューでいずれかのホストコントローラーを選択します。
- このホストコントローラーに
server-oneとserver-twoの 2 つのサーバー構成があることを確認し、これら両方がother-server-groupに属することを確認します。
手順21.19 ホストコントローラーのテスト
- ブラウザーで
http://ELASTIC_IP_OF_APACHE_HTTPD/cluster-demo/put.jspに移動します。 - いずれかのホストコントローラーで次のメッセージがログに記録されていることを確認します。
Putting date now. - 前の手順でメッセージをログに記録したサーバーインスタンスを停止します (セクション 2.8.3「管理コンソールを使用したサーバーの停止」を参照)。
- ブラウザーで
http://ELASTIC_IP_OF_APACHE_HTTPD/cluster-demo/get.jspに移動します。 - 示された時間が、手順 2 で
put.jspを使用してPUTであった時間と同じであることを確認します。 - いずれかの稼働サーバーインスタンスで次のメッセージがログに記録されていることを確認します。
Getting date now. - 停止したサーバーインスタンスの再起動 (セクション 2.8.2「管理コンソールを使用したサーバーの起動」を参照)
- Apache HTTPD インスタンスに接続します。
$ ssh -L7654:localhost:7654 ELASTIC_IP_OF_APACHE_HTTPD
http://localhost:7654/mod_cluster-managerに移動して、すべてのインスタンスが正常に実行されていることを確認します。
JBoss Enterprise Application Platform 6 Web サーバー、ドメインコントローラー、およびホストコントローラーが Red Hat AMI で正常に実行されています。
21.3. JBoss Operations Network (JON) での監視の確立
21.3.1. AMI 監視について

図21.1 JON サーバーの接続性
21.3.2. 接続要件について
21.3.3. Network Address Translation (NAT) について
agent-configuration.xml 設定ファイルの rhq.communications.connector.* の説明を参照してください。
21.3.4. Amazon EC2 および DNS について
21.3.5. EC2 でのルーティングについて
source/destination checking ルーティング機能がアクティベートされます。この機能はマシンの IP アドレスとは異なる送信先を持つサーバーに送信されるすべてのパケットを破棄します。JON サーバーにエージェントを接続するために選択された VPN ソリューションにルーターが含まれる場合は、サーバーをルーターまたは VPN ゲートウェイとして動作するためにこの機能を無効にする必要があります。この設定は、Amazon AWS コンソールを介してアクセスできます。また、source/destination checking は、Virtual Private Cloud (VPC) でも無効にする必要があります。
- VPC の作成時に、プライベートネットワークですでに使用されているアドレスの割り当てを回避し、接続の問題を回避します。
- インスタンスが利用可能なゾーンのローカルリソースにアクセスする必要がある場合は、Amazon EC2 プライベートアドレスが使用され、トラフィックが VPN を介してルーティングされないことを確認します。
- Amazon EC2 インスタンスが企業プライベートネットワークアドレスの小さいサブネット (JON サーバーのみなど) にアクセスする場合は、これらのアドレスのみを VPN を介してルーティングする必要があります。これにより、セキュリティーが強化され、Amazon EC2 またはプライベートネットワークアドレス空間の競合の可能性が低くなります。
21.3.6. JON での終了と再起動について
/etc/sysconfig/jon-agent-ec2 の JON_AGENT_ADDR を更新し、エージェントを再起動します。
21.3.7. JBoss Operations Network で登録するインスタンスの設定
- JBoss Enterprise Application Platform の場合は、これを User Data フィールドに追加します。
JON_SERVER_ADDR=jon2.it.example.com ## if instance not already configured to resolve its hostname JON_AGENT_ADDR=`ip addr show dev eth0 primary to 0/0 | sed -n 's#.*inet \([0-9.]\+\)/.*#\1#p'` PORTS_ALLOWED=16163 # insert other JON options when necessary, see Appendix I
21.4. ユーザースクリプト設定
21.4.1. 永続的な設定パラメーター
次のパラメーターを使用して、JBoss Enterprise Application Platform の設定と操作に影響を与えることができます。この内容は、/etc/sysconfig/jbossas と /etc/sysconfig/jon-agent-ec2 に書き込まれます。
表21.2 設定可能なパラメーター
| 名前 | 説明 | デフォルト |
|---|---|---|
| JBOSS_JGROUPS_S3_PING_ACCESS_KEY | S3_PING 検出用 Amazon AWS ユーザーアカウントアクセスキー (クラスタリングが使用される場合)。 | N/A |
| JBOSS_JGROUPS_S3_PING_SECRET_ACCESS_KEY | Amazon AWS ユーザーアカウント秘密アクセスキー。 | N/A |
| JBOSS_JGROUPS_S3_PING_BUCKET | S3_PING 検出に使用する Amazon S3 バケット。 | N/A |
| JBOSS_CLUSTER_ID |
クラスターメンバーノードの ID。クラスタリングの場合のみ使用されます。許可される値は次のとおりです (順番どおり)。
| eth0 の IP アドレスの最後のオクテット |
| MOD_CLUSTER_PROXY_LIST | mod_cluster プロキシーの IP/ホスト名のカンマ区切りリスト (mod_cluster を使用する場合)。 | N/A |
| PORTS_ALLOWED | デフォルトのもの以外に、ファイアウォールで許可される受信ポートのリスト。 | N/A |
| JBOSSAS_ADMIN_PASSWORD | admin ユーザーのパスワード。 | N/A |
| JON_SERVER_ADDR | 登録するのに使用する JON サーバーのホスト名または IP。これは登録のためにのみ使用され、登録後、エージェントは JON クラスター内の他のサーバーと通信できます。 | N/A |
| JON_SERVER_PORT | サーバーと通信するためにエージェントが使用するポート。 | 7080 |
| JON_AGENT_NAME | JON エージェントの名前 (一意である必要があります)。 | インスタンスの ID |
| JON_AGENT_PORT | エージェントがリッスンするポート。 | 16163 |
| JON_AGENT_ADDR | JON エージェントがバインドされる IP アドレス。これは、サーバーが複数のパブリックアドレス (VPN など) を持つ場合に使用されます。 | JON エージェントは、デフォルトでローカルホスト名の IP を選択します。 |
| JON_AGENT_OPTS | SSL、NAT、および他の高度な設定を指定するために使用できる追加の JON エージェントシステムプロパティー。 | N/A |
| JBOSS_SERVER_CONFIG |
使用する JBoss EAP サーバー設定ファイルの名前。JBOSS_DOMAIN_CONTROLLER=true の場合は、
domain-ec2.xml が使用されます。それ外の場合は、次のようになります。
| standalone.xml、standalone-full.xml、standalone-ec2-ha.xml、standalone-mod_cluser-ec2-ha.xml、domain-ec2.xml (他のパラメーターに依存します)。 |
| JAVA_OPTS | JBoss Enterprise Application Platform が起動する前に変数に追加するカスタム値。 | JAVA_OPTS は、他のパラメーターの値から構築されます。 |
| JBOSS_IP | サーバーがバインドされる IP アドレス。 | 127.0.0.1 |
| JBOSSCONF | 起動する JBoss Enterprise Application Platform 6 プロファイルの名前。JBoss Enterprise Application Platform 6 が起動しないようにするには、JBOSSCONF を disabled に設定します。 | standalone |
|
JBOSS_DOMAIN_CONTROLLER
|
このインスタンスをドメインコントローラーとして実行するかどうかを設定します。
| false
|
|
JBOSS_DOMAIN_MASTER_ADDRESS
|
リモートドメインコントローラーの IP アドレス。
|
N/A
|
|
JBOSS_HOST_NAME
|
論理ホスト名 (ドメイン内)。これは一意である必要があります。
|
HOSTNAME 環境変数の値。
|
|
JBOSS_HOST_USERNAME
|
ドメインコントローラーでの登録時にホストコントローラーが使用する必要があるユーザー名。これが提供されない場合は、JBOSS_HOST_NAME が代わりに使用されます。
|
JBOSS_HOST_NAME
|
|
JBOSS_HOST_PASSWORD
|
ドメインコントローラーでの登録時にホストコントローラーが使用する必要があるパスワード。
|
N/A
|
|
JBOSS_HOST_CONFIG
|
JBOSS_DOMAIN_CONTROLLER=true の場合は、
host-master.xml が使用されます。JBOSS_DOMAIN_MASTER_ADDRESS が存在する場合は、host-slave.xml が使用されます。
| host-master.xml または host-slave.xml (他のパラメーターに依存します)。
|
21.4.2. カスタムスクリプトパラメーター
User Data: フィールドのユーザーカスタマイズセクションでは、次のパラメーターを使用できます。
表21.3 設定可能なパラメーター
| 名前 | 説明 |
|---|---|
|
JBOSS_DEPLOY_DIR
|
アクティブプロファイルのデプロイディレクトリー (
/var/lib/jbossas/standalone/deployments/ など)。このディレクトリーに置かれたデプロイ可能なアーカイブがデプロイされます。Red Hat は、デプロイディレクトリーの代わりに管理コンソールまたは CLI ツールを使用してデプロイメントを管理することをお勧めします。
|
|
JBOSS_CONFIG_DIR
|
アクティブプロファイルの設定ディレクトリー (
/var/lib/jbossas/standalone/configuration など)。
|
|
JBOSS_HOST_CONFIG
|
アクティブホスト設定ファイルの名前 (
host-master.xml など)。Red Hat は、設定ファイルを編集する代わりに、管理コンソールまたは CLI ツールを使用してサーバーを設定することをお勧めします。
|
|
JBOSS_SERVER_CONFIG
|
アクティブサーバー設定ファイルの名前 (
standalone-ec2-ha.xml など)。Red Hat は、設定ファイルを編集する代わりに、管理コンソールまたは CLI ツールを使用してサーバーを設定することをお勧めします。
|
|
USER_SCRIPT
|
カスタム設定スクリプトへのパス (ソースユーザーデータ設定の前に利用可能)。
|
|
USER_CLI_COMMANDS
|
CLI コマンドのカスタムファイルへのパス (ソースユーザーデータ設定の前に利用可能)。
|
21.5. トラブルシューティング
21.5.1. Amazon EC2 のトラブルシューティングについて
21.5.2. 診断情報
/var/log/jboss_user-data.outは、jboss-ec2-eap 初期化スクリプトとユーザーカスタム設定スクリプトの出力です。/var/cache/jboss-ec2-eap/には、インスタンス起動時に使用される実際のユーザーデータ、カスタムスクリプト、およびカスタム CLI コマンドが含まれます。- また、
/var/logには、マシンの起動時に収集され、JBoss Enterprise Application Platform、httpd、および他のほとんどサービスから収集されたすべてのログが含まれます。
第22章 補足参考資料
22.1. Red Hat カスタマーポータルからファイルをダウンロード
要件
- このタスクを始める前に、カスタマーポータルのアカウントを作成する必要があります。https://access.redhat.com へ移動し、右上端にある 登録 リンクをクリックしアカウントを作成してください。
手順22.1 Red Hat カスタマーポータルにログインしファイルをダウンロードする
- 結果
RHN へログインし、https://access.redhat.com のメイン Web ページに戻ります。
ダウンロード ページへの移動
以下のオプションのいずれかを使い、ダウンロード ページへ移動します。- 上部のナビゲーションバーのダウンロード リンクをクリックします。
- https://access.redhat.com/downloads/ へ直接移動します。
ダウンロードをする製品とバージョンを選択します。
以下の方法を使い、正しい製品とバージョンを選びダウンロードしてください。- ナビゲーションを使って1つずつ進めていきます。
- 画面の右上端にある検索エリアを使い製品を検索します。
お使いのオペレーティングシステムやインストール方法にあったファイルをダウンロードします。
選択した製品に従い、オペレーティングシステムやアーキテクチャー別に ZIP アーカイブ、RPM、ネーティブインストーラーを選んでいただけます。ファイル名あるいは、ダウンロードしたいファイルの右側にある ダウンロード リンクをクリックします。
お使いのコンピューターにファイルをダウンロードします。
22.2. Red Hat Enterprise Linux でのデフォルト JDK の設定
alternatives コマンドを使用します。
重要
注記
要件
- このタスクの実行には、スーパーユーザー権限が必要です。スーパーユーザー権限を取得するには、直接ログインするか、
sudoコマンドを使用します。
手順22.2 デフォルト JDK の設定
希望の
javaおよびjavacバイナリのパスを決定します。rpm -ql packagename |grep binコマンドを使い、RPM からインストールしたバイナリの場所を検索します。javaとjavacバイナリのデフォルトの場所は、Red Hat Enterprise Linux 32-bit システムの場合、以下のとおりです。表22.1
javaおよびjavacバイナリのデフォルトの場所JDK パス OpenJDK 1.6 /usr/lib/jvm/jre-1.6.0-openjdk/bin/java/usr/lib/jvm/java-1.6.0-openjdk/bin/javacOracle JDK 1.6 /usr/lib/jvm/jre-1.6.0-sun/bin/java/usr/lib/jvm/java-1.6.0-sun/bin/javac個別に代替の JDK を設定します。
/usr/sbin/alternatives --config javaまたは/usr/sbin/alternatives --config javacコマンドを実行し、特定のjavaおよびjavacを使用するようシステムを設定します。 画面の指示に従います。オプション:
java_sdk_1.6.0の代替を設定します。Oracle JDK を使用する場合、java_sdk_1.6.0.の代替を設定する必要もあります。コマンド/usr/sbin/alternatives --config java_sdk_1.6.0を使用します。通常、正しいパスは/usr/lib/jvm/java-1.6.0-sunとなります。ファイルを一覧表示すると検証できます。
代替の JDK が選択され、有効になります。
付録A Revision History
| 改訂履歴 | |||
|---|---|---|---|
| 改訂 1.1-28.405 | Sun Dec 15 2013 | Rüdiger Landmann | |
| |||
| 改訂 1.1-28 | Thu Jul 11 2013 | Russell Dickenson | |
| |||