|
| Home > Apache Geronimo v2.0 - JA > 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 を以下の形式で記述します。
${prop1 + prop2 + prop3}
その他、この記述方法で、下記により設定される値を使用し、jexl に関しての評価を行います。
サーバー・インスタンスを Geronimo に作成するのは容易です。
新規サーバー・インスタンスへアプリケーションをデプロイするには、 NamingPort+PortOffset を指定し、PortOffset=1 のように使用します。
まず、シングル・サーバー・インスタンスの場合で、セカンド・レジストリーの追加を考えてみましょう。 Geronimo はリポジトリーに残したまま、アプリケーションのデプロイ用にセカンド・リポジトリーを追加します。セカンド・リポジトリーの追加はとても簡単です。
<?xml version="1.0" encoding="UTF-8"?> <module xmlns="http://geronimo.apache.org/xml/ns/deployment-1.2"> <environment> <moduleId> <groupId>org.example.configs</groupId> <artifactId>myrepo</artifactId> <version>2.0.1</version> <type>car</type> </moduleId> <dependencies> <dependency> <groupId>org.apache.geronimo.configs</groupId> <artifactId>j2ee-system</artifactId> <version>2.0.1</version> <type>car</type> </dependency> </dependencies> <hidden-classes/> <non-overridable-classes/> </environment> <!--Repository--> <gbean name="Repo2" class="org.apache.geronimo.system.repository.Maven2Repository"> <attribute name="root">repo2s/</attribute> <attribute name="resolveToServer">true</attribute> <reference name="ServerInfo"> <name>ServerInfo</name> </reference> </gbean> <!--Configuration Store service--> <gbean name="Local2" class="org.apache.geronimo.system.configuration.RepositoryConfigurationStore"> <reference name="Repository"> <name>Repo2</name> </reference> </gbean> </module>
|
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= |
新規のリポジトリーをデプロイするには 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 ) はファースト・リポジトリーにデプロイされます。このように、ファースト・リポジトリーを読み取り専用とすることは、動的に追加されるリポジトリーとしては動作しません。おそらく、セカンド・リポジトリーが追加され、これらサーバー・ユニークなリポジトリーを含むことになります。セカンド・リポジトリーは共有され読み取り専用でなくてはなりませんので、ユースケースにはぴったりとフィットしません。 |