我们的项目是spring + struts +mysql ,项目的增删改查用的是springjdbctemplate
现在我们内部测试 现在的问题是 每天早上都会出现数据库连接不上,多试几下就可以连接上了,
就可以正常使用了,在网上查了,说什么是mysql 8个失效什么的。数据连接池也加了。现在不知怎么解决
报以下错误
** BEGIN NESTED EXCEPTION **java.io.EOFExceptionSTACKTRACE:java.io.EOFException
        at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1956)
        at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2368)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2867)
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1616)
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1708)
        at com.mysql.jdbc.Connection.execSQL(Connection.java:3249)
        at com.mysql.jdbc.Connection.execSQL(Connection.java:3178)
        at com.mysql.jdbc.Statement.executeQuery(Statement.java:1203)
        at org.apache.commons.dbcp.DelegatingStatement.executeQuery(DelegatingStatement.java:208)
        at org.springframework.jdbc.core.JdbcTemplate$1QueryStatementCallback.doInStatement(JdbcTemplate.java:443)
        at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:396)
        at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:458)
        at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:466)
        at com.chinatsp.system.dao.impl.LoginDaoImpl.validUser(LoginDaoImpl.java:39)
        at com.chinatsp.system.service.impl.LoginServiceImpl.validUser(LoginServiceImpl.java:65)
        at sun.reflect.GeneratedMethodAccessor112.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:601)
        at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
        at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
        at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
        at $Proxy9.validUser(Unknown Source)
        at com.chinatsp.system.action.LoginAction.login(LoginAction.java:75)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:601)
        at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:453)
        at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:292)
        at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:255)
        at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256)
        at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
        at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)
        at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
        at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)spring的配置文件如下
?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xmlns:aop="http://www.springframework.org/schema/aop" 
        xmlns:tx="http://www.springframework.org/schema/tx" 
        xsi:schemaLocation="http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 
        http://www.springframework.org/schema/aop 
        http://www.springframework.org/schema/aop/spring-aop-2.5.xsd 
        http://www.springframework.org/schema/tx 
        http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">

<bean id="propertyConfigurer"  class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">      
              <property name="location" value="classpath:jdbc.properties"/>      
   </bean>      
  <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"  destroy-method="close">      
    <property name="driverClassName" value="${jdbc.driverClassName}" />      
    <property name="url" value="${jdbc.url}" />      
    <property name="username" value="${jdbc.username}" />      
    <property name="password" value="${jdbc.password}" />
    <property name="maxActive" value="500"/>  
    <property name="maxIdle" value="20"/>  
  <property name="maxWait" value="120000"/>
 
 </bean>  

   <!--        事务模板   
<bean id="transactionTemplate" class="org.springframework.transaction.support.TransactionTemplate">  
         <property name="transactionManager">  
                  <ref local="transactionManager"/>  
   </property> 
   
</bean>
 -->
   <!--  事务模板-->
 <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
   <property name="dataSource" ref="dataSource" />
 </bean>
 
<!-- 配置事务 管理器 -->
<tx:advice id="txAdvice"  transaction-manager="transactionManager">
<tx:attributes>
    <tx:method name="add*" propagation="REQUIRED" />
            <tx:method name="create*" propagation="REQUIRED" />
            <tx:method name="insert*" propagation="REQUIRED" />
            <tx:method name="write*" propagation="REQUIRED" />
            <tx:method name="save*" propagation="REQUIRED" />
            <tx:method name="update*" propagation="REQUIRED" />
            <tx:method name="merge*" propagation="REQUIRED" />
            <tx:method name="del*" propagation="REQUIRED" />
            <tx:method name="remove*" propagation="REQUIRED" />
            <tx:method name="put*" propagation="REQUIRED" />
            <tx:method name="use*" propagation="REQUIRED"/>
            <tx:method name="AddOrUpdate*" propagation="REQUIRED"/>
   <!--  <tx:method name="*" read-only="true"/>   -->
</tx:attributes>
</tx:advice>

   <!-- 配置哪些类的哪些方法使用事务 --> 
<aop:config>                                          
<aop:pointcut id="allServiceMethod" expression="execution(* com.chinatsp..service.*.*(..))"/>
 <aop:advisor advice-ref="txAdvice"  pointcut-ref="allServiceMethod"/>
        
    </aop:config>
</beans>
java数据库连接

解决方案 »

  1.   

    在补充一下#jdbc.url= *********数据库?useUnicode=truezeroDateTimeBehavior=convertToNull&characterEncoding=utf-8
      

  2.   

    EOFException表示输入过程中意外地到达文件尾或流尾的信号,导致异常。异常是tomcat本身的问题,将tomcat6/work/Catalina/localhost/yourProjectName/SESSIONS.ser删除试试,你确定是你数据库没连上?看看日志,
      

  3.   

    ** BEGIN NESTED EXCEPTION **
     
    java.io.EOFException
     
    STACKTRACE:
     
    java.io.EOFException
            at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1956)
            at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2368)
            at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2867)
            at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1616)
            at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1708)
            at com.mysql.jdbc.Connection.execSQL(Connection.java:3249)
            at com.mysql.jdbc.Connection.execSQL(Connection.java:3178)
            at com.mysql.jdbc.Statement.executeQuery(Statement.java:1203)
            at org.apache.commons.dbcp.DelegatingStatement.executeQuery(DelegatingStatement.java:208)
            at org.springframework.jdbc.core.JdbcTemplate$1QueryStatementCallback.doInStatement(JdbcTemplate.java:443)
            at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:396)
            at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:458)
            at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:466)
            at com.chinatsp.system.dao.impl.LoginDaoImpl.validUser(LoginDaoImpl.java:39)
            at com.chinatsp.system.service.impl.LoginServiceImpl.validUser(LoginServiceImpl.java:65)
            at sun.reflect.GeneratedMethodAccessor112.invoke(Unknown Source)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
            at java.lang.reflect.Method.invoke(Method.java:601)
            at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
            at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
            at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
            at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
            at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
            at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
            at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
            at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
            at $Proxy9.validUser(Unknown Source)
            at com.chinatsp.system.action.LoginAction.login(LoginAction.java:75)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
            at java.lang.reflect.Method.invoke(Method.java:601)
            at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:453)
            at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:292)
            at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:255)
            at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256)
            at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
            at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)
            at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
            at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
    日志就是这个,就是每天登陆登陆系统时,就出现的这样的错误信息,登陆不上,然后多使几次,就可以登陆上去了,不会报错了
      

  4.   


    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"  destroy-method="close">      
        <property name="driverClassName" value="${jdbc.driverClassName}" />      
        <property name="url" value="${jdbc.url}" />      
        <property name="username" value="${jdbc.username}" />      
        <property name="password" value="${jdbc.password}" />
        <property name="maxActive" value="500"/>  
        <property name="maxIdle" value="20"/>         
         <property name="maxWait" value="120000"/>
     </bean>  
    spring这个配置再加一个设置:
    <property name="validationQuery" value="select user.id from user"></property>
      

  5.   


    后面的sql语句你按照你自己数据库中的表随便写一条有效的就行了,越简单越好
      

  6.   

    连接池堵塞造成的,在DataSource中增加两个属性,timeBetweenEvictionRunsMillis 和minEvictableIdleTimeMillis