アーカイブ

Archive for 2011年10月

JBoss AS 7 – Getting Started Developing Applications Guide – Getting started with JBoss AS

今回は開発環境構築に関するお話です。Eclipse + JBoss Tools のインストールと Maven プロジェクトのインポートや Eclipse からのデプロイ/アンデプロイやデバッッグに関するお話です。

JBoss Tools についてる Maven のプラグインがなかなかの使い心地です。クールとはいかないまでもそれなりに。。。

1 週間程マカオに出張に行っており前のエントリからちょっと時間が経ってしまっていますが、ここからはガシガシ AS7 の素晴らしさを世に知らしめていこうと思います!

Getting started with JBoss AS

examples アプリケーションを同梱されるビルドスクリプトを使用して動作させるには以下のソフトウェアが必要になります。

  • JDK 1.6.x
  • Apache Maven 3.0.x
  • JBoss AS 7
  • JBoss AS 7 Quick Starts
  既にこれらのソフトウェアが導入されていれば再度インストールする必要はありません。

AS7 のインストール対象プラットフォームで実行可能な Java 実行環境( JDK )を選択し、マニュアルに従いインストールを行って下さい。例として以下の JDK が選択可能です。

Maven 3 ※1 がまだインストールされていない場合オフィシャルガイド ※2 を参照して下さい。

以下のコマンドを実行することにより、インストールされている Maven のバージョンを確認することができます。

mvn –version

ヴァージョン 3.0.0 以降がインストールされていれば examples アプリケーションのビルドが可能です。

※1 Apache Maven , Maven 3 Doanload

※2 Maven Getting Started Guide

以降では Eclipse を使用した examples アプリケーションのデプロイ方法について紹介します。

JBoss AS 7 を JBoss AS download page からダウンロード済みの状態を前提として解説を行います。

 JBoss AS 7 は複数の AS インスタンスを一元管理する機能を提供します。これら AS インスタンス( server )の集合は “domain” のメンバーとみなされ、 Domain Controller プロセスが管理ポイントとして動作します。”domain” は複数の物理(あるいは仮想)マシーンにまたがって構成することが可能です。個々の物理(あるいは仮想)マシーン(ホスト)上では Host Controller プロセスがそのホスト上の AS インスタンスの管理を行います。Host Controller は Domain Controller と AS インスタンスのライフサイクル管理や Domain Controller サポートをするために連携を行います。AS7 は standalone モードで稼働されることも可能で、quickstart example アプリケーションの動作確認では standalone を使用します。

Installing and starting JBoss AS on Linux, Unix or Mac OS X

最初に、以降で紹介するコマンドを実行し JDK と Maven が正しくインストールされているかの確認を行って下さい。

java -version

上記の実行結果から JDK のバージョンが 1.6.0 以降であることを確認して下さい。次に以下のコマンドを実行して下さい。

mvn –version

上記の実行結果から Maven のバージョンが 3.0.0 以降であることを確認して下さい。

次に、 JBoss AS のインストールディレクトリを選択します、デフォルトでは JBoss AS 7 は jboss-7.x.x.x ディレクトリに展開されます。( 7.x.x.x はダウンロードバージョンを表します。)

インストール対象ディレクトリにダウロードした JBoss AS 7 の zip ファイルを解凍して下さい。

unzip jboss-7.x.x.x .zip

それでは JBoss AS を standalone モードで起動してみましょう。

jboss-7.x.x.x/bin/standalone.sh

  JBoss AS の停止には AS を(フォアグラウンドで)起動したターミナルで Crtl-C を実行して下さい。

以上で JBoss AS のインストールと起動ができました。 http://localhost:8080/ にアクセスし server が正しく起動しているかを確認して下さい。

  モードの場合、ログファイルは jboss-7.x.x.x/standalone/log/server.log にあります。Getting Started Guide ではロギング設定についてより詳しい内容が紹介されています。

Installing and starting JBoss AS on Windows

インストール手順は Linux, Unix, Mac OS S と同様です。

これらの OS と同様の手順で jboss-7.x.x.x を展開後、以下を実行し動作確認を行って下さい。

boss-7.x.x.x/bin/standalone.bat

Starting JBoss AS from Eclipse with JBoss Tools

JBoss AS の起動やアプリケーションのデプロイについて、コマンドラインより Eclipse による方法を選択する場合、以降を参照して下さい。
JBoss AS を Eclipse から使用するためには、JBoss AS をインストールする必要があります。上述のガイドに従い JBoss AS のインストールと起動確認を行って下さい。
JBoss  AS を Eclipse から使用するためには、 Eclipse Indigo ( Eclipse 3.7 ) と JBoss Tools 3.3 M2 以降が必要になります。quickstarts アプリケーションを Eclipse から起動した場合は m2eclipse も必要になります。

Eclipse, m2eclipse, JBoss Tools のインストール方法は JBoss Tools Site に記載があります。 Maven Support feature と Java EE Development feature のインストールを確認して下さい。

Eclipse と JBoss Tools のインストールについて補足します。手順は以下の通りです。

     1. Eclipse Downloads から Eclipse 3.7.x をダウンロードします。※ Java EE Developers をダウンロードします。

     2. Eclipse を適当なディレクトリで起動して、 [Help] -> [Install New Software] を選択します。

     3. [Add] を選択し以下を入力します。

Name: JBoss Tools 3.3

Location: http://download.jboss.org/jbosstools/updates/development/indigo/

add repository

     4. Available Software ウィンドウにおいて [All JBoss Tools 3.3] [Application Development] [Maven Support] [Web and Java EE Development] を選択状態にし [Next] を選択します。

available software

     5. Install Details ウィンドウで [Next] を選択します。

install

     6. Revie Licenses ウィンドウで [I accept …] を選択状態にし [Finish] を選択します。

review license

     7. Software Updates ウィンドウで [Restart Now] を選択し Eclipse の再起動を行います。

     8. Eclipse のインストールと起動が正しくできたら、 JBoss AS を Eclipse に追加する必要があります。

          最初に、以下の通り [File] -> [New] -> [Other] を選択して下さい。

new server

     9. 新規サーバ(New Server)ウィザードを選択します。

select a wizard

     10. [JBoss AS 7.x] を選択します。

new server

     11. [Server name:] に任意の適切な名前を入力し [Next] を選択します。

          JBoss Runtime ウィンドウで Name に任意の適切なランタイム名と Home Derectory に AS7 のインストールディレクトリを指定し [Finish] を選択します。

jboss runtime

     12. AS7 を Eclipse から起動するには Servers ビューを使用します。

          前述の手順で登録した AS7 ランタイムが Servers ビューに表示されるので、それを選択し右クリックから [Debug] もしくは [Start] を選択し AS7 を起動します。別の AS7 プロセスが起動している場合そちらを停止します。

          ※ Servers ビューが表示されていない場合、[Window] -> [Show View] -> [Others…] -> [Server] -> [Servers] を選択し Servers ビューを表示させて下さい。

servers view

start server

  AS7 ランタイム上にデプロイしたアプリケーションのデバックを行う場合、 [Start] ではなく[Debug] を使用して AS7 を起動して下さい。これにより AS7 はデバッグモードで起動され Eclipse デバッガにアタッチされます。

     13. AS7 を起動すると Console ビューにサーバログが出力されます。

console view

Importing the quickstarts into Eclipse

quickstarts アプリケーションを Eclipse にインポートするには m2eclipse プラグインが必要になります。

※ 前述 4. の手順により m2eclipse のインストールは完了しています。 m2eclipse は Maven プロジェクト( pom.xml )を Eclipse と連携させるプラグインです。厳密には Maven から Eclipse プロジェクトのメタファイル( .project )を生成( mvn eclipse:eclipse )することにより m2eclipse プラグインを使用せずに Maven で構築されたプロジェクトを Eclipse に認識させることも可能です。

     1. [File] -> [Import…] -> [Maven] -> [Existing Maven Projects] を選択します。

new import

select maven project

     2. quickstarts ディレクトリ( quickstarts を解凍したルートディレクトリ)をファイルブラウザで指定します。

select directory

     3. Maven Projects ウィンドウで 4 プロジェクトが選択状態にあることを確認し [Finish] を選択します。

maven project

     4. Maven プロジェクトのインポートが成功すると Package Explorer に以下の 4 プロジェクトが表示されます。

※ プロジェクトのインポートは依存するライブラリを Maven のリモートリポジトリからのダウンロードも行われるので多少時間がかかる場合があります。

imported project

     5. jboss-as-helloworld を例に Eclipse を使用した Maven アプリケーションのデプロイ/アンデプロイについて補足します。

アプリケーションの Eclipse からのデプロイ/アンデプロイにはデプロイ対象の Server に対象アプリケーションを追加( Add )/削除( Remove )することにより行います。

Servers ビュー上のデプロイ対象サーバを右クリックし表示されるコンテキストメニューから [Add and Remove…] を選択します。

add server

     6. Add and Remove ウィンドウが表示され [Available] に追加可能なプロジェクトの一覧が表示されます。

select add project

     7. 今回は jboss-as-helloworld プロジェクトをデプロイします。

project selected

     8. jboss-as-helloworld が選択された状態で [Add >] を選択し同プロジェクトを [Configured] に移動させ [Finish] を選択します。

jboss-as-helloworld が AS7 にデプロイされコンソールビューにデプロイ成功ログが出力されれば成功です。

deploy log

デプロイはアプリケーションアーカイブ( war/ear …)を $JBOSS_HOME/standalone/deployments に配置することで実現しているようです。

上記のログでは MSC のスレッドが 4 つ稼働しているのが分ります。jpa, weld, web コンテナですね。web コンテナのログからアプリケーションのコンテキストルートが /jboss-as-helloworld であることがわかりますね。

ブラウザからアプリケーション <http://localhost:8080/jboss-as-helloworld&gt; にアクセスしてみましょう。。。まぁ “Hello World!” を出力する味気ない画面が表示されるだけですが。

管理コンソールの [Deployments] -> [Manage Deployments] からjboss-as-helloworld.war がデプロイされていることが確認できます。

CLI を使用すれば、 jboss-as-helloworld.war のリソースを階層構造で辿っていくことが可能です。

以下のコマンドを実行すると HelloWorldServlet のリソース情報が参照可能です。

/deployment=jboss-as-helloworld.war/subsystem=web/servlet=org.jboss.as.quickstarts.helloworld.HelloWorldServlet:read-resource

read resource

CLI は設定やデプロイされたアプリケーションや JMS, Datasource をリソースという概念で木構造で管理するスタイルをとっています。

上述のコマンドは /deployment=jboss-as-helloworld.war/subsystem=web/servlet=org.jboss.as.quickstarts.helloworld.HelloWorldServlet というリソースに対して read-resource というコマンドを実行しています。

木構造を辿る際やあるリソースに対して実行可能なコマンドはタブにより補完されます。上記のコンソールのスクリーンキャプチャでは /deployment=jboss-as-helloworld.war/subsystem=web/servlet=org.jboss.as.quickstarts.helloworld.HelloWorldServlet リソースを明示した状態でタブを使用することにより使用可能なコマンドの一覧が表示されています。

CLI を使用してアプリケーションのアンデプロイも可能なので試してみましょう。

undeploy command

jboss-as-helloworld アプリケーションの中身を少しみてみましょう。

コンテキストルート “/jboss-as-helloworld” をブラウザから指定すると “/jboss-as-helloworld/HelloWorld” にリダイレクトされ org.jboss.as.quickstarts.helloworld.HelloWorldServlet サーブレットが駆動します。

HelloWorldServletサーブレットは Servlet 3.0 の仕様に対応して実装されているので @WebServlet(“/HelloWorld”) のアノテーションにより web.xml 無してサーブレットの登録と URL マッピングが実現されています。

同サーブレットは org.jboss.as.quickstarts.helloworld.HelloService というクラスを CDI の @Inject アノテーションを使用して実現しています。ここではまたインターフェース無しのクラスをインジェクションしていたりします。

CDI やその実装である Weld については neverbird さんの なるほど!ザ・Weld で詳しく解説されているのでぜひ参考にして下さい。

Managing JBoss Application Server

AS7 の管理は web 管理コンソール(以降 管理コンソール)もしくはコマンドラインインターフェース(以降 CLI )を使用して行います。これらの詳細は Admin Guide を参照して下さい。

サーバが起動した状態であれば、管理コンソールは <http://localhost:9990/console&gt; からアクセス可能です。管理コンソールからはデータソース、デプロイ サーバ設定等の管理が可能です。

CLI は以下のように jboss-admin.sh もりくは jboss-admin.bat スクリプトを実行して起動します。

$JBOSS_HOME/bin/jboss-admin.sh –connect

CLI起動後は help コマンドにより使用可能なコマンドの情報が表示されます。

本ガイドを通して、アプリケーションのデプロイ/アンデプロイには jboss-as maven プラグインを使用します。

このプラグインは AS7 との連携(通信)に JBoss AS Native Java Detyped Management API を使用します。

管理コンソール/CLIの詳細については Admin Guide – Management Clients を参照して下さい。

広告
タグ: , ,

JBoss AS 7 – Getting Started Developing Application Guide – Introduction

クールにサクッと翻訳だけしました。あまり読む必要は。。。無いです。


イントロダクション

このガイドでは、 AS7 のインストールとスタートアップについて案内します。また( JBoss AS 7 が認定をうけている)Java EE ( Web Profile )のプログラミングモデルの特徴について紹介します。

   Java EE 6

Java EE 6 により開発者は分散可能でトランザクションに対応し移植性に優れたアプリケーションを素早く簡単に開発することが可能です。このような機能が要求されるアプリケーションは “エンタープライズアプリケーション” に分類されると考えられます。これらのアプリケーションには高速かつセキュアで高い信頼性が必要です。

Java EE は SOAP( JAX-WS )を使用した web サービスだけでなく強力なメッセージング( JMS )、トランザクション管理( JTS )、外部リソース接続( JCA )の機能を提供してきました。 Java EE 5 からは、宣言的で軽量な O/R マッピング( JPA )、アノテーションの使用、コンポーネントへのアクセス容易性等のために根本的なプログラミングモデルの転換が計られました。

Java EE 6 では、タイプセイフ、疎結合なプログラミングモデル( CDI )、データの制約に対する宣言的な検証( Bean Validation )、 RESTful web サービス( JAX-RS )の機能追加が行われています。

AS7 は慣れ親しんだ以前の AS のバージョンの構造とは違ったものとなっています。そのため、 Getting started with JBoss AS を参照することを推奨します。

AS7 には最小限の手間でアプリケーションが記述できるようになるための クイックスタート があります。下記の順序に従いクイックスタートの動作/ソースコードを確かめることを推奨しますが、 EE6 の経験がある場合、これらをスキップすることもできます。

Core  
Helloworld quickstart JSF, Wicket, EJB, Spring を使用したアプリケーションの開発経験がある場合、このクイックスタートをスキップすることもできます。
Numberguess quickstart JSF, Wicket, EJB, Spring, JPA, Hibernate を使用したアプリケーションの開発経験がある場合、このクイックスタートをスキップすることもできます。 
Login quickstart Java EE の達人であればこのクイックスタートをスキップすることもできます。
Kitchensink quickstart すばらしいスタートポイントです。
Optional  
Helloworld OSGi quickstart  JBoss AS で OSGi を動かしたい場合、このクイックスタートをチェックして下さい。

クイックスタートのダウンロード

クイックスタートは JBoss AS と一緒に( JBoss AS ランタイムとは別 )配布されています。JBoss AS ダウンロードページ から最新版を入手して下さい。

タグ: , ,

JBoss AS 7 Admin Guide – Management tasks – Command line parameters

今回は AS7 の起動スクリプトと AS のバインドアドレスや AS のディレクトリをカスタマイズする場合に使用するシステムプロパティについて書かれた Command line parameters について解説します。前回のエントリで Core management concepts の解説の途中段階ではありますが、これを知ってると色々便利なので。

あと、今回から解説対象のマニュアルを 7.1 系の JBoss AS Document に変更しています。 7.1 系はまだリリースされていませんがドキュメントだけはでているようです。。。

内容も 7.0 系のものとはちょっと違ってました。

Command line parameters

Domain / Standalone それぞれのモードにおいて domain.sh / standalone.sh を引数無しで実行した場合、デフォルトの設定を適用された AS7 が起動します。

以降の説明では、これら起動スクリプト実行時に引数を与えるまたは起動スクリプトを呼び出す独自スクリプトから引数を設定することでデフォルトの設定を上書きする方法について紹介します。

System properties

Domain / Standalone それぞれのモードは設定ファイルやデータの書込みディレクトリが標準位置にあることを想定したデフォル設定を使用します。

これファイルやディレクトリの標準的な位置はシステムプロパティで設定されており、システムプロパティにはデフォルト値があります。

システムプロパティを上書きするには、起動スクリプトに [-Dkey=value] 形式の jvm オプションパラメータを与えて AS を起動します。

$JBOSS_HOME/bin/standalone.sh -Djboss.home.dir=some/location/AS7/jboss-as \-Djboss.server.config.dir=some/location/AS7/jboss-as/custom-standalone

上記の例では、カスタマイズされた jboss.home.dir (ホームディレクトリ)と jboss.server.config.dir (設定ディレクトリ)を使用して standalone server  インスタンスを起動しています。特定のシステムプロパティに関する詳細については以降で解説する定義を参照して下さい。

システムプロパティの設定にはjvm オプションパラメータによるもの以外に、プパティファイルに [キー=バリュー] 形式で値を設定し起動スクリプトでこのプロパティファイルを指定することによる設定も可能です。(以下の例を参照して下さい。)

$JBOSS_HOME/bin/domain.sh –properties=/some/location/jboss.properties
$JBOSS_HOME/bin/domain.sh -P=/some/location/jboss.properties

起動スクリプトでプロパティファイルを指定するパラメータとプロパティファイルのシンタックスは domain.sh, standalone.sh あるいは MS Windows で使用される domain.bat / standalone.bat で同様となります。

プロパティファイルは [キー=バリュー] ペア形式の標準的な Java プロパティファイルとなります。

jboss.home.dir=/some/location/AS7/jboss-as
jboss.domain.config.dir=/some/location/AS7/custom-domain

Standalone

プロパティ名 使い方 デフォルト値
java.ext.dirs JDK 拡張ディレクトリの指定 null
jboss.home.dir JBoss AS 7 のルートディレクトリ standalone.sh 内で $JBOSS_HOME 変数として設定
jboss.server.base.dir server のベースディレクトリ jboss.home.dir/standalone
jboss.server.config.dir 設定のベースディレクトリ jboss.server.base.dir/configuration
jboss.server.data.dir 永続化データ(ファイル)の配置ディレクトリ jboss.server.base.dir/data
jboss.server.log.dir server.log ファイルの配置ディレクトリ jboss.server.base.dir/log
jboss.server.temp.dir 一時ファイルの配置ディレクトリ jboss.server.base.dir/tmp
jboss.server.deploy.dir デプロイされたコンテンツの配置ディレクトリ jboss.server.data.dir/contentjboss.server.data.dir/deployments

Managed Domain

プロパティ名 使い方 デフォルト値
jboss.home.dir JBoss AS 7 のルートディレクトリ domain.sh 内で $JBOSS_HOME 変数として設定
jboss.domain.base.dir domain のベースディレクトリ jboss.home.dir/domain
jboss.domain.config.dir 設定のベースディレクトリ jboss.domain.base.dir/configuration
jboss.domain.data.dir 永続化データ(ファイル)の配置ディレクトリ jboss.domain.base.dir/data
jboss.domain.log.dir host-controller.log と process-controller.log ファイルの配置ディレクトリ jboss.domain.base.dir/log
jboss.domain.temp.dir 一時ファイルの配置ディレクトリ jboss.domain.base.dir/tmp
jboss.domain.deployment.dir デプロイされたコンテンツの配置ディレクトリ jboss.domain.base.dir/content
jboss.domain.servers.dir domain で管理される server インスタンスの出力を含むディレクトリ jboss.domain.base.dir/log

Other command line parameters

AS7 起動スクリプトの引数を用いた [名前=値] 形式のパラメータ指定(コマンドラインパラメータ)が可能です。

–name=value

(例)

$JBOSS_HOME/bin/standalone.sh –server-config=standalone-ha.xml

パラメータ名が単一文字の場合、 ‘–‘ の代わりに ‘-‘ を使用することが可能です。

-x=value

(例)

$JBOSS_HOME/bin/standalone.sh -P=/some/location/jboss.properties

以前の JBoss AS のメジャーリリースで頻繁に使用されていたコマンドラインパラメータでは、互換性を保つために上記の例における “=” の スペース での代用がサポートされています。(以下の例を参照)

-b 192.168.100.10

AS7 で新たに導入されたコマンドラインパラメータについては [-x=value] 形式のシンタックスをサポートします。

次のセクションでは standalone / domain のそれぞれのモードで指定可能なコマンドラインパラメータを示します。

Standalone

名前 指定しない場合のデフォルト値
–server-config jboss.server.config.dir/standalone.xml jboss.server.config.dir からの相対パスまたは絶対パス

Managed Domain

名前 指定しない場合のデフォルト値
–domain-config jboss.domain.config.dir/domain.xml jboss.domain.config.dir からの相対パスまたは絶対パス
–host-config jboss.domain.config.dir/host.xml jboss.domain.config.dir からの相対パスまたは絶対パス

次のコマンドラインパラメータは値を持たずスレーブの host constoller でのみ使用可能です。

名前 機能
–backup スレーブの host controller に domain 設定ファイルのローカルコピーを作成/保持させます。
–cached-dc スレーブの host controller が起動時にマスタの domain controller から設定を取得できない場合に、 [–backup] を使用して事前に作成された設定のローカルコピーを使用して起動します。スレーブの host controller には domain 設定の修正が適用されないが、サーバの起動は可能です。

Common parameters

次のコマンドラインパラメータは standalone / domain の両起動スクリプトで適用可能です。

名前 機能
-b=<value> システムプロパティ jboss.bind.address に <value> を設定します。詳細は “Controlling the Bind Address with -b” を参照して下さい。
-b<name>=<value> システムプロパティ jboss.bind.address.<interface> を設定します。 <interface> は変更可能です。詳細は “Controlling the Bind Address with -b” を参照して下さい。
–version-v-V JBoss AS のバージョンを標準出力に表示し終了します。
–help-h 起動スクリプトオブションについてのヘルプを表示し終了します。

Controlling the Bind Address with -b

JBoss AS はソケットを standalone.xml, domain.xml, host.xml 中の <interfaces> 要素に含まれる IP アドレスインターフェース にバインドします。(詳細は Interfaces と Socket Bindings を参照して下さい。)

<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>

</interfaces>

これらの設定はシステムプロパティ jboss.bind.address.management および jboss.bind.address により行われ、デフォルト値はそれぞれ 127.0.0.1 となります。

Common Parameters” で解説されているように、 JBoss AS は “-b” および -b <name> コマンドラインスイッチ(パラメータ)をサポートします。これらのスイッチは jboss.bind.address および jboss.bind.address.<name> のシステムプロパティを設定します。

インターフェース設定が前述のものと同様で次のコマンドを使用して AS を起動した場合、 “public” と命名されたインターフェースのソケットは 192.168.100.10 にバインドされます。

$JBOSS_HOME/bin/standalone.sh -b=192.168.100.10

標準的な(デフォルトの)設定ファイルでは、 “public” インターフェース サーバ管理用の “management” インターフェースには結びついていません。
“public” インターフェースはエンドユーザのアクセスを処理します。

   Interface names

“public” インターフェースは特別ではなく便宜上提供されているものです。環境に合わせ独自のインターフェース名を与えることが可能です。

全ての IPv4 アドレスに public インターフェースをバインドするには次のようにして下さい。

$JBOSS_HOME/bin/standalone.sh -b=0.0.0.0

また、 management インターフェースを次のようにバインドすることも可能です。

$JBOSS_HOME/bin/standalone.sh -bmanagement=192.168.100.10

標準的な設定ファイルでは、 “management” インターフェースはサーバ管理に結びついたソケットとなります。 CLI が使用するソケット、管理コンソールが使用する HTTP ソケット、 JMX コネクタソケットがこれにあたります。

   Be Careful

-b スイッチはデフォルトで提供される設定ファイルのインターフェース(<inet-address>要素)のバインディングのみを制御します。設定ファイルの <interfaces> の子要素を <inet-addresse> から変更した場合、 -b コマンドスイッチによるインターフェースのバインディング指定は無視されます。

例えば、次の “public” インターフェースに対する設定により -b スイッチによる “public” に対する設定は無視されます。

<interface name=”public“>

<nic name=”eth0“/>

</interface>

重要なポイントは 設定ファイルによる設定内容が設定を定義し、 -b スイッチによる設定は設定ファイルの設定内容を上書きしないということです。コマンドラインパラメータはシステムプロパティを設定するための簡潔なシンタックスを便宜のために提供します。

上記の注意点( Be Careful )はかなり意訳をしたつもりなのですがそれでも意味が分かり難いので、解説が必要ですね。

インストール直後の AS7 の設定ファイル( standalone.xml )のインターフェース設定は以下の通りになっています。

<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>

</interfaces>

-b スイッチによるバインディングの設定はあくまで jboss.bind.address もしくは jboss.bind.address.management システムプロパティの値を変更するためのものです。上記の設定ファイルでは “management”, “public” がそれぞれ jboss.bind.address.management, jboss.bind.address を参照しているため、起動スクリプトの -b スイッチに与えたバインドアドレスがそれぞれのいいターフェースのバインドアドレスとして使用されます。

設定ファイルを以下のように設定した場合、前述のシステムプロパティがインターフェースのバインディング設定に使用されていないためバインドされるアドレスは -b スイッチの指定に従いません。

<interfaces>

<interface name=”management“>

<nic name=”eth0” />

</interface>

<interface name=”public“>

<inet-address value=”${jboss.bind.address:127.0.0.1}“/>

</interface>

</interfaces>

以降にシステムプロパティ/コマンドラインパラメータに関する実験とヒントを記述しておきます。是非実際に動かして動きを確認してみましょう!

[ex 1.]

ログ( server.log )の出力位置を変更する。

[ex 2.]

<http://${IPアドレス}:8080> と <http://${IPアドレス}:9990> にブラウザからアクセスした場合、前者のみアクセス可能なよう JBoss AS のバインドアドレスを変更する。

※ ${IPアドレス}にはJBossを稼働させるホストのIPアドレスを指定して下さい。

[ex 3.]

<http://${IPアドレス}:8080> と <http://${IPアドレス}:9990> にブラウザからアクセスした場合、後者のみアクセス可能なよう JBoss AS のバインドアドレスを変更する。

※ ${IPアドレス}にはJBossを稼働させるホストのIPアドレスを指定して下さい。

[ex 4.]

“public” インターフェースに対して <nic /> を使用してバインドアドレスを指定し、 -b 0.0.0.0 を指定して起動した場合の挙動を確認して下さい。


[ex 1. – hint]

起動スクリプト( standalone.sh )に -Djboss.server.log.dir=/var/log/jboss を与えることによりserver.log ファイルの配置位置を変更する。

[ex 2. – hint]

1. 起動スクリプト( standalone.sh )に -b 0.0.0.0, -b=0.0.0.0, -Djboss.bind.address=0.0.0.0 を指定する。

2. 設定ファイル( standalone.xml )の “public” インターフェースを以下のように指定する。

<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:0.0.0.0}”/>

</interface>

</interfaces>

あるいは

<interfaces>

<interface name=”management”>

<inet-address value=”${jboss.bind.address.management:127.0.0.1}”/>

</interface>

<interface name=”public”>

<nic name=”${バインド対象のNIC名}” />

</interface>

</interfaces>

[ex 3. – hint]

1. 起動スクリプト( standalone.sh )に -bmanagement=0.0.0.0 を指定する。

2. 設定ファイル( standalone.xml )の “management” インターフェースを以下のように設定する。

<interfaces>

<interface name=”management”>

<inet-address value=”${jboss.bind.address.management:0.0.0.0}”/>

</interface>

<interface name=”public”>

<inet-address value=”${jboss.bind.address:127.0.0.1}”/>

</interface>

</interfaces>

あるいは

<interfaces>

<interface name=”management”>

<nic name=”${バインド対象のNIC名}” />

</interface>

<interface name=”public”>

<inet-address value=”${jboss.bind.address:127.0.0.1}”/>

</interface>

</interfaces>

[ex 4. – hint]

インターフェース設定は管理コンソールの General Configuration – Interfaces から確認できます。

タグ: ,

JBoss AS 7 Admin Guide – Core management concepts – General configuration concepts

今回から Admin Guide (管理ガイド)の解説を行います。管理ガイドはそれなりのボリュームがあるので、十数回に分けて解説します。

今回から 3 回に分けて Core management concepts パートの解説を行います。

第 1 回は General configuration concepts です。

General configuration concepts

domain / standalone 両モードに共通となるいくつかの設定について以降で解説を行います。

Extensions

エクステンションは JBoss のコア機能を拡張するモジュールです。 AS7 のコアは非常にシンプルで軽量であり、大抵のユーザが関心のあるほとんどの機能がエクステンションとして提供されています。エクステンションは $JBOSS_HOME/modules ディレクトリにモジュールとしてパッケージングされています。特定のモジュールを使用する場合、 domain.xml / standalone.xml の <extension /> 要素を使用してモジュール名を指定します。

<extensions>

[…]

<extension module=”org.jboss.as.transactions“/>

<extension module=”org.jboss.as.web” />

<extension module=”org.jboss.as.webservices” />

<extension module=”org.jboss.as.weld” />

</extensions>

Profiles and Subsystems

standalone.xml / domain.xml において重要な設定項目は単一( standalone.xml では単一のプロファイルが定義可能です。)あるいは複数のプロファイル( domain.xml では複数のプロファイルが定義可能です。)です。

プロファイルはサブシステムの名前付けされたセットになります。サブシステムはエクステンションにより AS7 コアに追加された追加機能セットになります。

サブシステムはサーブレット処理、EJBコンテナ、JTA等のサービスを提供します。プロファイルはサブシステム各々の詳細設定を伴うサブシステムの名前付きリストになります。

多数のサブシステムを伴うプロファイルは結果として多数の機能セットを伴うサーバとなります。少数のサブシステムにフォーカスしたプロファイルは小規模の機能のサーバとなりますがフットプリントが軽量になります。

個々のプロファイル設定の個々の内容は domain.xml と standalone.xml でほぼ同様のものとなります。

唯一の違いは、 Domain モードでは複数のプロファイルを設定可能ですが、 Standalone モードでは単一のプロファイルのみが設定可能ということです。

各々のプロファイルは一つ以上のサーバグループにマッピング可能です。

個々のサブシステム設定は domain.xml と standalone.xml で全く同じものとなります。

extension と subsystem の関係を web subsystem (JBoss Web)を例に解説します。

JBoss Web はこれまでのバージョンの AS でもサーブレットコンテナとして( AS のサービスとして)使用されています。これまでは sar 形式( JBoss 独自の形式)で MBean として AS に組込まれていましたが、 AS7 ではカーネルが MSC に変更されこれまでサービスとして扱っていたサーブレットコンテナ、データソース、メッセージングといった AS の機能はサブシステム( subsystem )として扱われます。

extension / subsystem の設定方法詳細は Admin Guide – Management tasks – Subsystem configuration の際に詳しく解説しますが、大きく次の手順になります。

  1. subsystem に必要な extension の設定( standalone.xml / domain.xml )
  2. subsystem の設定( standalone.xml / domain.xml)

standalone.xml の <extensions /> を見てみましょう。

<extensions>

<extension module=”org.jboss.as.web” />

</extensions>

web subsystem に必要な “org.jboss.as.web” extension(モジュール) が設定されています。※ モジュール( module )も AS7 で新たに導入された概念で extension と同義と考えられます。

上記の例では $JBOSS_HOME/modules/org/jboss/as/web/main に配置された module.xml がロードされ、必要なリソース( JBoss Web に必要な複数の jar ファイル)がモジュールとしてロードされます。( module.xml にはモジュールに必要なリソースと依存する他のモジュールが定義されています。)

subsystem にどんな extension が必要かについては Admin Guide – Management tasks – Subsystem configuration に、代表的な subsystem の設定方法と共に記述があります。

ちなみに、モジュール名とモジュールの配置位置は基本的に “a.b.c” => $JBOSS_HOME/modules/a/b/c/main/module.xml という関係になっています。

次に standalone.xml の <subsystem xmlns=”urn:jboss:domain:web:1.0″ …> を見てみましょう。

<subsystem xmlns=”urn:jboss:domain:web:1.0” default-virtual-server=”default-host”>

<connector name=”http” scheme=”http” protocol=”HTTP/1.1″ socket-binding=”http”/>

<virtual-server name=”default-host” enable-welcome-root=”true”>

<alias name=”localhost” />

<alias name=”example.com” />

</virtual-server>

</subsystem>

web subsystem の設定がされています。※ XML 名前空間は “urn:jboss:domain:web:1.0” となり、 $JBOSS_HOME/docs/schema/jboss-as-web_1_0.xsd が XML スキーマになります。

サーブレットコンテナに対する設定( JSP の解析に関する設定, Connector 設定等)は web subsystem に対して行います。

subsystem と XML 名前空間の関係については Admin Guide – Management tasks – Subsystem configuration に、代表的な subsystem の設定方法と共に記述があります。

※ web subsystem の設定方法詳細については Admin Guide – Management tasks – Subsystem configuration – Web subsystem configuration を参照して下さい。

Paths

ファイルシステムパスの論理名です。

domain.xml, host.xml, standalone.xml はパスが設定可能なセクションを含みます。これらの設定ファイル中の他のセクションはこのパスを論理名を使用して参照します。物理パス名はマシンにより異なるため、完全な詳細物理パスを含むよりむしろこの方法が一般的です。

例えば、ロギングサブシステムは、 ”jboss.server.log.dir” への参照を含みます。これはサーバの “log” ディレクトリを指します。

<file relative-to=”jboss.server.log.dirpath=”server.log“/>

AS7はユーザが設定ファイルに定義しなくても自動的にいくつかの標準パスを提供します。

  • jboss.home — JBoss AS のルートディレクトリ
  • user.home — ユーザのホームディレクトリ
  • user.dir — ユーザのカレント作業ディレクトリ
  • java.home – JDK インストールディレクトリ
  • jboss.server.base.dir — 個々のサーバインスタンスのルートディレクトリ
  • jboss.server.data.dir  永続化データ(ファイル)格納ディレクトリ
  • jboss.server.log.dir  ログファイル格納ディレクトリ
  • jboss.server.tmp.dir  一時ファイル格納ディレクトリ
  • jboss.domain.servers.dir  host コントローラが個々のサーバインスタンスのための作業エリアを作成するディレクトリ( Domain モードの場合のみ)

設定ファイルの <path /> 要素を追加することにより、上記の最初の 5 つのものを除いてパスの追加/上書きが可能です。

以下の例では、 jboss.server.data.dir/example ディレクトリに example という名前の論理パスを定義しています。

<path name=”example” path=”example” relative-to=”jboss.server.data.dir“/>

<path /> 要素の属性は以下の通りです。

  • name — パスの論理名
  • path — 実際のファイルシステムパス、 ‘relative-to’ 属性が指定されない限り絶対パスとして扱われます。 ‘relative-to’ が指定された場合、 ‘relative-to’ で指定されたパスへの相対パスとして扱われます。
  • relative-to — (オプション)前もって定義された他の論理パス名もしくはシステムの標準パス

domain.xml のパス要素については name 属性以外の属性を含める必要はありません。つまり、実際のファイルシステムのパスが何であるかの情報を含める必要はありません。(以下の例参照)

<path name=”x“/>

上記の設定例は単純に、 ” ‘x’ と命名されたパスがあり、 domain.xml の他のパートから参照可能” ということを意味しています。 ‘x’ により示される実際のファイルシステムの場所は、ホストに特化したものであるため各マシンの host.xml にて指定します。このアプローチをとる場合、各々のマシンの host.xml において実際のファイルシステムのパスを指定する必要があります。(以下の例参照)     

<path name=”x” path=”/var/x” />

standalone.xml で <path /> 要素を使用する場合、実際のファイルシステムパスを指定する必要があります。

Interfaces

ソケットがバインド可能なIPアドレス/ホスト名の論理名を表します。 

domain.xml, host.xml, standalone.xml はインターフェースが宣言可能なセクションを含みます。これらのインターフェース論理名は他のセクションからの参照が可能です。(インターフェースの物理的な詳細情報はマシンによって異なるため、この形式は個々のセクションでインターフェースの詳細を定義する形式よりも適切です。)

インターフェース設定はインターフェース論理名だけでなく実際に使用する物理アドレスの解決のための基準情報が含まれます。詳しくは Admin Guide – Management tasks – Interfaces and ports を参照して下さい。

domain.xml に含まれる <interface /> 要素には name 属性以外の属性を含める必要がありません、つまり、論理名に関連付いた実際のIPアドレスを指定する必要はありません。(以下の例参照)

<interface name=”internal”>

<nic name=”eth1″/>

</interface>

standalone.xml 中の <interface /> 要素はIPアドレスを定義するための基準情報を含む必要があります。

Socket Bindings and Socket Binding Groups

ソケットバインディングはソケットの名前付き設定になります。

domain.xml と standalone.xml は名前付きソケット設定が宣言可能なセクションを含みます。これらのソケット設定はその他のセクションから論理名により参照可能です。(ソケットの物理的な詳細情報はマシンによりって異なるため、この形式は個々のセクションでソケットの詳細を定義する形式よりも適切です。)詳しくは Admin Guide – Management tasks – Interfaces and ports を参照して下さい。

interface と socket-binding について standalone.xml を見てみましょう。

<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>

</interfaces>

上の例では、 “management” と “public” という名前のインターフェースが設定されています。

“public” インターフェースは “jboss.bind.address” という名前のシステムプロパティもしくは起動時( standalone.sh )に -b スイッチでアドレスの指定がされていない場合、 “127.0.0.1” にバインドされます。

※ バインドアドレスの設定方法詳細については Admin Guide – Management taskd – Command line parameters を参照して下さい。

<socket-binding-group name=”standard-sockets” default-interface=”public”>

<socket-binding name=”http” port=”8080″/>

<socket-binding name=”https” port=”8443″/>

<socket-binding name=”jndi” port=”1099″/>

</socket-binding-group>

上の例では、”http”, “https”, “jdni” という名前のソケットバインディングがそれぞれ “8080”, “8443”, “1009” ポートに対して設定されています。

これらのソケットバインディングは “public” という名前のインターフェース(※  前述)を使用していますので、 “http” であれば 127.0.0.1:8080 にバインドされます。

ちなみに、 “http” は web subsystem の connector から参照されている(以下参照)ので、 web subsystem は 127.0.0.1:8080 をリスンします。

<subsystem xmlns=”urn:jboss:domain:web:1.0″ default-virtual-server=”default-host”>

<connector name=”http” scheme=”http” protocol=”HTTP/1.1″ socket-binding=”http“/>

</subsystem>

System Properties

システムプロパティは、domain.xml, host.xml, standalone.xml のいくつかの箇所で設定可能です。

standalone.xml 中のシステムプロパティはサーバの起動プロセスの一部として設定されます。 domain.xml, host.xml 中のシステムプロパティは各サーバ(server)の起動時に適用されます。

domain.xml, host.xml でシステムプロパティが定義された場合、それらがどのバーバに適用されるか(システムプロパティのスコープ)はそれらの定義場所により異なります。

     domain.xml のルート要素の子要素に設定されたシステムプロパティは全てのサーバに共有されます。

     domain.xml の <server-group /> 中の <system-property /> に設定されたシステムプロパティはそのグループ中の全てのサーバに共有されます。

     host.xml のルート要素に子要素に設定されたシステムプロパティは当該ホストコントローラが管理する全てのサーバに共有されます。

     host.xml の <server /> 中の <system-property /> に設定されたシステムプロパティは当該サーバ中で共有されます。

同一名のプロパティを複数箇所で設定した場合、 <server /> 要素中で設定されたものが host.xml のルート要素下で設定されたものより優先されます、host.xml で設定されたものは domain.xml で設定されたものより優先されます、 <server-group /> 中で設定されたものは domain.xml のルート要素下で設定されたものより優先されます。

デフォルトの domain.xml には以下のシステムプロパティ( “java.net.preferIPv4Stack”:”true” )が設定されています。

<system-properties>

<property name=”java.net.preferIPv4Stack” value=”true“/>

</system-properties>

このプロパティはルート要素の子要素に設定されているので、 domain に参加する全ての server に共有されます。

タグ: ,