实例之间是否共享Tomcat JDBC连接池?

Sco*_*ner 5 java tomcat jndi jdbc java-ee

现在,我们有了一个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&amp;jdbcCompliantTruncation=false"/>
< /Context>
Run Code Online (Sandbox Code Playgroud)

问题是,如果我要对其进行标准化,以便在所有已部署实例上将连接池而不是唯一名称称为jdbc / database,那么是否存在数据库交叉的可能,即一个客户在另一个客户的数据库中,或者这些本地化到一个特定的已部署实例?

有什么想法吗?谢谢,斯科特

eri*_*son 5

否。数据源名称的范围是一个Tomcat实例。

如果要为每个客户启动一个单独的Tomcat进程,那么所有重要的是数据源的配置方式,而不是Tomcat所谓的配置方式。只要将每个数据源配置为使用不同的数据库,就不会有任何串扰。