快被老板开除了:tomcat使用连接池,但是tomcat关闭后数据库的连接没有关闭(急)
本人使用strtus结构做了一个网站,基本环境windows server 2000, tomcat5.0.28, jdk1.4.2,使用连接池来做数据库连接.
当tomcat使用一段时间后,发现数据库的连接是越来越多,最后数据库的进程数都耗光了,导致所有别的程序都没法连接数据库,这个系统全部无法工作了.
今天我试了一下,发现tomcat关闭后,他和数据库的连接居然没有断开导致这个问题.
这个核心程序都是包装好了的,也做个一些较大的应用,不过做的都是jsp.没有发现这个问题,tomcat一关闭,所有的和数据库的会话连接都会断开.
现在问题非常严重,解决不了就要被公司开除了阿!!!
问题点数:100、回复次数:75Top
1 楼hefei0603(风雨)回复于 2006-07-27 14:19:21 得分 3
你注意看是不是每次连接数据库后都及时关闭了啊!找不到的话就每次数据库连接后完成相关操作马上关闭连接(如果有结果集的就将结果集读出到数组或者arryList中,然后关闭连接)。这样性能上可能要稍微慢一点,但也比占着数据库连接不释放好啊!Top
2 楼ray_1981(雷)回复于 2006-07-27 14:23:20 得分 2
同意楼上!
检查每次调用数据库连接后是否都及时关闭了!Top
3 楼Changeczy(水上漂)回复于 2006-07-27 14:41:11 得分 0
谢谢楼上两位兄弟!!!
这个是包装好了的,所有代码肯定都是做了关闭和异常处理的了!刚才还仔细检查了一下,群是都关闭了,特别是结果集的地方,都做了finally的处理了的,关闭了!
最奇怪的是tomgcat关闭了,居然在数据库端看到还有jdbc thin client存在!
toncat都关闭了,怎么可能还有连接呢!Top
4 楼infowain(infowain)回复于 2006-07-27 14:47:00 得分 3
你看看那些还存在连接都执行了什么sql操作,多半是那些sql操作有死锁之类的情况发生。
找到这些sql,也可以帮你定位你的问题所在。
Top
5 楼ray_1981(雷)回复于 2006-07-27 14:47:08 得分 2
jdbc thin 是通过Java sockets进行通信。Top
6 楼Changeczy(水上漂)回复于 2006-07-27 15:02:57 得分 0
infowain(infowain) ( ) 信誉:100
你看看那些还存在连接都执行了什么sql操作,多半是那些sql操作有死锁之类的情况发生。
找到这些sql,也可以帮你定位你的问题所在。
这个我也看了,那些连接的显示:当前会话没有执行SQL
ray_1981(雷) ( ) 信誉:100
jdbc thin 是通过Java sockets进行通信。
能不能说的更加详细一点!
不管什么通信,应该也是和tomcat的连接的,tomcat关闭连接怎么还存在呢!
我还有一个另外一套较大访问量的系统,只要一关闭tomcat,所有的会话jdbc thin 都会自动断开.Top
7 楼Changeczy(水上漂)回复于 2006-07-27 15:04:11 得分 0
另外我的数据库是:9.2.0.1
我怀疑那些连接都已经和tomcat没有关系了,成为一些无效的或者异常的连接了!Top
8 楼Changeczy(水上漂)回复于 2006-07-27 16:02:28 得分 0
自己顶!!!Top
9 楼xiangxyz(明天爱谁)回复于 2006-07-27 16:45:10 得分 1
数据库连接写得有问题。
建议好好看一遍。Top
10 楼shiningsb(web思想社区『www.webtm.cn』)回复于 2006-07-27 16:53:56 得分 3
给你招应急
定义个创建连接的时间变量 然后拿现在的时间去减去创建连接的时间变量
然后判断一下 如果超出60秒 就自动关闭连接。。
呵呵 可以试下Top
11 楼ray_1981(雷)回复于 2006-07-27 17:12:41 得分 3
同意infowain(infowain) !
这个问题应该和SQL语句执行的操作有关。
长时间某句执行SQL,不能关闭。
Top
12 楼emin_lee(emin)回复于 2006-07-27 17:36:13 得分 3
在数据源配置中加入下面几句:
<parameter>
<name>removeAbandoned</name>
<!-- Abandoned DB connections are removed and recycled -->
<value>true</value>
</parameter>
<parameter>
<name>removeAbandonedTimeout</name>
<!-- Use the removeAbandonedTimeout parameter to set the number of seconds a DB connection has been idle before it is considered abandoned. -->
<value>60</value>
</parameter>
回收无效连接~Top
13 楼poko(poko)回复于 2006-07-27 21:04:45 得分 3
有没有使用HIBERNATE
不管有没有记住在JAVA里数据库连接一个程序只需要1次就够了,不是像ASP那样每页连接1次。
TOMCAT关闭了数据库连接肯定会关闭,如果不管那他还跟什么东西连?那只能说明数据库有问题
估计是上面的问题,数据库连接做成静态类。就是STATIC是不是叫静态啊,突然忘记了Top
14 楼Javafan0(狂刀)回复于 2006-07-27 22:22:55 得分 1
顶.Top
15 楼pengcan_2006()回复于 2006-07-27 22:54:32 得分 1
UPTop
16 楼wumir(Menes)回复于 2006-07-28 05:25:44 得分 2
如果“tomcat关闭后,他和数据库的连接居然没有断开”的话,检查数据库的设置吧..Top
17 楼cuizhanjun1981(城市稻草人)回复于 2006-07-28 08:27:23 得分 3
sqlserver自己原因,一般都会保持连接,con.close()后也一样,程序销毁也一样,长时间不连自动会断开,但时间很长。
但这不影响 服务,因为程序做的不是太烂的话,及时关闭,就只会保持一个连接,因为只用到一个 connction引用。
你程序里一定,new 过1个以上的connction ,并且有1个打开后没关。Top
18 楼zzhzzh204553(真的好想你)回复于 2006-07-28 08:34:55 得分 1
呵呵,路过。
接分Top
19 楼guanggan123(红泪 ㊣)回复于 2006-07-28 09:19:04 得分 1
帮你顶一下Top
20 楼yanhuaxie(IT Farmer)回复于 2006-07-28 09:20:18 得分 3
还是把所有的操作数据库的程序好好看看,前断时间,我们公司的另一个部门也出现了类似的情况,我们研发部和网站平台部的系统用的是同一套数据库系统,我们测试开发用一个DB,他们的系统已经实习运行,可是他们的网站程序是一个刚毕业没有多久的人写的,开始一直找不到原因,只要他们的程序一运行,过不了几分钟,我们的程序就连不上数据库,他们的程序也连不上,不他们的程序关了,就一切正常。最后搞得没有办法,让我们去帮他看程序,结果发现是他用完后没有释放数据库连接,晕死了!Top
21 楼NikeUser(NikeUser)回复于 2006-07-28 09:20:22 得分 1
关注!Top
22 楼hefei0603(风雨)回复于 2006-07-28 09:30:46 得分 2
再仔细看下已经封装好连接数据库的程序,有可能其中大部分都关闭连接,但在某些特殊情况下没考虑到要关闭连接。Top
23 楼emin_lee(emin)回复于 2006-07-28 09:38:02 得分 2
如果不出意外
应该是你的程序有问题~Top
24 楼Changeczy(水上漂)回复于 2006-07-28 09:43:13 得分 0
我的tomcat里面有这几句话
<parameter>
<name>removeAbandoned</name>
<!-- Abandoned DB connections are removed and recycled -->
<value>true</value>
</parameter>
<parameter>
<name>removeAbandonedTimeout</name>
<!-- Use the removeAbandonedTimeout parameter to set the number of seconds a DB connection has been idle before it is considered abandoned. -->
<value>60</value>
</parameter>Top
25 楼bob_thb(绿果)回复于 2006-07-28 09:43:31 得分 1
关注。Top
26 楼Changeczy(水上漂)回复于 2006-07-28 09:45:44 得分 0
有没有使用HIBERNATE
不管有没有记住在JAVA里数据库连接一个程序只需要1次就够了,不是像ASP那样每页连接1次。
TOMCAT关闭了数据库连接肯定会关闭,如果不管那他还跟什么东西连?那只能说明数据库有问题
估计是上面的问题,数据库连接做成静态类。就是STATIC是不是叫静态啊,突然忘记了
我没有使用HIBERNATE,但是我的连接包装成一个静态类了!
不过这个我们有个大的项目也是这么做的阿,没有发现这样问题.Top
27 楼Changeczy(水上漂)回复于 2006-07-28 09:51:27 得分 0
还是把所有的操作数据库的程序好好看看,前断时间,我们公司的另一个部门也出现了类似的情况,我们研发部和网站平台部的系统用的是同一套数据库系统,我们测试开发用一个DB,他们的系统已经实习运行,可是他们的网站程序是一个刚毕业没有多久的人写的,开始一直找不到原因,只要他们的程序一运行,过不了几分钟,我们的程序就连不上数据库,他们的程序也连不上,不他们的程序关了,就一切正常。最后搞得没有办法,让我们去帮他看程序,结果发现是他用完后没有释放数据库连接,晕死了!
连接肯定是关闭了的(至少我能想到的异常等地方都关闭了),要不早就死机了(网站访问量还是比较大的),昨天我们部门几个人全部连上做了半个小时测试,就是不停的翻页,查询等等,都没有无法关闭的连接(就是tomgcat关闭,还有和数据库的会话),但是今天早上过来发现,又有好几个这样的连接了(就是tomcat关闭,数据库的会话还存在).我把这台机器管道之后,这些会话居然还存在.郁闷!!!!!!!!!!!!!!!Top
28 楼diggywang(Miner Lover!)回复于 2006-07-28 10:21:15 得分 3
我觉得还是要仔细从代码中去找,楼主你敢那么肯定连接全都关闭?只要有一个漏网之鱼,麻烦就可能出现,建议一个方法一个方法一行一行检查下去。像你现在这样的情况,我估计是一个很隐秘的平时不常用的数据库连接操作没有释放。Top
29 楼sunangle(flying_eagle)回复于 2006-07-28 10:33:52 得分 1
Changeczy(水上漂) 兄台
<parameter>
<name>removeAbandoned</name>
<!-- Abandoned DB connections are removed and recycled -->
<value>true</value>
</parameter>
<parameter>
<name>removeAbandonedTimeout</name>
<!-- Use the removeAbandonedTimeout parameter to set the number of seconds a DB connection has been idle before it is considered abandoned. -->
<value>60</value>
</parameter>
放到server.xml还是哪里啊?
Top
30 楼Changeczy(水上漂)回复于 2006-07-28 10:38:48 得分 0
Changeczy(水上漂) 兄台
<parameter>
<name>removeAbandoned</name>
<!-- Abandoned DB connections are removed and recycled -->
<value>true</value>
</parameter>
<parameter>
<name>removeAbandonedTimeout</name>
<!-- Use the removeAbandonedTimeout parameter to set the number of seconds a DB connection has been idle before it is considered abandoned. -->
<value>60</value>
</parameter>
这个是放到server.xml的<Context>片段里面的Top
31 楼xwt799023(★★★★★)回复于 2006-07-28 11:36:26 得分 1
我也顶下,我那个也偶尔出一次死掉现像,一至没有解决Top
32 楼fangjj()回复于 2006-07-28 11:39:54 得分 1
都不想说了。肯定有隐藏的数据库链接没有关闭。楼主怎么那么肯定都 关了呢?Top
33 楼alpsboy(刚)回复于 2006-07-28 12:12:58 得分 2
我没有使用HIBERNATE,但是我的连接包装成一个静态类了!
静态类有问题,不要用static的Top
34 楼lyqq(曾经是菜,现在还是菜!)回复于 2006-07-28 12:31:33 得分 3
静态类有问题,不要用static的???
为啥不能用静态类? 偶就是一直用静态类的。没有因为连接出过大问题!
To LZ:
估计是某个比较特殊的分支没有正常关闭连接。
Top
35 楼schol(敲击思想的键盘,滑动灵感的鼠标~~~好男儿志在四方)回复于 2006-07-28 13:58:14 得分 2
网上应该有比较完善的关于数据库连接池代码,可以参考一下!Top
36 楼Nowish(看我能忍耐多久)回复于 2006-07-28 13:59:48 得分 1
关注中~Top
37 楼zhl0369(T_stone)回复于 2006-07-28 14:52:02 得分 1
帮顶Top
38 楼jt6(横看成岭侧成峰)回复于 2006-07-28 15:01:58 得分 3
建议你在SQL SERVER数据库作个测试脚本,看看究竟是些什么连接没有关闭。再查OS和DB的问题。
还有,不知道你董不懂连接池。那个东西是OS和DB管理的,不管你应用程序、Tomcat有什么要求,都是“请求”和“建议”性质,OS或者DB可以不鸟你。
Top
39 楼laoxing521(想做程序员的农民)回复于 2006-07-28 15:25:29 得分 2
不至于吧
tomcat关掉后连接竟然没关掉?
我想这个事情数据库本身就会做呀
长时间没有提交的事务会自动回滚,长时间没有活动的连接会自动断掉
若这一点数据库都做不到,不太说得过去吧
----------
不太懂数据库,想当然的说一两句Top
40 楼quanquan626(圈圈)回复于 2006-07-28 15:41:48 得分 1
upTop
41 楼Changeczy(水上漂)回复于 2006-07-28 18:25:33 得分 0
问题还是没有解决阿!!!
各位兄弟出出主义1!!Top
42 楼whmily(不回头的土豆)回复于 2006-07-28 18:41:57 得分 1
楼猪使用的什么连接池。用的什么数据库
让偶们知道个明白先
Top
43 楼whmily(不回头的土豆)回复于 2006-07-28 18:45:52 得分 5
楼猪把tomcat/logs下有问题的日志发上来看看。
如果使用的是TOMCAT自带的连接池的话,那你可查查DBCP中是如何解决连接不能释放问题。因为TOMCAT自带的连接池是DBCP,而DBCP连接不能自动释放是个老问题了。我个人建议使用proxool连接池。Top
44 楼zhui1(Rick)回复于 2006-07-28 20:40:32 得分 1
upTop
45 楼yejienihao(刚摸到.NET的门槛)回复于 2006-07-28 21:55:55 得分 1
关注Top
46 楼pele7(寞鸣)回复于 2006-07-29 11:13:06 得分 3
我前两天也出现过类似的问题,当时我仔细查了一下JAVADOC,发现是因为数据库执行查询时,statement一连执行查询了好几次,会产生连接池消耗的问题
当时解决办法是,每个查询的statement的都不一样,例如:
conn = ds.getConnection();
stmt1 = conn.createStatement();
stmt2 = conn.createStatement();
rs1 = stmt1.executeQuery(sql1);
rs2 = stmt2.executeQuery(sql2);
不知道能不能解决楼主的问题:)呵呵
Top
47 楼leedongxing()回复于 2006-07-29 14:26:15 得分 1
我得学学阿Top
48 楼tx18(www.sqlserver.com.cn)回复于 2006-07-29 15:43:41 得分 3
检查数据库配置参数
连接池关闭连接,是应用程序关闭了自己对数据库的连接,而数据库服务器并没有马上关闭对应的响应资源,而继续等待下一次请求,直到在设定的时间后仍没有收到请求才关闭,您就要这个时间参数.MySql中是interactive_timeoutTop
49 楼jt6(横看成岭侧成峰)回复于 2006-07-29 16:23:14 得分 0
看来搂主是习惯了ctrl-C+ctrl-V
介绍情况都是照抄的,没有自己测试过
Top
50 楼dt211(大头)回复于 2006-07-29 22:44:27 得分 0
顶Top
51 楼findhappy7(简单杀手)回复于 2006-07-30 21:21:21 得分 0
当tomcat使用一段时间后,发现数据库的连接是越来越多,最后数据库的进程数都耗光了,导致所有别的程序都没法连接数据库,这个系统全部无法工作了.
---
数据最大库连接数是可以在数据库里面设置的,如果你使用TOMCAT自带的连接池里面也有最大连接数限制,你可以配置一下,应该最大配70应该够了,如果你的程序没有问题的话。你说的导致所以其他程序无法连接DB,那应该是你的WEB程序占用了DB的所有连接,你在TOMCAT连接池中配置最大连接数,就算你的WEB程序有问题,还不至于会影响其他程序的运作。
你说的连接越来越多,也很有可能不是你的连接没有finally没有关闭,而是你的程序设计问题,
如果你的程序中大量设置到分页,而你的分页的方式是直接从DB把表的所有记录都LOAD回WEB服务器再截取的话,那是比较耗数据库时间的,其实就是延迟了关闭数据库连接的时候,当大量并发访问的时候,数据库的连接就会不断增加,如果长时间这样,,就会有很多废弃连接(真正原因,我也不清楚),所以一定要配置废弃连接回收。另外,如果访问量大,可以考虑使用CACHE,缓冲DB压力,,
今天我试了一下,发现tomcat关闭后,他和数据库的连接居然没有断开导致这个问题.
这个核心程序都是包装好了的,也做个一些较大的应用,不过做的都是jsp.没有发现这个问题,tomcat一关闭,所有的和数据库的会话连接都会断开.
---
连接和你是否才有STRUTS应该没什么关系。
最后的意见:
在TOMCAT连接池中,记得配置最大连接时间(超时时间)、回收废弃连接(为了测试可以配置回收废弃连接的LOG)、连接池最大连接数、可以考虑使用CACHE
Top
52 楼shanshuiboy()回复于 2006-07-31 01:12:48 得分 0
LZ,你怎么知道你的数据库连接没有关闭?你通过什么查看的?TOMCAT会自动关闭的呀Top
53 楼shanshuiboy()回复于 2006-07-31 01:13:01 得分 0
你怎么知道你的数据库连接没有关闭?你通过什么查看的?Top
54 楼best_threewood( Do it !)回复于 2006-07-31 09:03:34 得分 0
学习
Top
55 楼Changeczy(水上漂)回复于 2006-07-31 09:19:04 得分 0
谢谢各位兄弟们的支持!!!
所有回复我都仔细看过!!!
我会一一验证,问题解决之后,我贴出帖子,然后给分!!!欢迎关照!Top
56 楼shiningsb(web思想社区『www.webtm.cn』)回复于 2006-07-31 13:59:22 得分 0
好几天了 还没解决哦?Top
57 楼langke93(冬会初雪)回复于 2006-07-31 15:25:28 得分 0
用proxool连接池试一下,可以参考这个:
http://blog.kaila.com.cn/user1/49574/archives/2006/17307.shtmlTop
58 楼zhanlin911(我太菜)回复于 2006-07-31 17:21:17 得分 0
用过滤器控制开关Top
59 楼j2ee_wangdawei()回复于 2006-07-31 21:54:24 得分 0
finally
{
if (rst != null)
{
try
{
rst.close();
}
catch (SQLException ex1)
{
ex1.printStackTrace();
}
}
if (pstm != null)
{
try
{
pstm.close();
}
catch (SQLException ex2)
{
ex2.printStackTrace();
}
}
if (conn != null)
{
try
{
conn.close();
}
catch (SQLException ex3)
{
ex3.printStackTrace();
}
}
}
是这样关闭的吗?
你用了连接池了 还用什么静态类 连接对象是连接池管理的
你用的时候get出来 不用了就关掉
你都用了静态 拿出来就不放了 关了也没用啊 静态就代表它一直在内存中。
你要是没用连接池的话,你就自己写连接类,用里面加上 同步静态方法,实现单态。就可以了
把你的静态方法放掉试一下。
如果解决了回贴 不给分也行Top
60 楼j2ee_wangdawei()回复于 2006-07-31 22:02:35 得分 0
刚才说的好象不清楚,看一下你所谓的静态类 是不是用静态的变量 指向了连接池的对象。
是要用静态的方法去 操作局部变量 用局部变量得到连接池的对象,用完了关了
绝对没问题的。
很有可能是静态变量指向了连接对象Top
61 楼flyingever(随遇而安)回复于 2006-08-01 08:54:19 得分 0
markTop
62 楼wanguanghai(心灵鸡汤)回复于 2006-08-01 13:08:27 得分 0
markTop
63 楼junyi2003(超级菜鸟)回复于 2006-08-01 14:48:12 得分 0
数据层写得有问题.......
一段时间是多少时间? 使用该程序的频率是多少?
还有就是你的连接池有问题......如果限定了连接数的话,应该不可能影响到其他程序的.
总之一句话,你的程序数据层写得不好,需要改进.Top
64 楼Changeczy(水上漂)回复于 2006-08-01 16:44:38 得分 0
j2ee_wangdawei() ( ) 信誉:100
你的关闭代码很好,我们也是这么关闭的,非常合理.所以这个地方不会有问题!
关于静态类:我先定义一个类,里面有一个静态变量(),这个静态变量的类型就是我包装好了的类,该类里面有几个public方法,其中有查询,更新,连接池创建关闭等方法,平常我只要调用静态类的静态变量的几个public方法就可以了!
不知道这样说大家明白没有?!Top
65 楼Changeczy(水上漂)回复于 2006-08-01 16:53:30 得分 0
junyi2003(超级菜鸟) ( ) 信誉:100
数据层写得有问题.......
一段时间是多少时间? 使用该程序的频率是多少?
还有就是你的连接池有问题......如果限定了连接数的话,应该不可能影响到其他程序的.
总之一句话,你的程序数据层写得不好,需要改进.
一天可以增加20多个无法关闭的连接,网站24小时可能都有人访问,频率我可没有提过.
你说有问题,说详细一点阿!不能泛泛说"肯定是数据层写得有问题......."地球人都知道阿!
数据层写得不好,不好再那些地方???再那些地方改进???怎么改进???说详细一点阿!Top
66 楼Changeczy(水上漂)回复于 2006-08-01 16:58:23 得分 0
shanshuiboy() ( ) 信誉:100 2006-7-31 1:12:49 得分: 0
LZ,你怎么知道你的数据库连接没有关闭?你通过什么查看的?TOMCAT会自动关闭的呀
这个再数据库里面查询会话就可以了,也可以用pl/sql deve的会话看,还可以使用oracle的企业管理器查看会话!也可以用查询SQL(你可以google一下阿)!!!
TOMCAT会自动关闭的呀,设置一下每天半夜tomcat会重启一下(呵呵...休息一下,释放资源)
Top
67 楼liangkandy2002(树大招风)回复于 2006-08-01 17:20:10 得分 0
每天都要重启不是好办法,但也可以解言眉之急.
那是重启tomcat之后就没事罗?
有毒没?Top
68 楼j2ee_wangdawei()回复于 2006-08-01 17:40:41 得分 0
to Changeczy(水上漂) 我想问一下 你的连接对象是
在你的public方法里面得到的吗?
你的想法很好 只有一个实例,但是两个人同时用你的实例你就挂了
在你的public方法上加 synchronized 关键字
如果还不行的话
建议你去换一种连接池,Top
69 楼j2ee_wangdawei()回复于 2006-08-01 18:20:49 得分 0
建议用apache 的 dbcpTop
70 楼liangkandy2002(树大招风)回复于 2006-08-02 08:39:15 得分 0
to 楼上的j2ee_wangdawei() :
在public方法上加 synchronized 关键字
但在获取Connection连接的方法不应该加上哦,要记住.
如果一个客户getConnection失败,会死锁在里头吧,那下一客户会可以得到连接了吗?Top
71 楼zlsunnan(深蓝)回复于 2006-08-02 09:15:16 得分 0
关注中。。。。。。。。。。Top
72 楼Changeczy(水上漂)回复于 2006-08-02 09:34:07 得分 0
whmily(不回头的土豆) ( ) 信誉:95 2006-7-28 18:45:52 得分: 0
楼猪把tomcat/logs下有问题的日志发上来看看。
如果使用的是TOMCAT自带的连接池的话,那你可查查DBCP中是如何解决连接不能释放问题。因为TOMCAT自带的连接池是DBCP,而DBCP连接不能自动释放是个老问题了。我个人建议使用proxool连接池。
这种情况没有异常,没有写日志阿!
TOMCAT自带的连接池是DBCP,而DBCP连接不能自动释放是个老问题了?!
难道各位没有使用DBCP连接池的,还是各位大侠没有遇到过这个问题?
我准备用proxool试试!!!Top
73 楼Changeczy(水上漂)回复于 2006-08-07 15:24:47 得分 0
使用proxool连接池,观察了一个星期,没有发现任何异常,问题解决!
至于原来的问题,没有找出什么原因引起的,可能是DBCP连接池的问题!
问题解决,不想耗过多精力赖做这个研究了!
推荐大家使用proxool连接池.
现在接贴!!!!!!!!!!Top
74 楼langke93(冬会初雪)回复于 2006-08-07 20:25:39 得分 0
有没有搞错啊?我帮你解决问题了没给我分Top
75 楼YuLimin(阿敏总司令:简单就是美—钻石闪闪您快结贴!)回复于 2006-08-13 19:31:29 得分 0
用Proxool,简单易用,自动重连,即使第一次可能会有错:(
示例及配置详见
http://painisk.bokee.com/4511289.htmlTop




