2009-04-09 30 views
1

Tomcatで実行している単純なサーブレットがあります。サーブレットはデータベースに接続するため、接続プーリングを使用する必要があります。しかし、インターネット上のすべての例では、(開発者が)サーブレットが接続しているデータベースを決して変更しないことを前提としています。tomcat接続プール

たとえば、次のサンプルのcontext.xmlファイルがあります。私の場合は

<?xml version="1.0" encoding="UTF-8"?> 
<Context antiJARLocking="true" path="/feeds"> 
    <Resource name="jdbc/TestDB" 
     auth="Container" 
     type="javax.sql.DataSource" 
     factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory" 
     username="username" 
     password="password" 
     driverClassName="org.postgresql.Driver" 
     url="jdbc:postgresql://example.com:1234/myDB" 
     maxWait="1000" 
     removeAbandoned="true" 
     maxActive="30" 
     maxIdle="10" 
     removeAbandonedTimeout="60" 
     logAbandoned="true"/> 
</Context> 

、私はテストサーバー(PostgreSQLの)と本番サーバ(ミリ秒SQL)を持っているので、すべてのチュートリアルは、私はちょうどのcontext.xmlの設定は動作しませんハードコーディングできると仮定。

私は2つの異なるプロパティファイルをデータベースのURL、認証などに使用していますが、テストサーバー用とプロダクションサーバー用の2つのプロパティファイルがありますが、これはうまく機能しますが、接続プールを使用する場合、私はこれを私のサーブレットに統合しますか?

Netbeans 6.5で "ビルド"を行い、distディレクトリで戦争を行い、新しい戦争の後にxmlファイルを変更しなくても、いずれかのサーバーのtomcatアプリケーションディレクトリにドロップしたいと思っています。導入されました。サーブレットは各システムでプロパティファイルを取得する場所を知っているので、プロパティファイルを接続プーリングプロパティと統合することができれば、すべて設定されます。

いずれかのアイデア...?

答えて

4

私のすべてのデータソース定義をtomcatのconf/server.xmlファイルに入れて、戦争はデータソースから完全に独立しています。

のserver.xml:

<GlobalNamingResources> 
    <Resource name="mail/Mail" auth="Container" type="javax.mail.Session" 
       mail.smtp.host="localhost"/> 
    <Resource auth="Container" type="javax.sql.DataSource" name="jdbc/lagalerie" 
       driverClassName="org.postgresql.Driver" 
       url="jdbc:postgresql://localhost/lagalerie?charSet=LATIN1" 
       maxActive="100" maxIdle="30" maxWait="10000" 
       username="casashop" password="casashop"/> 
</GlobalNamingResources> 

のcontext.xml:

<ResourceLink global="jdbc/lagalerie" name="jdbc/lagalerie" type="javax.sql.DataSource"/> 
    <ResourceLink global="mail/Mail" name="mail/Mail" type="javax.mail.Session"/> 

のweb.xml:これはあまりにも動作しますが、私はモーリスから解決策を好む

<resource-ref> 
    <description>The datasource</description> 
    <res-ref-name>jdbc/DataSource</res-ref-name> 
    <res-type>javax.sql.DataSource</res-type> 
    <res-auth>Container</res-auth> 
</resource-ref> 
<resource-ref> 
    <description>The mail session</description> 
    <res-ref-name>mail/Mail</res-ref-name> 
    <res-type>javax.mail.Session</res-type> 
    <res-auth>Container</res-auth> 
</resource-ref> 
+0

これはまさに私が探していたものです。ありがとう。 – user85116

-1

2つの異なる接続を持つことができ、アプリケーションでどの接続を使用するかを即座に検出できます。

+0

。ありがとう... – user85116