あなたのコードを分割することなくTomcatのcontext.xml設定で行うことができます。
あなたは一例/a
と/b
2つの異なるグローバルデータソース「sharedDataSourceA」と「sharedDataSourceB」ための2つのコンテキストを定義することができます。別のグローバルデータソースを「appDataSource」のような同名のコンテキストにバインドすることができます。
<GlobalNamingResources>
...
<Resource name="sharedDataSourceA"
global="sharedDataSourceA"
type="javax.sql.DataSource"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
alternateUsernameAllowed="true"
username="bar"
password="barpass"
...
<Resource name="sharedDataSourceB"
global="sharedDataSourceB"
type="javax.sql.DataSource"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
alternateUsernameAllowed="true"
username="bar"
password="barpass"
...
...
</GlobalNamingResources>
<Context path="/a"...>
...
<ResourceLink
name="appDataSource"
global="sharedDataSourceA"
type="javax.sql.DataSource"
factory="org.apache.naming.factory.DataSourceLinkFactory"
username="foo"
password="foopass"
...
</Context>
<Context path="/b"...>
...
<ResourceLink
name="appDataSource"
global="sharedDataSourceA"
type="javax.sql.DataSource"
...
</Context>
は、次に、あなたのコードでは、JNDIルックアップによって"appDataSource"にデータソースをバインドすることができます。同じ戦争を/a
と/b
に配備する。彼らは別のデータベースで動作します。
なぜ各戦争の構成ファイルを異なるデータベースを指すように変更しないのですか? –
@LukeBajada:1つか2つの財産が異なるからといって、2戦争をするのは好きではない。 – codesmith
@Henry:env変数またはシステムプロパティはシステム全体にわたり、したがってコンテナ全体であり、したがって戦争固有ではありません。説明してください。 – codesmith