2009-08-27 19 views
4

私たちは現在、クライアントごとにコピーを展開するWebアプリケーションを用意しています。私たちの現在の展開戦略は、インスタンスごとに一意の名前のjdbc接続プールを作成することです。 jdbc/clientと言ってください。彼らはこのように指定されている私が代わりにユニークな名前の接続プールがデプロイされたすべてのインスタンス上のJDBC /データベースと呼ばれるように、それを標準化した場合...Tomcat JDBC接続プールはインスタンス間で共有されますか?

< Context path="/" 
     reloadable="true" 
     docBase="\home\client\ROOT" 
     debug="5" > 
     < Resource name="jdbc/client" 
       auth="Container" 
       type="javax.sql.DataSource" 
       maxActive="100" 
       maxIdle="30" 
       validationQuery="SELECT 1" 
       testWhileIdle="true" 
       timeBetweenEvictionRunsMillis="300000" 
       numTestsPerEvictionRun="6" 
       minEvictableIdleTimeMillis="1800000" 
       maxWait="10000" 
       username="user" 
       password="pass" 
       driverClassName="com.mysql.jdbc.Driver" 
       url="jdbc:mysql://databaseserver:3306/client ?zeroDateTimeBehavior=convertToNull&amp;jdbcCompliantTruncation=false"/> 
< /Context> 

質問は、データベースのチャンスがありますされますすなわち、別の顧客のデータベースにいるある顧客、または特定の導入されたインスタンスにローカライズされていますか?

思考? ありがとう、 Scott

+0

メモリにはtomcatのコピーが1つしかありませんが、複数の展開されたwarファイルがあります –

答えて

4

いいえいいえ、データソース名のスコープは1つのTomcatインスタンスです。

カスタマーごとに別々のTomcatプロセスを開始する場合、重要なことは、データソースの設定方法であり、Tomcatが呼び出すものではありません。各データソースが異なるデータベースを使用するように構成されている限り、クロストークは発生しません。

1

アプリケーションのデプロイメントのコンテキスト内でJNDI DataSourceリソースを定義している場合、同じアプリケーションの複数のコピーを同じTomcatインスタンスで実行し、同じJNDI名を使用して異なるデータベース。各アプリケーションインスタンスがTomcatの別のインスタンスで完全に実行されている場合、あるインスタンスが別のインスタンスに対して指定されたデータベースを参照する方法はありません。

+0

同じJNDI名を使用する2つのアプリケーションがありますが、異なるdbスキーマ、残念なことに、1つのリソースだけが両方のために使用されています...あなたは私を助けることができますか? –

3

これは、各クライアントが自分のTomcatのインストールを取得する場合は、(それらが異なるCATALINA_HOMEを持っている)、

  1. を各クライアントのアプリケーションをデプロイする方法によって異なり、それが横断するために可能性はありません。
  2. Tomcatで同じインストールを使用するが、別のホストとして実行する場合、すべてのホストで共有されるconf/context.xmlにデータソースを定義しないようにする必要があります。
  3. すべてのクライアントが同じTomcatインスタンスを共有していて、単に異なるWebアプリケーションである場合は、より多くの注意が必要です。 META-INF/context.xmlまたはWEB-INF/web.xmlにデータソースを定義する必要があります。さらに分離するには、dbcp.jarを各アプリケーションのWEB-INF/libにコピーして、独自のDBCPインスタンスを使用するようにしてください。
0

いいえデータソース名のスコープが1つのTomcatインスタンスであり、単一のTomcatインスタンス内に複数のデータソースを持つことができません....データソースが異なる限り.....データベースを横断する機会はありません.....

関連する問題