1

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) と運用サーバー (ms sql) があるため、context.xml で設定をハードコーディングできると仮定したすべてのチュートリアルは機能しません。

データベースの URL、認証などに 2 つの異なるプロパティ ファイルを使用しています。1 つはテスト サーバー用、もう 1 つは運用サーバー用です。私のサーブレット?

Netbeans 6.5 で「ビルド」を実行し、dist ディレクトリで war を取得し、いずれかのサーバーの tomcat アプリケーション ディレクトリにドロップできるようにしたいと考えています。新しい war がデプロイされた後に xml ファイルを変更する必要はありません。サーブレットは、各システムでプロパティ ファイルを取得する場所を認識しているため、プロパティ ファイルを接続プーリング プロパティと統合できれば、準備は万端です。

何か案は... ?

4

2 に答える 2

4

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

サーバー.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>
于 2009-04-09T17:32:53.387 に答える
-1

2 つの異なる接続を使用して、アプリケーションで使用する接続をオンザフライで検出できます。

于 2009-04-09T16:26:40.893 に答える