SIMONE
BlogJava
首页
新随笔
新文章
联系
聚合
管理
posts - 495,comments - 227,trackbacks - 0
<
2006年8月
>
日
一
二
三
四
五
六
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(46)
给我留言
查看公开留言
查看私人留言
随笔分类
(476)
.NET(14)
ActiveX控件(3)
AJAX(14)
android(4)
AXIS(31)
C++(26)
DELL笔记本重装系统(1)
flash(14)
hadoop(5)
hadoop mahout(3)
hbase(7)
JAVA(153)
JavaScript(55)
JSP(44)
LINUX(17)
mysql(6)
nodejs(3)
oracle(16)
PHP(2)
rmi(2)
Ruby on rails(1)
solr(5)
spark(2)
SQL SERVER(11)
struts(13)
tomcat(8)
vista(3)
收藏(13)
随笔档案
(495)
2016年11月 (1)
2016年10月 (3)
2016年8月 (2)
2016年7月 (7)
2016年6月 (5)
2016年5月 (7)
2016年3月 (3)
2016年2月 (1)
2016年1月 (1)
2015年11月 (2)
2015年9月 (3)
2015年8月 (4)
2015年7月 (1)
2015年6月 (2)
2015年5月 (2)
2015年4月 (6)
2015年3月 (2)
2014年12月 (5)
2014年11月 (2)
2014年10月 (1)
2014年9月 (3)
2014年7月 (1)
2014年6月 (1)
2014年5月 (1)
2014年3月 (1)
2013年11月 (3)
2013年9月 (1)
2013年3月 (3)
2013年2月 (6)
2013年1月 (1)
2012年12月 (1)
2012年11月 (8)
2012年10月 (2)
2012年9月 (9)
2012年8月 (5)
2012年7月 (10)
2012年6月 (2)
2012年5月 (1)
2012年4月 (2)
2012年3月 (5)
2012年2月 (4)
2012年1月 (3)
2011年11月 (4)
2011年10月 (16)
2011年9月 (8)
2011年8月 (1)
2011年7月 (6)
2011年6月 (5)
2011年5月 (3)
2011年4月 (12)
2011年3月 (2)
2011年2月 (3)
2010年12月 (4)
2010年11月 (4)
2010年10月 (1)
2010年9月 (3)
2010年8月 (2)
2010年7月 (3)
2010年6月 (1)
2010年5月 (2)
2010年4月 (12)
2010年2月 (2)
2010年1月 (3)
2009年11月 (1)
2009年9月 (2)
2009年8月 (3)
2009年7月 (2)
2009年6月 (8)
2009年5月 (1)
2009年3月 (3)
2009年2月 (4)
2009年1月 (3)
2008年11月 (6)
2008年8月 (2)
2008年7月 (9)
2008年5月 (5)
2008年4月 (4)
2008年3月 (3)
2008年2月 (2)
2008年1月 (5)
2007年12月 (1)
2007年11月 (3)
2007年10月 (2)
2007年9月 (3)
2007年8月 (6)
2007年7月 (3)
2007年6月 (9)
2007年5月 (6)
2007年4月 (2)
2007年3月 (11)
2007年2月 (10)
2007年1月 (6)
2006年12月 (30)
2006年11月 (7)
2006年10月 (11)
2006年9月 (18)
2006年8月 (31)
2006年7月 (8)
2006年6月 (5)
2006年5月 (1)
2006年4月 (19)
2006年3月 (10)
最新随笔
1. nodejs将对象转换成字符串代码,动态执行字符串代码,requirejs使用r.js打包时动态生成配置文件
2. java keytool证书工具使用小结
3. 移动端Web开发调试之Chrome远程调试(Remote Debugging)
4. Genymotion 解决虚拟镜像下载速度特别慢的问题
5. ubuntu mate 下的sublime text 3调用中文输入法的修改
6. Java 和 HTTP 的那些事(二) 使用代理
7. 正则表达式复杂应用
8. maven 依赖打包插件
9. 使用embeded tomcat进行嵌入式javaee开发-启动tomcat
10. Secure Kafka Java Producer with Kerberos
11. Kerberos 配置
12. ubuntu kerberos配置
13. kerberos安装配置
14. Apache Kafka Security 101
15. MySQL分库分表的全局唯一ID生成器方案
16. java修改static final常量值
17. MYSQL之表分区----按日期分区
18. Max MQTT connections
19. HDFS配置Kerberos认证
20. Spark History Server配置使用
21. Spark On Yarn中spark.yarn.jar属性的使用
22. Benchmarking Apache Kafka: 2 Million Writes Per Second (On Three Cheap Machines)
23. Kafka 高性能吞吐揭秘
24. JAVA实现gif图片缩放与剪切功能
25. 基于Redis实现分布式锁
26. Spring 动态注册类
27. 模块化利器: 一篇文章掌握RequireJS常用知识
28. 浅谈Spark应用程序的性能调优
29. playframwork dist 打包时将非项目中的文件也打包进去
30. 利用中文数据跑Google开源项目word2vec
搜索
积分与排名
积分 - 1389152
排名 - 16
最新评论
1. re: 用javascript与java进行RSA加密与解密[未登录]
谢谢, 正在研究这块
--付琪
2. re: 关于Hibernate一对一不能延迟加载的总结
评论内容较长,点击标题查看
--哈
3. re: AJAX+jsp无刷新验证码实例
达到
--李迪
4. re: 关于Hibernate一对一不能延迟加载的总结
很6啊
--一个陌生人
5. re: 字符串相似度算法[未登录]
注释的挺不错,赞一个。也给楼上点个赞:
org.apache.commons.lang.StringUtils.getLevenshteinDistance
中是有实现。
--lili
阅读排行榜
1. JQuery-Dialog(弹出窗口,遮蔽窗口)(108432)
2. JTree用法及JTree使用经验总结(46232)
3. tesseract-ocr识别中文扫描图片实例讲解 (46142)
4. window.close关闭窗口,不弹出系统提示,直接关闭(43563)
5. CKeditor 配置使用(42005)
评论排行榜
1. window.close关闭窗口,不弹出系统提示,直接关闭(18)
2. tesseract-ocr识别中文扫描图片实例讲解 (15)
3. CKeditor 配置使用(10)
4. JQuery-Dialog(弹出窗口,遮蔽窗口)(10)
5. 我写的javascript常用静态方法类,分享大家(8)
MYSQL BUG #5020及解决方法
MYSQL BUG #5020
描述:
MYSQL网站BUG公示
错误MESSAGE:
Connection was closed due
to
the following exception:
**
BEGIN
NESTED EXCEPTION
**
java.sql.SQLException
MESSAGE: Communication link failure: java.net.SocketException, underlying cause: Software caused connection abort: recv failed
**
BEGIN
NESTED EXCEPTION
**
java.net.SocketException
MESSAGE: Software caused connection abort: recv failed
STACKTRACE:
java.net.SocketException: Software caused connection abort: recv failed
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.
read
(SocketInputStream.java:
129
)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:
183
)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:
222
)
at java.io.BufferedInputStream.
read
(BufferedInputStream.java:
277
)
at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:
1385
)
at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:
1532
)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:
1923
)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:
1163
)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:
1272
)
at com.mysql.jdbc.Connection.execSQL(Connection.java:
2236
)
at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:
1555
)
at net.sf.hibernate.impl.BatcherImpl.getResultSet(BatcherImpl.java:
89
)
at net.sf.hibernate.loader.Loader.getResultSet(Loader.java:
880
)
at net.sf.hibernate.loader.Loader.doQuery(Loader.java:
273
)
at net.sf.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:
138
)
at net.sf.hibernate.loader.Loader.doList(Loader.java:
1063
)
at net.sf.hibernate.loader.Loader.list(Loader.java:
1054
)
at net.sf.hibernate.hql.QueryTranslator.list(QueryTranslator.java:
854
)
at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:
1554
)
at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:
1531
)
at net.sf.hibernate.impl.SessionImpl.
delete
(SessionImpl.java:
1678
)
at net.sf.hibernate.impl.SessionImpl.
delete
(SessionImpl.java:
1664
)
出错原因:
我们的系统一天
24
小时运行,但在夜晚的时候是没有人连接的,因此
Socket
连接就超时了。早上尝试做任何事情(比如:登录)都将以失败告终,除非我们关闭连接或者重新建立连接。
到
3.0.11
后才会发生这种情况。
现在我们使用的MYSQL版本号为4.016,问题一样。
专家建议:
[
Mark Matthews
],翻译如下:
注意:我不赞成
Autoreconnect
功能,在以后的发行版本中,它最终会被移除。
在这种特殊情况下,
它不起作用的原因是:在
3.0.11
以后,
autoreconnect
的方法变得更加安全了并且和阿
utoCommit
状态有关联,这样的话就能使当前‘
in-flight
’事务失败(如果你在失败后,再次试图连接事务,就会重新被连接)。请查看相关解释文档,文档的修复故障中包括如何正确实用这个属性。
无论在哪种情况下, 如果
TCP/IP
在没有连接的情况下并且还不会冒着数据库被瘫痪的危险,是没有百分之百的方式使得
JDBC
驱动器被自动重连接的,这也是为何要移除
Autoreconnect
功能的原因。
不管网络发生什么情况,
JDBC
都不会说明这个连接是否处于连接状态。
JDBC driver
客户端负责处理网络故障,只有应用程序本身(实际上是应用程序的开发者)知道如何正确应对事务失败的情况。在服务器上过期的‘
Wait
—
timeout
’基本上是服务器给与的强制性网络故障。
你通过把‘
Wait
—
timeout
’设置的高点儿就可以改正它,尽管如此,作为一个开发者,你的代码应该包含相关的异常处理并采取适当的恢复措施,不要都把它们传到调用堆中。
连接错误总是有一个
SQL
状态‘
08
’。如果你发现它的话,你可以再连接一次并重试事务(如果是适当的话)
不管什么原因,如果这样不起作用的话,配置你的连接池来测试是否处于连接状态并且那些长时间闲置连接(所有的连接池都能这样做,但是它们的配置取决于池子)。
作者说明:在MYSQL4.1以后的版本当中,没有“wait_timeout”变量,由
interactiveClient代替
参考资料:http://dev.mysql.com/doc/connector/j/en/cj-configuration-properties.html
[
Kirk Wylie
]:翻译如下:
如果有一个事务在运行的话,就能得到一个特别简单的例子:
---
如果连接在
autoCommit
模式下
,autoReconnect
是安全的。
---
如果连接不在
autoCommit
模式下,但是没有打开的事务,
autoReconnect
是安全的。(因为连接可能在池在里面)
---
如果连接不在
autoCommit
模式下,有打开的事务,这样就会抛出异常。
这样会解决你不在
autoRecom\nnect
模式下的忧虑并且会保留应用程序的功能性。
尽管如此,在它改变的时候,在改变日志中没有任何记录说明发生了改变,这点令我很烦。由于这种改变很可能破坏我的应用程序,这种变化因该添加到
CHANGE
文件中。
如下是我个人的做法:
(STRUTS+SPRING+HIBERNATE)
1、把mysql的变量
interactiveClient
由默认的28800(8个小时)延长。并告知用户多长时间后,重新启动TOMCAT服务器。不过,MYSQL5.0.12版本以前的所有版本,只要你设置成了默认语言为GBK,所有对interactive_timeout(wait_timeout)的时候如何设置,重新连接或者重新启动MYSQL后,都是28800,现在我使用的5.0.18后,使用GBK,没有问题。
2、在HIBERNATE当中加入:
..
<
property name
=
"
hibernate.connection.url
"
>
jdbc:mysql:
//
192.168.100.111/eai?autoReconnect=true</property>
<
property name
=
"
enableDeprecatedAutoreconnect
"
>
true
</
property
>
<!-- 如下的语句是使用第三方的DBCP来建立连接池 -->
<property name="dbcp.maxActive">100</property>
<property name="dbcp.whenExhaustedAction">1</property>
<!-- 看到了没有,这个maxWait一定要大于MYSQL默认的28800(秒) -->
<property name="dbcp.maxWait">30000</property>
<property name="dbcp.maxIdle">10</property>
<property name="dbcp.ps.maxActive">100</property>
<property name="dbcp.ps.whenExhaustedAction">1</property>
<property name="dbcp.ps.maxWait">30000</property>
<property name="dbcp.ps.maxIdle">10</property>
..
如上两种方法均可,推荐大家使用第二种方法,来遮挡一下MYSQL的BUG。
如果有不对之处,请大家提出自己的见解。
posted on 2006-08-04 20:16
SIMONE
阅读(484)
评论(0)
编辑
收藏
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理