Communications link failure异常解决

假如你现在还在为自己的技术担忧,假如你现在想提升自己的工资,假如你想在职场上获得更多的话语权,假如你想顺利的度过35岁这个魔咒,假如你想体验BAT的工作环境,那么现在请我们一起开启提升技术之旅吧,详情请点击http://106.12.206.16:8080/qingruihappy/index.html

 

一,异常现象

  1 com.bill99.inf.ibatis.DBException: queryForList error::sqlId=orgOrderAssetsMapping.queryModelOrgOrderAssetsMapping param:com.bill99.boss.domain.org.model.OrderAssetsMapping@51ab0a47
  2     at com.bill99.inf.ibatis.SqlMapDao.queryForList(SqlMapDao.java:155)
  3     at com.bill99.inf.ibatis.SqlMapDao.queryForObject(SqlMapDao.java:195)
  4     at com.bill99.boss.domain.org.dao.OrderAssetsMappingDao.findOrderAssetsMappingByModel(OrderAssetsMappingDao.java:40)
  5     at com.bill99.boss.domain.org.dao.OrderAssetsMappingDao$$FastClassBySpringCGLIB$$9e640e6c.invoke(<generated>)
  6     at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
  7     at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:700)
  8     at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
  9     at org.springframework.aop.framework.adapter.AfterReturningAdviceInterceptor.invoke(AfterReturningAdviceInterceptor.java:51)
 10     at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
 11     at org.springframework.aop.framework.adapter.MethodBeforeAdviceInterceptor.invoke(MethodBeforeAdviceInterceptor.java:51)
 12     at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
 13     at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:91)
 14     at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
 15     at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:633)
 16     at com.bill99.boss.domain.org.dao.OrderAssetsMappingDao$$EnhancerBySpringCGLIB$$a4a208a3.findOrderAssetsMappingByModel(<generated>)
 17     at com.bill99.boss.domain.org.service.impl.OrderAssetsMappingServiceImpl.findOrderAssetsMappingByModel(OrderAssetsMappingServiceImpl.java:42)
 18     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 19     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
 20     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 21     at java.lang.reflect.Method.invoke(Method.java:606)
 22     at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
 23     at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
 24     at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
 25     at org.springframework.aop.framework.adapter.MethodBeforeAdviceInterceptor.invoke(MethodBeforeAdviceInterceptor.java:51)
 26     at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
 27     at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:91)
 28     at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
 29     at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
 30     at com.sun.proxy.$Proxy216.findOrderAssetsMappingByModel(Unknown Source)
 31     at com.bill99.boss.domain.org.service.AssetsMappingCache.getColNameByFiled(AssetsMappingCache.java:52)
 32     at com.bill99.boss.domain.org.service.impl.AssetsProxyServiceImpl.covertFiledNameToColName(AssetsProxyServiceImpl.java:131)
 33     at com.bill99.boss.domain.org.service.impl.AssetsProxyServiceImpl.covertParams(AssetsProxyServiceImpl.java:88)
 34     at com.bill99.boss.domain.org.service.impl.AssetsProxyServiceImpl.createAssetsBean(AssetsProxyServiceImpl.java:43)
 35     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 36     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
 37     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 38     at java.lang.reflect.Method.invoke(Method.java:606)
 39     at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
 40     at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
 41     at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
 42     at org.springframework.aop.framework.adapter.MethodBeforeAdviceInterceptor.invoke(MethodBeforeAdviceInterceptor.java:51)
 43     at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
 44     at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:91)
 45     at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
 46     at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
 47     at com.sun.proxy.$Proxy217.createAssetsBean(Unknown Source)
 48     at MdpTest.test(MdpTest.java:40)
 49     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 50     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
 51     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 52     at java.lang.reflect.Method.invoke(Method.java:606)
 53     at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
 54     at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
 55     at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
 56     at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
 57     at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:74)
 58     at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:83)
 59     at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:72)
 60     at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:231)
 61     at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:88)
 62     at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
 63     at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
 64     at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
 65     at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
 66     at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
 67     at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
 68     at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:71)
 69     at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
 70     at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:174)
 71     at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
 72     at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
 73     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
 74     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
 75     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
 76     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
 77 Caused by: com.ibatis.common.jdbc.exception.NestedSQLException:   
 78 --- The error occurred while executing query.  
 79 --- Check the  select t.id as "id",t.product_code as "productCode",t.filed_name as "filedName", t.col_name as "colName"  from r_order_assets_mapping t   where 1=1    and      t.product_code=?    and      t.filed_name=?     order by  t.id desc    .  
 80 --- Check the SQL Statement (preparation failed).  
 81 --- Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.
 82     at com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.executeQueryWithCallback(MappedStatement.java:201)
 83     at com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.executeQueryForList(MappedStatement.java:139)
 84     at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(SqlMapExecutorDelegate.java:578)
 85     at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(SqlMapExecutorDelegate.java:552)
 86     at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForList(SqlMapSessionImpl.java:118)
 87     at com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForList(SqlMapClientImpl.java:94)
 88     at com.bill99.inf.ibatis.SqlMapDao.queryForList(SqlMapDao.java:151)
 89     ... 74 more
 90 Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.
 91     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
 92     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
 93     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
 94     at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
 95     at com.mysql.jdbc.Util.handleNewInstance(Util.java:409)
 96     at com.mysql.jdbc.Util.getInstance(Util.java:384)
 97     at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1015)
 98     at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989)
 99     at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:984)
100     at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:929)
101     at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2412)
102     at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:787)
103     at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:49)
104     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
105     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
106     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
107     at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
108     at com.mysql.jdbc.Util.handleNewInstance(Util.java:409)
109     at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:357)
110     at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285)
111     at java.sql.DriverManager.getConnection(DriverManager.java:571)
112     at java.sql.DriverManager.getConnection(DriverManager.java:187)
113     at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriverManager(DriverManagerDataSource.java:173)
114     at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriver(DriverManagerDataSource.java:164)
115     at org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnectionFromDriver(AbstractDriverBasedDataSource.java:153)
116     at org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnection(AbstractDriverBasedDataSource.java:119)
117     at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:111)
118     at org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler.invoke(TransactionAwareDataSourceProxy.java:224)
119     at com.sun.proxy.$Proxy399.prepareStatement(Unknown Source)
120     at com.ibatis.sqlmap.engine.execution.DefaultSqlExecutor.prepareStatement(DefaultSqlExecutor.java:519)
121     at com.ibatis.sqlmap.engine.execution.DefaultSqlExecutor.executeQuery(DefaultSqlExecutor.java:173)
122     at com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.sqlExecuteQuery(MappedStatement.java:221)
123     at com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.executeQueryWithCallback(MappedStatement.java:189)
124     ... 80 more
125 Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
126 
127 The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
128     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
129     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
130     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
131     at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
132     at com.mysql.jdbc.Util.handleNewInstance(Util.java:409)
133     at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1122)
134     at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:344)
135     at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2334)
136     ... 102 more
137 Caused by: java.net.ConnectException: Connection timed out: connect
138     at java.net.DualStackPlainSocketImpl.connect0(Native Method)
139     at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
140     at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
141     at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
142     at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
143     at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
144     at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
145     at java.net.Socket.connect(Socket.java:579)
146     at java.net.Socket.connect(Socket.java:528)
147     at java.net.Socket.<init>(Socket.java:425)
148     at java.net.Socket.<init>(Socket.java:241)
149     at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:256)
150     at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:293)
151     ... 103 more

二,解决方法

 

有下面的导致的

1 <bean id="bossDS"  
2             class="org.springframework.jdbc.datasource.DriverManagerDataSource"  
3             p:driverClassName="org.gjt.mm.mysql.Driver"   
4             p:url="jdbc:mysql://192.168.126.147:3306/appmobile?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=UTF-8"  
5             p:username="root" p:password="111111" />

或者

1     <bean id="bossDS" class="org.springframework.jdbc.datasource.DriverManagerDataSource">  
2     <property name="driverClassName"><value>oracle.jdbc.OracleDriver</value></property>  
3     <property name="url"><value>jdbc:oracle:thin:@caij-b815c8aab6:1521:cui</value></property>  
4     <property name="username"><value>cuishen</value></property>  
5     <property name="password"><value>cuishen</value></property>  
6 </bean> 

改成

 1 <bean id="bossDS"  
 2           class="org.apache.commons.dbcp.BasicDataSource"  
 3           destroy-method="close">  
 4         <property name="driverClassName" value="com.mysql.jdbc.Driver"/>  
 5         <property name="url" value="jdbc:mysql://192.168.126.147:3306/boss?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=UTF-8"/>  
 6         <property name="username" value="root"/>  
 7         <property name="password" value="111111"/>  
 8         <!--maxActive: 最大连接数量-->    
 9         <property name="maxActive" value="150"/>  
10         <!--minIdle: 最小空闲连接-->    
11         <property name="minIdle" value="5"/>  
12         <!--maxIdle: 最大空闲连接-->    
13         <property name="maxIdle" value="20"/>  
14         <!--initialSize: 初始化连接-->    
15         <property name="initialSize" value="30"/>  
16         <!-- 连接被泄露时是否打印 -->  
17         <property name="logAbandoned" value="true"/>  
18         <!--removeAbandoned: 是否自动回收超时连接-->    
19         <property name="removeAbandoned"  value="true"/>  
20         <!--removeAbandonedTimeout: 超时时间(以秒数为单位)-->    
21         <property name="removeAbandonedTimeout" value="10"/>  
22         <!--maxWait: 超时等待时间以毫秒为单位 1000等于60秒-->  
23         <property name="maxWait" value="1000"/>  
24         <!-- 在空闲连接回收器线程运行期间休眠的时间值,以毫秒为单位. -->  
25         <property name="timeBetweenEvictionRunsMillis" value="10000"/>  
26         <!--  在每次空闲连接回收器线程(如果有)运行时检查的连接数量 -->  
27         <property name="numTestsPerEvictionRun" value="10"/>  
28         <!-- 1000 * 60 * 30  连接在池中保持空闲而不被空闲连接回收器线程-->  
29         <property name="minEvictableIdleTimeMillis" value="10000"/>  
30     <property name="validationQuery" value="SELECT 1"/>  
31     </bean>  

主要就是

 

1  <property name="validationQuery" value="SELECT 1" />
2     <property name="testOnBorrow" value="true"/>

 

下面这两行代码在起作用

 

假如是连接池的话则需要下面的配置

1    <property name="initialPoolSize" value="10"/>
2     <property name="maxPoolSize" value="${cache.maxPoolSize}"/>
3     <property name="testConnectionOnCheckin" value="false"/>
4     <property name="testConnectionOnCheckout" value="true"/>
5     <property name="preferredTestQuery" value="SELECT 1"/>