多くの異なる顧客に同じWebアプリケーションを導入したいと思います。各デプロイメントでは、web.xml構成ファイルのいずれかの要素に異なる値が必要です。web.xmlの設定をカスタマイズするには
カスタマーごとに異なる.warファイルを作成せずに(各.warのweb.xmlに異なる値を設定)、異なる顧客の値を設定することは可能ですか?たとえば、web.xmlファイルは、デプロイメントプロパティファイルから値を取得できますか?
サーブレットコンテナとしてTomcatを使用しています。
多くの異なる顧客に同じWebアプリケーションを導入したいと思います。各デプロイメントでは、web.xml構成ファイルのいずれかの要素に異なる値が必要です。web.xmlの設定をカスタマイズするには
カスタマーごとに異なる.warファイルを作成せずに(各.warのweb.xmlに異なる値を設定)、異なる顧客の値を設定することは可能ですか?たとえば、web.xmlファイルは、デプロイメントプロパティファイルから値を取得できますか?
サーブレットコンテナとしてTomcatを使用しています。
TomcatのJNDI supportを使用すると、web.xmlの外部で変更するプロパティを指定できます。
<Context ...>
...
<Environment name="maxExemptions" value="10"
type="java.lang.Integer" override="false"/>
...
</Context>
は、その後、あなたのweb.xmlにこの環境変数へのリンクを指定:
<env-entry>
<env-entry-name>maxExemptions</param-name>
<env-entry-type>java.lang.Integer</env-entry-type>
</env-entry>
そして、あなたのコードから呼び出す
例えば、Context要素内の環境エントリを指定します(Professional Apache Tomcat 6から):
private final Object lock = new Object();
...
synchronized (lock) {
Context initCtx = new InitialContext();
Context envCtx = initCtx.lookup("java:comp/env");
Integer maxExemptions = (Integer) envCtx.lookup("maxExemptions");
}
Oあなたは、Springを使ってあなたのアプリケーションにあなたの価値を注入することができます。<jndi-lookup />
<bean id="someBean">
<property name="maxExemptions">
<jndi-lookup jndi-name="xxx" />
</property>
</bean>
短い答え:戦争を変えずにはできません。
さらに複雑なバージョン:warには、アプリケーションサーバーまたはWebサーバーのコンソールを使用して変更できるパラメータとデフォルト値が含まれていることがあります。それはあなたが設定したいもの、これらの標準的なコンテキスト/サーブレット/ ...のパラメータですか?
この要素をweb.xmlの外に移動できますか?プロパティファイルから読み込むことができれば、各顧客ごとに異なるプロパティファイルを作成し、各顧客のプロパティファイルで戦争をパッケージ化することができます。次に、実行時に、環境変数に基づいて適切なプロパティー・ファイルを読み取ることができます。