我在 glassfish 3.1.1 上部署了一个 Java EE Web 应用程序,我想在 Windows Azure 上托管它。
该应用程序使用休眠作为 jpa。
我为 Azure 数据库定义了一个 JDBC 连接池。
(基本上,这些是默认值)
初始和最小池大小:8 个连接
最大池大小:32 个连接
池调整数量:2 个连接
空闲超时:300 秒
最大等待时间:60000 毫秒
附加属性:
用户:user@serverName
服务器名称:serverName.database.windows.net
密码:myPass
数据库名称:我的数据库
如果我从 glassfish 界面 ping 它可以工作,那么我提供的属性是可以的。
设置新的 jdbc 连接池(用于 azure 的连接池)导致在 sql azure 数据库上创建表(我将“hibernate.hbm2ddl.auto”设置为更新) - 所以数据库连接没有问题/参数。
如果应用程序在服务器启动后立即使用数据库,一切顺利(它可以检索/存储数据)
当应用程序在空闲一段时间后尝试使用数据库时,我得到这个:
如果我刷新连接(来自 glassfish 管理员),它会再次开始工作,直到它闲置一段时间。
所以基本上,只要它执行数据库操作一切正常,但如果有一段时间没有数据库操作,下一个 db 操作就会导致该异常。
我已经用谷歌搜索了这个,它似乎与关闭空闲连接的 azure 数据库服务器有关,但我找不到该问题的解决方案。
我在使用 PostgreSql 时从未遇到过这个问题