将JDBC连接池与SQL Azure数据库一起使用会出现“分配连接时出错”

时间:2012-04-25 19:15:48

标签: database windows jdbc azure glassfish

我在glassfish 3.1.1上部署了一个Java EE Web应用程序,我想在Windows Azure上托管它。

该应用程序使用hibernate作为jpa。


我为Azure数据库定义了一个JDBC连接池。

(基本上,这些是默认值)

初始和最小池大小:8个连接

最大池大小:32个连接

池调整大小数量:2个连接

空闲超时:300秒

最长等待时间:60000毫秒


其他属性:

用户:user @ serverName

ServerName:serverName.database.windows.net

密码:myPass

databaseName:mydatabase


如果我从glassfish接口ping它,它可以工作,所以我提供的属性都可以。

设置新的jdbc连接池(azure的连接池)导致在sql azure数据库上创建表(我将“hibernate.hbm2ddl.auto”设置为更新) - 所以没有问题数据库连接/参数。

如果应用程序在服务器启动后立即使用数据库,一切顺利(它可以检索/存储数据)

当应用程序在闲置一段时间后尝试使用数据库时,我得到了这个:

link to exception

如果我刷新连接(来自glassfish管理员),它会再次开始工作,直到它闲置一段时间。

基本上,只要它执行数据库操作一切正常,但如果一段时间没有数据库操作,下一个db操作将导致该异常。

我已经谷歌了,这似乎与关闭空闲连接的azure数据库服务器有关,但我找不到问题的解决方案。

使用PostgreSql时,我从未遇到过这个问题

1 个答案:

答案 0 :(得分:1)

导致此问题的一个可能原因:SQL Azure在5分钟后关闭空闲连接。要解决此问题,您必须关闭连接,并创建新连接。通常,建议即使连接到其他数据库也要关闭空闲连接。这有助于减少系统资源的使用。