Home > Documentation > 1. 管理 > 1.7. Geronimo の実行 > 1.7.1. 複数リポジトリー |
本記事は、Geronimo 2.0 以降を対象としています。
この記事では Geronimo の一つの導入インスタンスから、複数サーバーのインスタンスを実行する方法を述べます。サーバーのインスタンスができるだけ、ベースとなる Geronimo アーティファクトおよびファイル・システムのスペースを共有します。下記はデフォルトでの Geronimo ディレクトリーおよび <geronimo_home> 下のサブ・ディレクトリーです。
<geronimo_home> は Geronimo を導入したディレクトリーです。 bin, lib そして schema ディレクトリーは読み取り専用ですので、インスタンス間で共有できます。導入したばかりの Geronimo インスタンスが通常占有するディスク・スペースは var と repository で均等にそれぞれ約 50 MB に分割されています。その他は無視できるくらいの容量です。 var のほとんどを占める 40 MB は ActiveMQ ジャーナル・ファイルです。これによって特に、各サーバー・インスタンスに対して一つずつ、第二リポジトリーとして使用できる、という考えができます。
単純な read/write パーティションのケイパビリティーに加えて、ディレクトリーへのアクセス許可というセキュリティの観点もあります。各サーバー・インスタンスは、自分自身の、たとえば var ディレクトリーだけに read/write 権限があります。
リポジトリーを共有しているかどうかにかかわらず、複数サーバーを実行させるためのフィーチャーは、構成サブスティテューション・プロパティ・ファシリティである config.xml を以下の形式で記述します。
その他、この記述方法で、下記により設定される値を使用し、jexl に関しての評価を行います。
サーバー・インスタンスを Geronimo に作成するのは容易です。
サーバー起動前に、org.apache.geronimo.server.name
システム・プロパティをインスタンス名に変更します。
-Dorg.apache.geronimo.server.name=foo
を使用し、あなたのインスタンス foo を命名します。GERONIMO_OPTS
環境変数に追加する、もしくはorg.apache.geronimo.server.name
名は <geronimo_home> からの(降順で)相対するパス名になります。たとえば、servers/bar は、サーバーの var ディレクトリーを、
<geronimo_home>/servers/bar の下に配置します。
org.apache.geronimo.server.dir システム・プロパティも使用できますが、
org.apache.geronimo.server.name
をオーバーライドします。org.apache.geronimo.server.dir
として絶対パスを指定してください。 <geronimo_home> との相対的な関係は必要ありません。たとえば、 /ag20/servers/bar
サーバーの var ディレクトリーを /ag20/servers/bar
下に配置します。そのようにしない場合は、2つのシステム・プロパティは同一に振舞います。mkdir foo
foo/var/config/config-substitutions.properties
を編集し、 PortOffset
のコメントを外し、1,2,10,11,12,20,21,22,...のような値に変更し、新規インスタンスのポートが、すでに定義済か始動済の既存のサーバー・インスタンスと衝突しないようにします。
(それに代わる方法として、 コマンドラインからプロパティ -Dorg.apache.geronimo.config.substitution.PortOffset=3 を指定しサーバーを開始します。)新規サーバー・インスタンスへアプリケーションをデプロイするには、 NamingPort+PortOffset を指定し、PortOffset=1 のように使用します。
まず、シングル・サーバー・インスタンスの場合で、セカンド・レジストリーの追加を考えてみましょう。 Geronimo はリポジトリーに残したまま、アプリケーションのデプロイ用にセカンド・リポジトリーを追加します。セカンド・リポジトリーの追加はとても簡単です。
mkdir <geronimo_home>/repo2s
#* コマンドにより作成します。上記の例では、ディレクトリーは、 Maven2Repository GBean, repo2s/
の root
属性で指定されます。 ベース・ディレクトリー<geronimo_home> と相対関係にあります。
resolveToServer
属性はリポジトリーの場所を特定します。
true
の場合はこのパスが baseServer と相対関係にあり、複数サーバー・インスタンスを扱うには便利です。false
の場合はこのパスがベース・ディレクトリー <geronimo_home> と相対関係にあります。deploy deploy repo2.xml を通し、repo2.xml
をデプロイすることにより実施します。
deploy
コマンドはスクリプト <geronimo_home>/bin/deploy.{bat,sh}であり、オペレーティング・システムあわせてどちらか(bat,sh)を使用します。 <geronimo_home>/bin ディレクトリーからか、もしくはパスにそのディレクトリーを通しておいて、deploy
とタイプするだけです。
新規のリポジトリーを使用するのは少し癖があります。現在のところコマンドラインからのみのサポートとなります。重要な点は deploy
コマンドの --targets
オプションを使用することであり、新規リポジトリーにご自身のモジュールをデプロイするためにターゲットします。まず、デプロイヤー list-targets コマンドを使用し、リポジトリーを参照します。ターゲット名は長くて扱いにくくなっています。
deploy list-targets
利用可能なターゲット:
org.example.configs/myrepo/2.0-SNAPSHOT/car?ServiceModule=org.example.configs/myrepo/2.0-SNAPSHOT/car,j2eeType=ConfigurationStore,name=Local2
org.apache.geronimo.configs/j2ee-system/2.0-SNAPSHOT/car?ServiceModule=org.apache.geronimo.configs/j2ee-system/2.0-SNAPSHOT/car,j2eeType=ConfigurationStore,name=Local
環境変数の使用にはコマンドラインを推奨します。たとえば、 set SEPO2=
org.example.configs/myrepo/2.0-SNAPSHOT/car?ServiceModule=org.example.configs/myrepo/2.0-SNAPSHOT/car,j2eeType=ConfigurationStore,name=Local2.
新規のリポジトリーをデプロイするには deploy deploy --targets %REPO2% sample.war
コマンドを使用します。
deploy list-modules
はまた、各 repo に対して長いターゲット名を付与します。それに続くのが、 repo にデプロイされた各モジュールの、通常の短い名前です。
deploy list-modules %REPO2%
によってターゲットの repo に対してのいつもの短いアウトプットが与えられます。
repo からのアンデプロイのシンタックスは deploy undeploy "%REPO2%|geronimo/jsp-examples/1.1.1/war"
となります。
文字 | がリポジトリー名とモジュール名を区分します。引用句 " はパラメーター全体にわたって使用され、コマンド・シェルが解釈できるように特別な文字を制御(エスケープ)します。
もし --targets
がデプロイ・コマンドで指定されなかった場合、モジュールは全リポジトリーに対してデプロイされます。これは明らかに望ましくありません。モジュールを特定のあるリポジトリーに配置したいのであれば、必ず --targets
オプションを使用してください!
複数サーバー・インスタンスの場合には、 各サーバーに対して、別のパスが、 Maven2Repository root 属性として付与されます。 config.xml
とともに、各サーバー・インスタンスに対してオーバーライドされます。もっとよいやり方は GBean への resolveToServer
属性の追加です。それによって、 root
属性が repository に設定され、各サーバー・インスタンスにとってユニークになり、各インスタンスにとって変更がまったく必要ありません。各サーバー・インスタンスは <geronimo_home>/<instance_name>/repository
に配置されるリポジトリーを持ちます。
複数リポジトリーへのコンソール・サポート、およびホット・デプロイおよびプラグインのサポートはありません。
ここでちょっとご紹介しておきたいのは、どのリポジトリーに、新規のリポジトリーがデプロイされるか、ということです。明らかに、セカンド・リポジトリー(たとえば上記 repo2.xml
) はファースト・リポジトリーにデプロイされます。このように、ファースト・リポジトリーを読み取り専用とすることは、動的に追加されるリポジトリーとしては動作しません。おそらく、セカンド・リポジトリーが追加され、これらサーバー・ユニークなリポジトリーを含むことになります。セカンド・リポジトリーは共有され読み取り専用でなくてはなりませんので、ユースケースにはぴったりとフィットしません。
Bookmark this on Delicious Digg this | Privacy Policy - Copyright © 2003-2009, The Apache Software Foundation, Licensed under ASL 2.0. |