解决方案 »
- byte[1024]这数组能存多少
- 纠结!!FCKeditor上传图片问题
- java字符串操作
- isEmpty()错误
- hibernate 如何处理长字符(在线等急!)
- Hibernate的getHibernateTemplate().delete(Object object)出现类型转换异常
- JSP+Servlet的服务器配置问题!
- jboss下配置连接池问题(跟贴有分)
- 求助:我部署EJB到Weblogic服务器的过程中出错
- 难道就没有人用JBuilder5.0+BAS4.5写过ejb吗?请进(你想要多少分?)
- spring2.5与hibernate3.3.2整合出现的问题
- java ee,ssh相关
出现这个异常时因为freeCon.getFirst();值为空
肯定是楼主释放掉资源没有把资源放入连接池中,刚开始启动的时候比如有20个连接吧,
用过释放掉,你用过20个之后,连接池中的connection就空了,所有报了这个异常.楼主释放资源的代码有问题.自己看看,是不是没把connection放回连接池中
方法没有同步,导致两个线程同时进入此方法了结果线程一在运行re = freeCon.getFirst();之后,可能时间片用完了,暂时停止运行。
这个时候线程二进入了这个方法,同时运行了removeFirst了。
然后线程一继续运行时removeFirst就报错了所以你的getConn必须增加同步声明
freeCon.remove(0);
}
}
if(re!=null){
freeCon.removeFirst();
} 试试
解决方法是
不要用你list对象直接去remove
而是用Iterator遍历
然后用Iterator对象去removefor (Iterator it = list.iterator(); it.hasNext();) {
Object o=it.next();
if(条件){
it.remove();
}
}说不出原因来,但的确能解决
因此if(re!=null){
freeCon.removeFirst();
}
我觉得没意思,再说我这个错误可能10天都不会花生。
一旦发生就必须要重启,不然怎样都不能使用。
2,其次,这个getConnection方法必须是同步的.否则会造成同抢而抛异常.
3,满足了2,ArrayList是否要同步就无所谓了.应为不会同抢了.
我不明白为什么扯到连接池,或者连接上去,错误并非连接不到,或者连接数据库出错.错误显示的行数和显示的错误方法
跟数据库连接没有任何关系,就出现在我连代码的.removeFirst(),你们的意思说报出的错误有假?
要不去网上查查list的remove是如何操作的
我感觉是迭代器的问题
for(int i=0;i<freeCon.size();i++)
{
if(freeCon.get(i)==null)
{
System.out.println("freeCon.get("+i+")is Null");
}else{
System.out.println("Item is:"+freeCon.get(i).toString());
}
}很大可能是多线程引起freeCon中元素被清除了,但实际的size的数字却还没变,出现了size和实际元素个数不同步的现象,不过看java原码size可知,它也是一个
属性,只是remove时 size--;并非每次去计算元素的个数,如此多线程使得LinkedList中乱套也是很有可能的.我在getConn方法上加了synchronized,如果没问题出现,那绝对就是多线程引起的,不过如此可以看出多线程是乎引起的错误有时真难以理解,从表面看它是否都是乎不合乎逻辑.不过有一点说明,上面有些兄弟说的是的多线程同时调removefirst()引起,但很难解释为什么第二次,第三次请求时一样有错,真正的原因,应是多线程调用时使linkedList中的size和实际元素个数不同步的原因.
if(re.isClosed())
{
this.getConn();
}
过几天发生一次是因为才开始的时连接池里面链接都是正常的 没有被关闭,过几天后可能由于某些原因链接被断掉了
可以检查一下 我说的这个 测试很简单 你先写个程序把所有的链接都close掉再压力测一下
public E removeFirst()移除并返回此列表的第一个元素。 指定者:
接口 Deque<E> 中的 removeFirst
返回:
此列表的第一个元素
抛出:
NoSuchElementException - 如果此列表为空
这是api上面的说法.跟你报的错误一样.所有得出结论你的list里面根本没有数据
需要AutoCode代码生成器SSH版的朋友,可以到天空软件园www.skycn.com
输入autocode来下载最新SSH版来使用。