请教高手,weblogic连接池泄漏如何解决?

hrtn 2006-02-15 04:31:27
就是老是出现下面这个错误。
A JDBC pool connection leak was detected


我是调用Connection对象的close()方法来关闭的,是不是这样关闭不行啊?
...全文
507 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ashen926 2006-02-16
  • 打赏
  • 举报
回复
this.objCon.close(); 你的这句话已经关闭了这个对象,然后你在给他付个null,这样可能就发生问题了,保留this.objCon.close();就可以了,我自己的意见!朋友要是有好的解决方案帮我发个email:88189565@163.com 我也学习下,麻烦你费心了!
simpure 2006-02-16
  • 打赏
  • 举报
回复


//***在这里关闭连接***///代码如下
try
{
if (conn != null)conn.close();
}
catch (Exception ex)
{
//log.error("释放连接时出错!",ex);
}





simpure 2006-02-16
  • 打赏
  • 举报
回复

1.首先指出你控制上的错误,如下:


public void close() {
try {
if (this.objStmt != null) {
this.objStmt.close(); //***1.假设这里出错,会跑到***2***
this.objStmt = null;
}
if (this.objCon != null) {
this.objCon.close();
this.objCon = null;
}
}
catch (SQLException e) {
}
finally {
try {
//***2***////////////////
if (this.objStmt != null) {
this.objStmt.close(); //***3.假设这里又出错,会跑到***4***
this.objStmt = null;
}
if (this.objCon != null) {
this.objCon.close();
this.objCon = null;
}
}
catch (SQLException e) {
//***4***. 跑到这里时,connection.close()可能从未执行。(另SQLException最好改成Exception)

}
}

}


2.你把connection当成某类的成员,所以有this.objCon。 这是没有必要的,因为你用了weblogic提供连接池你不必自己维护连接,所以需要时随时定义一个Connection objCon, 用完就关闭,可以参考我给你的例子。还有objStmt也一样,需要时createStatement(),不必成为某类的成员。

hrtn 2006-02-15
  • 打赏
  • 举报
回复
我的关闭函数,每个jsp页面的最下面都会调用这个函数,这样有问题吗?

public void close()
{
try {
if (this.objStmt != null) {
this.objStmt.close();
this.objStmt = null;
}
if (this.objCon != null) {
this.objCon.close();
this.objCon = null;
}
} catch (SQLException e) {
} finally {
try{
if (this.objStmt != null) {
this.objStmt.close();
this.objStmt = null;
}
if (this.objCon != null) {
this.objCon.close();
this.objCon = null;
}
} catch (SQLException e) {}
}

}
simpure 2006-02-15
  • 打赏
  • 举报
回复

以我的经验,提醒您使用连接池时要注意两点:

1.任何情况下要记得关闭连接,最好的办法是放在finally{}内,以保证万无一失 -- 即使中间有意外或return也会执行。如下所示:


Connection connection=null;
try{
try{
connection = getConnectionByJndi(...);
}catch(Exception e){
return ;
}

}catch(Exception e){}
finally{
//***在这里关闭连接***///
}


2.如果不是特别需要,请把连接池的参数"Statement Cache Size"设为0. weblogic8默认值是10. 如果不为0,有些未打补丁的weblogic会造成内存泄露。



程声明:该课程是教学使用,视频内涉及漏洞利用方法,请勿在互联网环境中使用;维护互联网安全,人人有责。实验所需环境:vmware;kali虚拟机一台;windows server一台;有docker环境的Linux虚拟机环境下载地址在购买课程后单独发送 【课程配套资源】1、Python脚本(Margin老师自研,不光能学漏洞,还能学Python,实在是划算)2、与Margin老师实时互动3、免费的CISP-PTE考试技巧指导(Margin老师与CISP-PTE的负责人很熟的,非常多的一手消息^o^)4、Margin老师的内部直播可以优先参加5、Margin老师的课程基于CISP-PTE的知识体系进一步扩展,使课程内容更贴近实战   【课程主要解决问题】1、CSRF、SSRF搞不清楚?2、SSRF原理是什么?危害大小?如何利用SSRF获取主机权限?如果使用Python提高挖洞效率?3、Gopher协议、Dict协议?完全没听过啊,没关系,看完课程后你门清。4、SSRF渗透Redis数据库,Redis客户端和服务器端怎么通信?通信报文是怎么样的?看这里就行。5、SSRF渗透Struts2总是失败?不知道如何编码?不知道如何使用Gopher协议?来这里。6、SSRF表面简单,实则有无数坑,通过视频提高学习效率吧。 【CISP-PTE介绍】1、CISP-PTE是进入网络安全行业的TOP1认证,能帮你梳理完整的网络安全知识体系2、有PTE证书在网络安全公司是免技术笔试的,怎么样?是不是很棒。3、Margin老师的课程基于CISP-PTE的知识体系进一步扩展,使课程内容更贴近实战本课程属于CISP-PTE渗透测试工程师认证体系的课程,但内容更加丰富。CISP-PTE是国内第一个以动手实操为主的网络安全认证,该注册考试是为了锻炼考生世界解决网络安全问题的能力,持续增强我国的网络安全水平和防御能力,促进国内网络防御能力的不断提高。考试内容从多个层面进行,考点和网络安全动态相结合,真实的反应出真实的网络环境中发现的各种问题。如果要考取CISP-PTE证书需要掌握以下内容:1、Web安全基础,注入漏洞、上传漏洞、跨站脚本漏洞、访问控制漏洞、会话管理漏洞哦等。2、中间件的安全知识,如:Apache,IIS,Tomcat,以及 JAVA 开发的中间件 Weblogic,Jboss, Websphere 等,且要了解中间件加固方法,在攻与防的能力上不断提升。3、操作系统安全,包含Windows和Linux操作系统,从账户管理、文件系统权限、日志审计等方面讲解,了解常见的漏洞方式和加固方法。4、数据库安全,包含MSSQL、MYSQL、ORACLE、REDIS数据,了解常用的数据库漏洞和题全方法,保证数据库的安全性。 【关于Margin老师】· Margin/教育系统网络安全保障人员认证首批讲师/高级讲师· 擅长CTF/Web安全/渗透测试 /系统安全· 3年研发/擅长Java/Python/某银行现金循环机业务系统开发者· 曾参与开发网络安全认证教材· 知乎专栏/CISP-PTE渗透测试工程师学习· 4年线下网络安全讲师/2000+线下学员/100000+线上学员

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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