2009-09-04 10 views
30

プロパティファイルから設定パラメータを読み込むTomcatデプロイメントを作成するには、どのような方法がありますか?プロパティファイルを使用してDB接続情報をロードするようにTomcatを設定する

WARファイルを配信し、クライアントが特定のディレクトリにプロパティファイルを作成または編集するだけで済むように指定するとよいでしょう。これはやや日常的なやり方ですか?これよりも良いアプローチがありますか?

答えて

14

WARと、tomcat/conf/Catalina/localhostディレクトリに配置されたContext XMLファイルを提供することでWebアプリケーションを配布し、任意のパスからWebアプリケーションを読み込むことができます。参考資料hereがあります。これは、次のような利点を提供します。

  • コンテキストパラメータは、ここで設定し、
  • データソースを定義することができるWebアプリケーションで読み取ると、ここで設定することができます
  • 実際にあればことを意味し、ファイルシステム、上の任意の場所に住むことができるWAR Tomcatはアップグレードされ、この単一の設定ファイルのみを新しいTomcatインストールに移動する必要があります.Webアプリケーションと他のファイルはそのまま残すことができます。

本当にプロパティファイルが必要な場合は、文脈XでMLファイルを開き、ServletContextListenerのパラメータを読み取り、プロパティファイルを読み込みます。

9

我々はこれを処理する方法:

  1. は、クライアントが我々が同意リソース名を使用してGlobalNamingResourcesに接続プールを作成してもらいます。データベースドライバはTomcatのクラスパスに存在する必要があります。
  2. 当社のwarファイルには、META-INF /これは単にコンテキストを変更するよりも少しアップフロントの仕事であるステップ1

で構成された接続プールへのリンクResourceLinkを持っているのcontext.xmlファイルが含まれています。 xmlの接続情報を直接、しかし時間がたつにつれて返済しなければなりません。開発サーバーは、開発を指すGlobalNamingResourcesとテストサーバーがテストなどを指すようにセットアップされます。次に、同じWARファイルを何も編集せずに各サーバーにコピーできます。

これはプロパティファイルを使用していませんが、同じ目標を達成していると思います。ユーザー/顧客がデータベース接続情報を設定できるようにします。 GlobalNamingResourceの

例:WARファイル内のcontext.xmlの

<Resource name="jdbc/dbconnection" auth="Container" 
type="javax.sql.DataSource" driverClassName="oracle.jdbc.driver.OracleDriver" 
url="jdbc:oracle:thin:@127.0.0.1:1546:SID" 
username="scott" password="tiger" maxActive="8" maxIdle="4" 
validationQuery="select 1 from dual" 
testOnBorrow="true"/> 

例:

<Context path="/MyWebApp" docBase="MyWebApp" debug="5" reloadable="true"> 
    <ResourceLink name="jdbc/dbconnection" global="jdbc/dbconnection" 
      type="javax.sql.DataSource"/> 
</Context> 
7

それは戦争ゾーンの外に設定を保存することをお勧めします。 WARでは、プロパティファイルを探すデフォルトの場所があります。デフォルトが機能しない場合は、conf/Catalina/[host]ディレクトリのcontext fragmentで定義されたJVMパラメータまたはコンテキストパラメータを使用して場所を指定できます。たとえば、

<Context docBase="/server/app.war" 
    swallowOutput="true" unpackWAR="false" useNaming="false"> 

    <Parameter name="config-file" value="/config/db.properties" override="true" /> 
</Context> 
関連する問題