[英]Do Tomcat JDBC Connection pools get shared between instances?
我們現在有一個Web應用程序,我們為每個客戶端部署一個副本。 我們當前的部署策略是為每個實例創建一個唯一命名的jdbc連接池。 所以說jdbc / client。 它們被指定為......
< 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&jdbcCompliantTruncation=false"/>
< /Context>
問題是,如果我要對其進行標准化,以便在所有已部署的實例上將連接池稱為jdbc / database而不是唯一的名稱,是否存在數據庫交叉的可能性,即另一個客戶的數據庫中的一個客戶,或者這些是本地化的特定部署的實例?
思考? 謝謝,斯科特
不可以。數據源名稱的范圍是一個Tomcat實例。
如果要為每個客戶啟動單獨的Tomcat進程,那么重要的是數據源的配置方式,而不是Tomcat所稱的方式。 只要每個數據源配置為使用不同的數據庫,就不會有任何串擾。
這取決於您為每個客戶端部署應用程序的方式,
如果您要在Context中為應用程序的部署定義JNDI DataSource
資源,我相信您甚至可以在同一個Tomcat實例中運行相同應用程序的多個副本,並使用相同的JNDI名稱來訪問不同的數據庫。 如果每個應用程序實例完全在不同的Tomcat實例中運行,那么一個實例肯定無法引用為另一個實例指定的數據庫。
沒有數據庫交叉的機會becoz數據源名稱的范圍是一個Tomcat實例,你可以在單個tomcat實例中有多個數據源....所以只要數據源不同就沒有數據庫交叉的可能性.....
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.