tomcat连接池如何关闭连接,将资源返回给连接池? tomcat连接池如何关闭连接是使用conn.close()还是conn=null.两者有什么区别? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 conn.close()区别是conn=null不会返回连接池,可能造成资源无法回收。 编程的好习惯是先coon.close(),再conn=null,coon.close()是关闭连接池,conn=null是蛇者conn为空,使下次再调用的时候不能连接。 用 conn.close(),所有的连接池实现都会采用动态代理或者装饰器模式把原本 Connection 的 close 方法改写,改成并不是真正意义上地关闭与数据库的物理连接,而是将其还到连接池中去便于重用。conn = null; 只是将局部变量置为了 null,并没有将实际的连接置为 null 或者还到连接池中去。 conn=null;就是表示一个引用,但没有指向任何对象,等待垃圾回收时进行对象资源回收!conn.close();表示关闭连接。如果conn=null;//在前conn.close();//在后则会报空指针异常,反之不会有异常。个人观点,仅供参考。。 请问bao110908 :InitialContext要不要关闭? 实际经验:慎用conn.close()!在实际工作中我们发现,如果使用tomcat JNDI并设置为容器管理连接池,则在调用conn.close()方法是会报非法访问异常,即你的项目没有权限去关闭tomcat帮你创建的连接对象,并不象5楼同学所说的情况(在tomcat6.0.18的开发版和服务器版,JDK版本1.5和1.6下均测试过,情况相同)。个人使用经验和建议:由于权限问题,我们不可能关闭连接对象,也不应该去关闭连接对象,因为由tomcat创建的连接池并非仅只提供给单个项目使用,而是提供给所有处于tomcat容器下的项目使用,如果我们的项目将连接对象关闭了,则将影响其他项目的数据库连接池。既然你已经将连接对象交由容器进行管理,那就不应该再过多关注,所以,个人建议,如果你使用了JNDI,那么要么写conn=null,要么不关闭。谢谢。 开了联节当然是要关的,不关,用不了多久,联接池就会没有可用的联接了,10楼的说法,我不同意.我们项目也用到JNDI,不关联接的话,点几下就报没有可用的联接错误了.而且要用con.close()来关闭.而且tomcat是可以给单个项目建联接池的. 直接关闭connection就可以了吧 不用手动关闭preparedstatement和resultset吗? 高手求救!!!实现行以及里面内容的移动 如何从引入的js中获取存放在数组中的值 数组处理空格? 昏倒啊。javax.jnlp在jdk6里面为什么找不到了啊??? 麻烦高手给一个jsp源代码,输入用户id后查询该用户,返回该用户信息 ▆▆▆▆▆▆ 二进制流 检索问题 ▆▆▆▆▆▆ java程序如何直接运行jsp文件 还有得补救吗? 请问在jsp中怎样做到运行到某一行代码后停止下面程序的运行? struts2无法给AJAX返回数据,求大佬帮助 java web 项目如何实现自动提醒功能 java service 项目问题?
区别是conn=null不会返回连接池,可能造成资源无法回收。
coon.close()是关闭连接池,conn=null是蛇者conn为空,使下次再调用的时候不能连接。
改成并不是真正意义上地关闭与数据库的物理连接,而是将其还到连接池中去便于重用。conn = null; 只是将局部变量置为了 null,并没有将实际的连接置为 null 或者还到连接池中去。
conn.close();表示关闭连接。如果
conn=null;//在前
conn.close();//在后
则会报空指针异常,反之不会有异常。
个人观点,仅供参考。。
InitialContext要不要关闭?
在实际工作中我们发现,如果使用tomcat JNDI并设置为容器管理连接池,则在调用conn.close()方法是会报非法访问异常,即你的项目没有权限去关闭tomcat帮你创建的连接对象,并不象5楼同学所说的情况(在tomcat6.0.18的开发版和服务器版,JDK版本1.5和1.6下均测试过,情况相同)。个人使用经验和建议:由于权限问题,我们不可能关闭连接对象,也不应该去关闭连接对象,因为由tomcat创建的连接池并非仅只提供给单个项目使用,而是提供给所有处于tomcat容器下的项目使用,如果我们的项目将连接对象关闭了,则将影响其他项目的数据库连接池。既然你已经将连接对象交由容器进行管理,那就不应该再过多关注,所以,个人建议,如果你使用了JNDI,那么要么写conn=null,要么不关闭。谢谢。