jdbc连接池关闭?

marble_dew2 2010-02-01 01:44:51
应用程序是用websphere6.0,oracle10g,struts+spring,在连接数据库用到jdbc.properties里面内容为:
driverClassName=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:2109.32.1.34:1521:ora
username=name
password=pwd

但是在系统开始运行时很正常,连接过几次数据库后就出现错误:
DataSourceUti E org.springframework.jdbc.datasource.DataSourceUtils releaseConnection Could not close JDBC Connection
java.sql.SQLException: Already closed.
at org.apache.commons.dbcp.PoolableConnection.close(PoolableConnection.java:77)
at org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.close(PoolingDataSource.java:180)
at org.springframework.jdbc.datasource.DataSourceUtils.doReleaseConnection(DataSourceUtils.java:276)
at org.springframework.jdbc.datasource.DataSourceUtils.releaseConnection(DataSourceUtils.java:237)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:492)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:529)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:554)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:595)
at org.springframework.jdbc.object.SqlQuery.execute(SqlQuery.java:114)
at org.springframework.jdbc.object.SqlQuery.findObject(SqlQuery.java:221)
at org.springframework.jdbc.object.SqlQuery.findObject(SqlQuery.java:282)
at org.springframework.jdbc.object.SqlQuery.findObject(SqlQuery.java:289)
at icbczj.bankee.gke.dao.FinaUserInfoDaoImpl.queryFinaUserInfo(FinaUserInfoDaoImpl.java:160)
at icbczj.bankee.gke.dao.FinaUserInfoDaoImpl.getUserInfo(FinaUserInfoDaoImpl.java:113)
at icbczj.bankee.service.UserInfoServiceImpl.getUserInfoContainer(UserInfoServiceImpl.java:74)
at icbczj.bankee.action.LogonAction.doExecute(LogonAction.java:106)
at icbczj.bankee.action.BaseAction.execute(BaseAction.java:96)
at org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:106)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1480)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:524)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1572)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:762)
at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:334)
at org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:520)
at com.ibm._jsp._main._jspService(_main.java:63)
at com.ibm.ws.jsp.runtime.HttpJspBase.service(HttpJspBase.java:91)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1572)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:762)
at com.ibm.wsspi.webcontainer.servlet.GenericServletWrapper.handleRequest(GenericServletWrapper.java:121)
at com.ibm.ws.jsp.webcontainerext.JSPExtensionServletWrapper.handleRequest(JSPExtensionServletWrapper.java:204)
at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:89)
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:1924)
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:98)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:472)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:411)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:288)
at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminaters(NewConnectionInitialReadCallback.java:207)
at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:109)
at com.ibm.ws.tcp.channel.impl.WorkQueueManager.requestComplete(WorkQueueManager.java:566)
at com.ibm.ws.tcp.channel.impl.WorkQueueManager.attemptIO(WorkQueueManager.java:619)
at com.ibm.ws.tcp.channel.impl.WorkQueueManager.workerRun(WorkQueueManager.java:952)
at com.ibm.ws.tcp.channel.impl.WorkQueueManager$Worker.run(WorkQueueManager.java:1039)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java(Compiled Code))
……

数据库操作用了jdbctemplete类。

而在程序中也有用websphere配置数据源去连同一个数据库,然后就会出现:
连接管理器接收到来自资源 jdbc/EBANKDB 的资源适配器的致命连接错误。接收到的异常为 com.ibm.websphere.ce.cm.StaleConnectionException: Io 异常: Connection reset

我查了很久都没发现哪里有问题,请各位大小帮帮忙。
谢谢!!!
...全文
545 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
marble_dew2 2010-03-17
  • 打赏
  • 举报
回复
在各位的提示下, 我试着把一个连接池去掉了,发现确实没有问题了。看来连同一个数据库,用两个不同的连接池会出问题。
changchun_ttz 2010-02-02
  • 打赏
  • 举报
回复
很值得研究一下。
ytfiqpl2008 2010-02-02
  • 打赏
  • 举报
回复
应该是你试图去关闭一个已经关闭的连接
扁鵲東南飛 2010-02-02
  • 打赏
  • 举报
回复
java.sql.SQLException: Already closed

这个错误你应该看到了。已经关闭了。
个人感觉你是不是在执行其他数据库操作的时候,代码是 copy 的啊?

在copy 的时候,也可能把一些数据库连接 方法 和关闭的方法 也一起copy 了啊?

可能是你关闭这个的时候,但是方法是其他的链接用到的。导致Already closed
marble_dew2 2010-02-02
  • 打赏
  • 举报
回复
各位都说得很好,我再细细检查一下。具体是什么问题都要测试才知道。
crazylaa 2010-02-01
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 marble_dew2 的回复:]
没有人知道吗?

我自己在想会不会是jdbc连接池和websphere连接池都存在,而且是对同一个数据库,这样是否会冲突?
[/Quote]
你配置的是同一个连接池吗?was里面和你的程序里面应该是两个不同的连接池啊。
想不通你这里怎么看上去是连接串线了,好像spring用了was的,was用了spring的。。。如果是一个应用,建议你还是用一个单独的连接池吧,不要两个都用。
our651 2010-02-01
  • 打赏
  • 举报
回复
conn的管理由连接池全权代理了。
这个错误不会是你代码的问题。

检查是否有池的冲突。

中智软件科技 2010-02-01
  • 打赏
  • 举报
回复
加群学习 交流:69705156
marble_dew2 2010-02-01
  • 打赏
  • 举报
回复
没有人知道吗?

我自己在想会不会是jdbc连接池和websphere连接池都存在,而且是对同一个数据库,这样是否会冲突?
marble_dew2 2010-02-01
  • 打赏
  • 举报
回复
宕机应该不是的,这样的错误出现几次后,再去连还是可以连。
而且程序时用jdbctemplete来操作数据库的,我都看不到哪里打开和关闭,查了一下,发现这个类都包含了打开关闭,所以应该也不存在这个问题吧
蛋黄车 2010-02-01
  • 打赏
  • 举报
回复
每次获取数据库连接之后,用完要记得关闭

有可能是只打开连接,没有关闭引起系统宕机

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧