环境:[b]struts1.1, Oracle, 一台数据库服务器, 一台应用服务器[/b]
使用struts的连接池 ,当应用启动后 ,[color=red]拔掉服务器网线 ,再插上网线[/color],
此后池中获取的连接[[i]conn=dataSource.getConnection();][/i]
进行各种操作时 [[i]如 pStament=conn.prepareStatement(strSql);][/i] 会抛出异常,提示[color=red]关闭的连接[/color] 即使在actioin中初始化新的连接池 [[i]DataSource dataSource=this.getDataSource(request,key);][/i] 除非重起应用,才会正常。
这是不是struts连接池自己的原因? debug查看conn的状态不为空,也不是closed。
[b]问题补充:[/b]
DataSource != 连接池。
对不起,说错了 。
那为什么重新插上网线后 再
DataSource dataSource=this.getDataSource(request,key); conn=dataSource.getConnection();
会是个关闭的连接呢。
不明白你用的是什么池(struts池是什么池?还真不知道)
所有的数据连接池都有这个问题,除了c3p0。
这个需要定时给数据库发个请求,来更新数据池。
select 1 from dual;
当然容器带的连接池通常没这个问题,所以配置JNDI是个好办法
DataSource != 连接池。