忘了说了,我的具体配置:操所系统:WinXP
服务器:Tomcat5.0
数据库:MySQL
呵呵,刚刚学了mysql,不知道怎么用请大家指教
服务器:Tomcat5.0
数据库:MySQL
呵呵,刚刚学了mysql,不知道怎么用请大家指教
解决方案 »
- ssh事务不能回滚啊。救救救救救救救救救!!!!!!!!!!!!!
- spring初学问题
- 巨奇怪,高手进,weblogic中session短暂丢失问题!
- String配置文件问题?
- 大家都用什么IDE来开发web service 如果用,eclipse有什么插件可用吗 ?
- 关于编码转换??高分相送!!!
- struts第五问.
- 50分求解eclipse+hibernate 为什么运行总提示 Attribute "package" must be declared for element type "hibernate-mapping".错误
- 在线求救,struts 中进行db 操作如何捕捉com.ibm.websphere.ce.cm.DuplicateKeyException 异常(WSDA)
- 帮帮我啊 朋友
- struts跑*.html时会出现中文显示不正常,大家是怎么解决的?
- 能给我一个redhat 9下怎样安装JDK并设置的步骤吗?谢谢(初学者)
就是返回给连接池供下次使用。
Java 的JDBC 数据库连接池实现方法
http://www.csdn.net/Develop/read_article.asp?id=21140
============
我想主要是你对连接池的理解有偏差。
dataSource.getConnection()意思是从连接池里(借)取一个出来用,用完后close() 相当于返还给连接池。这个关闭并没有真正从数据库库断开。而是将连接返回给连接池,并且由 App Server 一直保持在那里(在设定最大闲置时间内)。这么做的好处是,假设你短时间里有很多数据库操作,不必每次都进行连接数据库的操作,这样可以提高效率。
连接池实际上就是你说的这个数据源(DataSource)。在App Server没关闭之前它一直在那里。
当然闲置时间太长(假如你很长时间没进行数据库操作)了连接池也会把里面的连接断开。
而你前面说的“我在数据源中定义的maxActive是20,我在刷新我的主页20次后网站就没有反应了”
最可能的原因就是你再使用完后没有关闭连接。而连接池里的连接已经达到了最大的数目。所以没得多余的连接可拿了。例如,如果你2次都使用了dataSource.getConnection()并且没有关闭,那么你这2次打开了不同的连接,这样最多你只能打开20次。如果你每次都关闭了,再getConnection那么你实际上与数据库之间只有一个连接。当然如果你的程序是多线程的那就说不定了。
希望这样说能对你有所帮助。
是一个依赖具体的 连接池实现的类,在这个类中的close方法肯定不是直接断开。如果直接使用JDBC的Connection实现,那应该就是断开了。如果你要深入了解,可以查看相应的源代码。比如apache有个叫dbcp的实现,里面的做法很经典,值得研究。
再问你一下,如果关闭了Connection,ResultSet怎么弄呢?关闭了Connection以后ResultSet就不能用了啊。