数据库链接泄露问题!!!急!!!

问题描述

页面下载一个Excel文件,使用struts1.2的action,Action类如下publicclassSjqyDaochuActionextendsAction{privatestaticfinalLoggerlogger=Logger.getLogger(SjqyDaochuAction.class);@SuppressWarnings("unchecked")publicActionForwardexecute(ActionMappingmapping,ActionFormform,HttpServletRequestreq,HttpServletResponseres)throwsException{SjqyFormsf=(SjqyForm)form;Stringtablename=sf.getTABLENAME();//导出excle名称StringdownFileName=tablename+"_kh.xls";Connectionconnection=null;DBConnectionMgrdbMgr=newcn.com.ebis.frame.utility.DBConnectionMgr();try{connection=dbMgr.getConnection();cn.com.ebis.commons.dao.CommDaodao=newcn.com.ebis.commons.dao.CommDao(connection);//生成Excel文件......returnnull;}catch(Exceptionex){logger.error("execute(ActionMapping,ActionForm,HttpServletRequest,HttpServletResponse)",ex);thrownewGeneralException("导出Excel出错!",ex);}finally{if(connection!=null)try{connection.close();}catch(SQLExceptione){logger.error("execute(ActionMapping,ActionForm,HttpServletRequest,HttpServletResponse)",e);//$NON-NLS-1$}}}}

客户下载的时候,后台报错,weblogic日志提示数据库连接泄露,log日志如下Forciblyreleasinginactiveconnection"weblogic.jdbc.wrapper.PoolConnection_oracle_jdbc_driver_T4CConnection@4b30"backintotheconnectionpool"csdb1",currentlyreservedby:java.lang.Exceptionatweblogic.jdbc.common.internal.ConnectionEnv.setup(ConnectionEnv.java:308)atweblogic.common.resourcepool.ResourcePoolImpl.reserveResource(ResourcePoolImpl.java:314)atweblogic.common.resourcepool.ResourcePoolImpl.reserveResource(ResourcePoolImpl.java:292)atweblogic.jdbc.common.internal.ConnectionPool.reserve(ConnectionPool.java:425)atweblogic.jdbc.common.internal.ConnectionPool.reserve(ConnectionPool.java:316)atweblogic.jdbc.common.internal.MultiPool.searchHighAvail(MultiPool.java:383)atweblogic.jdbc.common.internal.MultiPool.findPool(MultiPool.java:176)atweblogic.jdbc.common.internal.ConnectionPoolManager.reserve(ConnectionPoolManager.java:87)atweblogic.jdbc.common.internal.ConnectionPoolManager.reserve(ConnectionPoolManager.java:106)atweblogic.jdbc.pool.Driver.connect(Driver.java:149)atweblogic.jdbc.jts.Driver.getNonTxConnection(Driver.java:642)atweblogic.jdbc.jts.Driver.connect(Driver.java:124)atweblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSource.java:338)atcn.com.ebis.frame.utility.DBBean.initConnection(DBBean.java:81)atcn.com.ebis.frame.utility.DBBean.<init>(DBBean.java:47)atcn.com.ebis.frame.utility.DBConnectionMgr.getConnection(DBConnectionMgr.java:125)atcn.com.pansky.hnds.sjqy.cmd.SjqyDaochuAction.execute(SjqyDaochuAction.java:59)atorg.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)atorg.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)atorg.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)atorg.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)atjavax.servlet.http.HttpServlet.service(HttpServlet.java:727)atjavax.servlet.http.HttpServlet.service(HttpServlet.java:820)atweblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)atweblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)atweblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:292)atweblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)atweblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)atcn.com.ebis.e5s.query.user.LeoRequestProcesser.doFilter(LeoRequestProcesser.java:59)atweblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)atcn.com.pansky.util.grantmanager.QueryDataFilter.doFilter(QueryDataFilter.java:44)atweblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)atcn.com.pansky.multisession.filter.MultiSessionFilter.process(MultiSessionFilter.java:82)atcn.com.pansky.multisession.filter.IntercurrentControlFilter.process(IntercurrentControlFilter.java:100)atcn.com.pansky.multisession.filter.MultiSessionFilter.doFilter(MultiSessionFilter.java:70)atweblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)atcn.com.pansky.pw.utils.LogonFilter.doFilter(LogonFilter.java:66)atweblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)atcn.com.pansky.frame.log.web.WebLogFilter.doFilter(WebLogFilter.java:67)atweblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)atweblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3496)atweblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)atweblogic.security.service.SecurityManager.runAs(UnknownSource)atweblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2180)atweblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2086)atweblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1406)atweblogic.work.ExecuteThread.execute(ExecuteThread.java:201)atweblogic.work.ExecuteThread.run(ExecuteThread.java:173).

请各位看一下这个问题出现的原因是什么,因为DBConnectionMgr是平台写的一个工具类,应该不会有问题,但是在Action中已经把链接关闭了,怎么还是会报错呢?谢谢!!!

解决方案

本帖最后由 javacow 于 2010-11-27 15:52:57 编辑
解决方案二:
或许不是关闭错误只是并发量太大了超负荷了呢?
解决方案三:
有可能是这个原因引用1楼mopishv0的回复:

或许不是关闭错误只是并发量太大了超负荷了呢?

解决方案四:
并发量不大。最多的时候也就几十个

时间: 2024-11-03 20:34:17

数据库链接泄露问题!!!急!!!的相关文章

SQLServer · BUG分析 · Agent 链接泄露分析

背景 SQLServer Agent作为Windows服务提供给用户定期执行管理任务,这些任务被称为Job:考虑应用镜像的场景如何解决Job同步问题,AWS RDS的做法是不予理会,由用户维护Job,假如发生切换用户需要在新的Principal端创建Job:另一种做法是镜像端保持同步Job,切换后尽量让用户无感知不需要多余维护动作,但这种做法在某些情况会遇到非常严重的问题--内存耗尽. 问题排查分析 第一次分析 问题发生时实例的ERRORLOG出现: Error: 701, Severity:

mybatis-关于数据库链接connection是否需要关闭的问题

问题描述 关于数据库链接connection是否需要关闭的问题 项目中用的是druid连接池,持久层用的是MyBatis,但是项目中需要用到直接执行SQL语句的需求,于是我通过 @Autowired private SqlSessionFactory sessionFactory; 获取到了sessionFactory,然后通过sessionFactory.openSession()获取到了SqlSession,最后用SqlSession.getConnection();获取到了connecti

美商业巨头 52GB 数据库遭泄露,3380 万用户信息不保

    据外媒报道近日商业服务巨头 DunBradstreet 的52GB数据库遭到泄露 这套数据库包括美国数千家公司员工和政府部门的约3380万个电子邮件地址和其他联系信息在美国影响范围巨大. DunBradstreet即(邓百氏)咨询公司其提供的主要服务有信用调查.应收款管理.营销信息.增值产品.证券信用级别评财估.政信息服务等. 此次DunBradstreet 泄漏的数据库包括了用户的姓名.职称职能.工作邮箱和电话号码等个人信息以及估计营业收入.员工人数等有关工作场所的详细信息等.雷锋网(

数据库链接方式(一)

链接|数据|数据库 数据库链接方式(一) ( odbc篇) 1.        产生: 数据库早期的数据库连接是非常困难的. 因为各种数据库的格式都不一样,开发者得对他们所开发的每种数据库的底层API必须有深刻的了解. 因此,能处理各种各样数据库的通用的API就应运而生了-―ODBC(Open Database Connectivity), ODBC是人们在创建通用API的早期产物.在程序中可以使用相同的代码访问不同的数据产品,因此有许多种数据库(如:Access, MS-SQL Server,

数据库链接方式(二)

链接|数据|数据库 数据库链接方式(二) (DAO篇) 针对odbc的复杂性后来微软提出了一个解决方案: DAO(Data Access Objects). DAO是第一个面向对象的接口,DAO模型是设计关系数据库系统结构的对象类的集合.它们提供了完成管理一个关系型数据库系统所需的全部操作的属性和方法,这其中包括创建数据库,定义表.字段和索引,建立表间的关系,定位和查询数据库等.它实际上包涵了Microsoft Jet数据库引擎,这是一个由Microsoft Access所使用的引擎,并允许应用

包含文件对数据库链接的影响

链接|数据|数据库 你注意到没有,利用MX/UD开发程序时,所有需要链接数据库的页面中,都会在页面的开始部分使用包含文件调用数据库链接文件,如:<!--#include file="Connections/con123456.asp" --> 那么这段代码有什么好研究的吗?当然有研究了,如果你没有正确使用它,那么也许你在本地调试很正常的程序,一旦传到服务器上就出错,一个可能的原因就是包含文件在作怪!让我们了解一下什么是包含文件: ●包含文件 全称:Server_Side I

建立数据库链接

链接|数据|数据库 建立数据库链接CREATE [public] DATABASE LINK 数据库链接名 CONNECT TO 用户名 IDENTIFIED BY 密码 USING '数据库连接字符串';说明:    1.一般情况PUBLIC由数据库管理员来创建:个人用户可以不加public,是私有的数据库链接:    2.'数据库连接字符串'可以用NET8 EASY CONFIG或者直接修改TNSNAMES.ORA里定义:    3.在配置文件init.ora中,数据库参数global_na

Sql Server下数据库链接的使用方法

有时候我们希望在一个sqlserver下访问另一个sqlserver数据库上的数据,或者访问其他oracle数据库上的数据,要想完成这些操作,我们首要的是创建数据库链接. 数据库链接能够让本地的一个sqlserver登录用户映射到远程的一个数据库服务器上,并且像操作本地数据库一样.那么怎么创建数据库链接呢?我现在有两种方法可以实现. 第一种:在 sqlserver 企业管理器中,建立,这个比较简单的,首先在 安全性--〉数据库链接 上点右键 ,在出现的菜单中点 新建数据库链接 ,然后会弹出一个界

数据库链接篇

链接|数据|数据库 articleconn.asp'由于几乎每一个页面都用到数据库,把数据库作为一个独立的页包括在内'可以不必重复输入! '如:<!--#include file="articleconn.asp"-->'可在需要数据库链接的页面打入这一句话,避免重复输入相同的内容'使程序复杂化!<% dim conn dim connstr on error resume next connstr="DBQ="+server.mappath(&q