我在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”设置为更新) - 所以没有问题数据库连接/参数。
如果应用程序在服务器启动后立即使用数据库,一切顺利(它可以检索/存储数据)
当应用程序在闲置一段时间后尝试使用数据库时,我得到了这个:
如果我刷新连接(来自glassfish管理员),它会再次开始工作,直到它闲置一段时间。
基本上,只要它执行数据库操作一切正常,但如果一段时间没有数据库操作,下一个db操作将导致该异常。
我已经谷歌了,这似乎与关闭空闲连接的azure数据库服务器有关,但我找不到问题的解决方案。
使用PostgreSql时,我从未遇到过这个问题
答案 0 :(得分:1)
导致此问题的一个可能原因:SQL Azure在5分钟后关闭空闲连接。要解决此问题,您必须关闭连接,并创建新连接。通常,建议即使连接到其他数据库也要关闭空闲连接。这有助于减少系统资源的使用。