ホーム > 未分類 > JBoss AS 7 Getting Started Guide – 2

JBoss AS 7 Getting Started Guide – 2

今回は Getting Started Guide (※ 以降スタードガイド)の後半部分に記載されている管理(Managing your JBoss Application Server 7)について意訳&解説します。

JBoss AS7 管理 

AS7 は稼働中のインスタンス管理に以下の2つの仕組みを提供します。

  • web ベースの管理コンソール
  • コマンドラインインターフェース(CLI)

上記の管理 UI とは別に 2 種類の管理用 I/F (Native I/F, HTTP I/F)が提供せれており、管理 UI もこれらの I/F 経由で AS7 へアクセスします。管理用 I/F は独自のスクリプト等外部のプログラムからのアクセスが可能です。

管理用 I/F についての詳細は Admin Guide (管理ガイド) – Management Clients (管理クライアント) を参照して下さい。

管理コンソール 

管理コンソールへはブラウザを使用して以下のURLにアクセスします。

http://localhost:9990/console

Note: 9990 番ポートが管理コンソールのデフォルトとして設定されています。デフォルトポートを変更する場合、 設定ファイルの http-interface 要素の port 属性を変更します。

<management-interfaces>

<native-interface interface=”managementport=”9999” />

<http-interface interface=”managementport=”9990“/>

</management-interfaces>

上記の設定ファイルは standalone.xml または host.xml になります。上記の設定では、管理用 I/F である Native I/F と HTTP I/F に対して interfaceport の設定を行っています。

デフォルトの standalone.xml で確認してみると、management という名前で宣言された interface を参照していることが分ります。

<interfaces>

<interface name=”management“>

<inet-address value=”127.0.0.1″/>

</interface>

<interface name=”public“>

<inet-address value=”127.0.0.1″/>

</interface>

</interfaces>

スタートガイドには http-interface の port を変更した場合、ウェルカムページのリンクから管理コンソールにアクセスできなくなると書かれていますが、アクセスできるようです。

8080 ポートの /console にアクセス(ウェルカムページの “Administration Console” リンクは 8080/console へのアンカータグです。)すると http-interface が設定されたポートの /console にリダイレクトされます。

コマンドラインインターフェス(CLI)

コマンドラインからの管理作業もしくはバッチ処理を行う場合、 $JBOSS_HOME/bin/jboss-admin.sh (以降、管理スクリプトと呼称) を使用します。管理スクリプトは管理コンソールと同等の機能を提供します。

$ cd $JBOSS_HOME/bin
$ ./jboss-admin.sh –connect 
Connected to standalone controller at localhost:9999

管理スクリプトの connect コマンドのパラメータにホスト/ポートを指定しない場合、 localhost:9999 がデフォルトとして使用されます。

管理スクリプトを使用すれば、リソースの追加、変更、削除やアプリケーションのデプロイ/アンデプロイが可能です。

管理スクリプトのコマンド/コマンドシンタックスについてはサーバに接続後(connect コマンド成功後) “help” を実行して下さい。

アプリケーションを AS7 にデプロイする 5 つの方法についての 紹介ビデオ <http://vimeo.com/25831010> をチェックしてみて下さい。

管理スクリプトについては 前回のエントリ AS7 停止方法の解説で少しふれました。

管理スクリプトの詳細は  Admin Guide (管理ガイド) – Management Clients (管理クライアント)  や Admin Guide (管理ガイド)- Core management concepts (コア管理コンセプト) に記載されています。

管理スクリプトには コマンド、オペレーション、リソース、アドレス といった概念が登場します。

簡単に言ってしまえば、 XML 設定ファイル(standalone.xml, host.xml, domain.xml)の木構造をコマンドを使用して辿って値の照会、編集、削除を行うという感じなんですが。

管理コンソールは AS7 インスタンスとネイティブプロトコルを使用して通信します。このネイティブプロトコルは前節でちょっと登場した native-interface で指定したポート番号を使用します。

せっかくなので、 native-interface のポート番号を変更して管理スクリプトから接続できることを確認してみましょう!

  1. $JBOSS_HOME/standalone/configuration/standalone.xml の native-interface 要素 の port 属性を 9991 等に変更する。
  2. AS7 を起動($JBOSS_HOME/bin/standalone.sh)する。
  3. 管理スクリプトを起動($JBOSS_HOME/bin/jboss-admin.sh)する。
  4. “connect localhost:9991” コマンドを実行する。
  5. “help” や “:read-operation-names” 等を実行して遊んでみる。
  6. “quit” を実行してさようなら。。。

どうでしょう?うまくいったでしょうか?

サンプルデータソースの設定

前回のリリース(AS6)と同様に開発用組込み DB のデータソースとして ExampleDS が設定されています。データソースを設定するには以下 2 つの方法があります。

  1. モジュール
  2. デプロイメント

初期状態の ExampleDS データソースはモジュールとして設定されています。このモジュールは $JBOSS_HOME/modules/com/h2database/h2 に格納されています。

ExampleDS の設定は以下の通りになります。

<subsystem xmlns=”urn:jboss:domain:datasources:1.0″>

<datasources>

<datasource jndi-name=”java:jboss/datasources/ExampleDS” pool-name=”ExampleDS“>

<connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1</connection-url>

<driver>h2</driver>

<pool>

<min-pool-size>10</min-pool-size>

<max-pool-size>20</max-pool-size>

<prefill>true</prefill>

</pool>

<security>

<user-name>sa</user-name>

<password>sa</password>

</security>

</datasource>

<xa-datasource jndi-name=”java:jboss/datasources/ExampleXADS” pool-name=”ExampleXADS”>

<driver>h2</driver>

<xa-datasource-property name=”URL”>jdbc:h2:mem:test</xa-datasource-property>

<xa-pool>

<min-pool-size>10</min-pool-size>

<max-pool-size>20</max-pool-size>

<prefill>true</prefill>

</xa-pool>

<security>

<user-name>sa</user-name>

<password>sa</password>

</security>

</xa-datasource>

<drivers>

<driver name=”h2module=”com.h2database.h2“>

<xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>

</driver>

</drivers>

</datasources>

</subsystem>

データソース subsystem は IronJacamar プロジェクトが提供しています。データソース設定に関する詳細については IronJacamar プロジェクトのドキュメントを参照して下さい。

まずは、モジュール/デプロイメントについて補足します。

簡単に言うと、

モジュール  –> モジュールとして認識($JBOSS_HOME/modules に module.xml と jar ファイルを配置)された JDBC ドライバを使用する。

デプロイメント  –> JDBC の jar ファイルを直接デプロイする。

という感じになります。詳細は Admin Guide (管理ガイド) – DataSouce Configuration (データソース設定) に書かれていますので、今後解説します。

データソース subsystem は standalone.xml, domain.xml で設定されています。設定ファイルが一元管理されているのは分りやすくて素晴らしいですな。

IronJacamar は JCA の実装になります。 JCA って何かって? JSR 322: JavaTM EE Connector Architecture 1.6 です。要は DB, ERP, MOM 等の外部リソース(EIS的な!)と接続するためのコネクタの仕様です。

個人的には IronJacamar について Deep Dive して妙なコネクタ作ってみたい気もするのですが。。。

データソースは 管理コンソールもしくは管理スクリプト から管理が可能ですので、ぜひツールを使ってみましょう。

管理スクリプトを使用して “/subsystem=datasources:read-resource(recursive=true)” や “/subsystem=datasources:installed-drivers-list” を実行すると面白い結果が表示されるので試してみて下さい。

ロギングの設定

AS7 のログイング設定は XML 設定ファイルもしくはログマネージャ設定ファイルにより可能です。デフォルトのロギング設定には $JBOSS_HOME/$PROFILE/configuration/logging.properties が使用されています。

※ $PROFILE は standalone / domain を表します。

logging.properties で設定されているデフォルト設定は一般的な要件を十分に満たしています。

カスタムロギングカテゴリが必要な場合、 standalone.xml, domain.xml に設定されている項目をカスタマイズします。

XML 設定

XML によるロギング設定は standalone.xml, domain.xml ファイルの logging subsystem 要素(およびその子要素)に対して行います。

これはカスタムロギングカテゴリを設定するのに推奨される方法です。

ロギング設定には以下 7 つの主要な要素があります。

  1. <root-logger />
  2. <logger category=”” />
  3. <console-handler />
  4. <file-handler />
  5. <periodic-rotating-file-handler />
  6. <size-rotating-file-handler />
  7. <async-handler />

root-logger にはデフォルトとして他のロガーに継承されるベースとなる値を設定します。

XML によるロギング設定の詳細なオプションを知るためには、 $JBOSS_HOME/docs/schema/jboss-as-logging_x_x.xsd のの XML スキーマを参照して下さい。

※ スタートガイドには $JBOSS_HOME/docs/schema/jboss-logging.xsd と記載されていますが、 バージョン 7.0.1 で確認したところ jboss-as-logging_1_1.xsd が該当するようです。

ロギング設定に関する詳細は Admin Guide (管理ガイド) – Logging configuration (ロギング設定) を参照して下さい。 

次の例は、 “org.jboss.as.quickstart.kitchensink” カテゴリでデバッグレベルのロガーの設定を行っています。

<logger category=”org.jboss.as.quickstart.kitchensink” >

<level name=”DEBUG“/>

</logger>

上記の例のロガーは <root-logger /> からハンドラを継承しています。この設定は <logger /> タグの use-parent-handlers 属性に false を設定することにより上書き可能です。

この方式の有利な点は、レベルを管理コンソールから観点に変更可能なことです。これによりアプリケーションサーバの再起動無しにデバッグレベルの変更が可能です。

ログマネージャ設定

ログマネージャの設定ファイルは $JBOSS_HOME/$PROFILE/logging.properties になります。

※ $PROFILE は standalone / domain を表します。

logging.properties で指定可能なプロパティは次の通りになります。

Logger options
  • loggers=<category>[,<category>,…]  – カテゴリをカンマ区切りで指定します。ここで指定されていないカテゴリについて以降のプロパティを設定することはできません。
  • logger.<category>.level=<level> – カテゴリのログ出力レベルを指定します。 JDK のログ出力レベル(SEVERE, WARNING, INFO, CONFIG, FINE, FINER, FINEST)、 JBoss Logging の 3 つのスタイルのログ出力レベル(FATAL, ERROR, WARN, INFO, DEBUG, TRACE)または特殊なログ出力レベル(OFF, ALL)が指定可能です。
  • logger.<category>.handlers=<handler>[,<handler>,…] – このロガーに適用するハンドラ名をカンマ区切りで指定します。ハンドラは同一のプロパティファイルで設定する必要があります。
  • logger.<category>.filter=<filter> – カテゴリに対するフィルタを指定します。フィルタは同一のプロパティファイルで設定する必要があります。
  • logger.<category>.useParentHandlers=(true/false) – 親のロガーにログ出力を伝播されるかどうかを true/false で指定します。
Handler Option
  • handler.<name>=<className> – (必須項目)ハンドラのクラス名を指定します。
  • handler.<name>.level=<level> – このハンドラのログ出力レベルを指定します。出力レベルを指定しない場合、デフォルト値である ALL が適用されます。
  • handler.<name>.encoding=<encoding> – 文字エンコーディングを指定します。指定された文字エンコーディングがハンドラによりサポートされない場合、ハンドラ固有のデフォルト文字エンコーディングが適用されます。
  • handler.<name>.errorManager=<name> – エラーマネージャ名を指定します。エラーマネージャは同一のプロパティファイルで設定する必要があります。指定しない場合、ハンドラにエラーマネージャは適用されません。
  • handler.<name>.filter=<name> – フィルタ名を指定します。フィルタは同一のプロパティファイルで設定する必要があります。指定しない場合、メッセージはフィルタリングされません。
  • handler.<name>.formatter=<name> – フォーマッタ名を指定します。フォーマッタは同一のプロパティファイルで設定する必要があります。フォーマッタを指定しない場合、大半のハンドラはログ出力を行いません。
  • handler.<name>.properties=<property>[,<property>,…] – JavaBean スタイルのプロパティをカンマ区切りで指定します。
  • handler.<name>.<property>=<value> –  key : value 型プロパティの設定を行います。
Error manager options
  • errorManager.<name>=<className> – (必須項目)エラーマネージャのクラス名を指定します。
  • errorManager.<name>.properties=<property>[,<property>,…] – JavaBean スタイルのプロパティをカンマ区切りで指定します。
  • errorManager.<name>.<property>=<value> – key : value 型プロパティの設定を行います。
Formatter options
  • formatter.<name>=<className> – (必須項目)フォーマッタのクラス名を指定します。
  • formatter.<name>.properties=<property>[,<property>,…] – JavaBean スタイルのプロパティをカンマ区切りで指定します。
  • formatter.<name>.<property>=<value> – key : value 型プロパティの設定を行います。
Filter options
  • filter.<name>=<className> – (必須項目)フィルタのクラス名を指定します。
  • filter.<name>.properties=<property>[,<property>,…] – JavaBean スタイルのプロパティをカンマ区切りで指定します。
  • filter.<name>.<property>=<value> – key : value 型プロパティの設定を行います。

ログマネージャについて解説します。このモジュールの正式名称は JBoss Log Manager (※ 以降 logmanager ) になります。

JIRA はこちら<https://issues.jboss.org/browse/LOGMGR#selectedTab=com.atlassian.jira.plugin.system.project%3Asummary-panel>!

logmanager は module として動作し $JBOSS_HOME/modules//org/jboss/logmanager/main/jboss-logmanager-1.2.0.GA.jar にクラスファイルが配置されています。

logmanager のソースコードは <http://source.jboss.org/browse/JBossCommon/jboss-logmanager> で参照可能です。

logmanager クラス構成や使い方は JavaTM 2 プラットフォームのコアロギング機能(詳細は JavaTM Logging Overview あるいは  java.util.loggin API Document を参照して下さい。) のそれを拡張したものとなっています。$JBOSS_HOME/$PROFILE/configuration/logging.properties, $JBOSS_HOME/domain/configuration/logging.properties で確認できるデフォルトのコンソールハンドラ実装の org.jboss.logmanager.handlers.ConsoleHandler は java.util.logging.Handler を継承しており、他の主要クラスも java.util.logging の主要クラスを継承しています。

※ $PROFILE は standalone / domain を表します。

なので、ログマネージャの設定でつまずくことはあまりないと思います。

ログファイルである boot.log と server.log の違いについて補足します。

boot.log には logging.properties の設定に従い AS7 の起動時にログサービス(ブートストラップログハンドラ等)が起動するまでのログが出力されます。

server.log には standalone.xml または domain.xml の logging subsystem 設定に従い ログサービス起動以降のログが出力されます。

通常はアプリケーションのロギングの要件に従い sdandalone.xml または domain.xml を使用してカテゴリやフォーマッタ等のカスタマイズを行います。

次回からはいよいよ Admin Guide (管理ガイド)の意訳&解説を開始します!

広告
タグ: ,
  1. まだコメントはありません。
  1. No trackbacks yet.

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。