MDA/MDD/TDD/DDD/DDDDDDD
posts - 536, comments - 111, trackbacks - 0, articles - 0
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

连接池等

Posted on 2009-12-25 02:31 leekiang 阅读(403) 评论(0)  编辑  收藏 所属分类: jdbc、事务、并发

1,关于statement,resultset和connection的问题

statement,resultset属于弱refrence,即如果statement关掉,resultset就会被自动释构,弱 refrence的做法不保险,所以JDBC3.0开始明确规定了如果connection被关,所有statement都应该关,不过这取决于使用的数 据库驱动。
应该DBMS 执行操作后,显式的关闭statement ,因为在connection关闭前,JDBC statement仍旧处于打开状态,当返回resultset后,关闭statement是必要的,尤其在遇到异常的时候。
如果不使用connection pool可以直接关闭connection,不考虑statement的关闭,使用连接池的时候,务必关闭statement,否则你的连接马上被用光,使用statement pooling除外。

http://www.w3china.org/blog/more.asp?name=hongrui&id=10283



2,Software caused connection abort: socket write error

最终找到了原因:sql写错了,写成了where name='?'

有人说原因:
oracle数据库连接与连接池之间冲突导至.
oracle database把空闲一段时间的连接关闭了,而应用服务器连接池却认为该边接还是可用的,再次访问时还是使用该连接,导致出现连接异常。
方法,当然是改数据库配置了.

spring对oracle的clob和StoredProcedure 的处理

经过几天的夜战,终于知道使用spring对oracle的存储过程操作,程序死掉的真正原因,一旦执行存储过程没有任何返回值,因为 “Statement.getUpdateCount() returns 1 instead of -1”,是oracle的驱动的bug,10.1.0.2的驱动就不行,听说10.1.0.3就没有问题,但是10.1.0.3的jdbc驱动不能下载。大家可以使用weblogic8.1SP3带的10.1.0.2或weblogic9beta的10.1.0.2,可以解决这个问题。不知道开发 oracle jdbc的程序员是什末人,没毕业的大学生,还是拖欠了工资的程序员,开发水平远不如开源数据库的jdbc驱动的人呢,再次建议oracle驱动最好是自己命名,把文件名加上版本信息,要不会死人的。

http://72.5.124.102/thread.jspa?messageID=1424984

http://group.gimoo.net/review/44109

http://azi.javaeye.com/blog/182146

http://hi.baidu.com/happyidea/blog/item/c84b313de75add0abba16779.html



3,Random Connection Closed Exceptions

These can occur when one request gets a db connection from the connection pool and closes it twice.

见http://tomcat.apache.org/tomcat-4.1-doc/jndi-datasource-examples-howto.html


只有注册用户登录后才能发表评论。


网站导航: