项目使用websphere服务器,本地搭建项目的时候was服务区设置的数据库连接池属性:超时时间为180s,最小连接数为1最大连接数为10;为了实现批量删除的功能,在代码中一处要获取连接,执行查询,使用查询后的参数为bean赋值,完成其deleteSql,将deleteSQl存放于List中,之后执行批量删除.
问题描述 :问题出在获取连接执行查询一处,因为项目中一个bean对应一个数据库表;而beanDB中包含着该表的query(),getByPK(),delete(),update()等方法;
要删除前台传来的checkbox的一系列值就需要依次为bean获取deleteSQL,所以需要getConnection(),当数据大于10之后,发现程序卡住,之后(180s)后报错,没有可用的连接,
异常CreateOrwaitConnectionException,后来上网查发现web.xml中配置的 Shareable属性,对于was服务器而言就会使连接池中的连接不被释放,所以造成了没有可用连接的问题;
解决方法:
1.如果可以修改Shareable属性为Unshareable,可以修改之
2.不使用连接来获取bean,适用new bean+ setXX()(对我自己的项目而言)
3.见参考
https://www.ibm.com/developerworks/websphere/library/techarticles/0506_johnsen/0506_johnsen.html
https://www.ibm.com/developerworks/websphere/library/techarticles/0404_tang/0404_tang.html?S_TACT=105AGX52&S_CMP=cn-a-wes
http://websphere.sys-con.com/node/43291
https://blog.csdn.net/cloud_ll/article/details/45114039