Tomcat 7连接池问题

时间:2014-03-10 12:38:12

标签: java tomcat7 sybase

我似乎偶然发现了tomcat 7和连接池的奇怪行为......

在我的应用程序中,我有以下3个数据源 - 连接到相同的数据库,但是不同的服务(并且在所有3个中都是相同的)

jdbc:sybase:Tds:<db_ip_address>:<db_port>/service1
jdbc:sybase:Tds:<db_ip_address>:<db_port>/service2
jdbc:sybase:Tds:<db_ip_address>:<db_port>/service3

在我的context.xml中,我像往常一样将3个数据源列为单独的资源,并设置了所有必要的选项,包括

<Resource
    name="jdbc/dbDataSource1"
    type="javax.sql.DataSource"
    driverClassName="com.sybase.jdbc3.jdbc.SybDriver"
    factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
    maxActive="20"
    initialSize="1"
    minIdle="5"
    maxIdle="10"

<Resource
    name="jdbc/dbDataSource2"
    <!-- Rest is same as above -->

<Resource
    name="jdbc/dbDataSource3"
    <!-- Rest is same as above -->

我注意到的是,因为3个数据源连接到同一个数据库,tomcat似乎只是创建并使用一个连接池并在所有3之间共享。这可以在启动时看到,如果我将initialSize更改为比方说10,前2个数据源创建没问题 - 在3号,我得到一个例外说

java.sql.SQLException: JZ00L: Login failed. 
Examine the SQLWarnings chained to this exception for the reason(s).

我是否遗漏了一些关于如何设置连接池的明显内容?我查看了tomcat文档以及与全局连接池相关的内容,但是从我可以收集的内容看,这似乎与共享多个应用程序之间的连接有关吗?

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

确实似乎有太多闲置连接。尝试增加空闲连接属性或检查是否关闭所有打开的连接。 请参阅this link