java - Tomcat 7 连接池问题

标签 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 文档和与全局连接池相关的内容,但是从我收集到的信息来看,这似乎与共享多个应用程序之间的连接有关?

非常感谢任何帮助!

最佳答案

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

关于java - Tomcat 7 连接池问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22300346/

相关文章:

java - Android 在 Activity 中保留 Nav Bar

java - Tomcat 配置以在不同的端口上接受 HTTPS

java - CORS - 起源 http ://localhost is not allowed by Access-Control-Allow-Origin. 错误。

configuration - 在 SQL 开发人员中设置 sybase DB 连接?

Android SDK工具设置 "Application error"

java - 增加 hashmap java 的值

java - Log4j 每天滚动 catalina.out 而不重新启动 Tomcat?

t-sql - Sybase:如何将多个 T-SQL 命令串在一起

java - 将 SQL NUMERIC[10,0] 映射到 java 类型

java - 使用 JPA 和 Maven 设置 Spring