Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用dbcp 2连接超时_Java_Mysql_Spring_Hibernate_Struts - Fatal编程技术网

Java 使用dbcp 2连接超时

Java 使用dbcp 2连接超时,java,mysql,spring,hibernate,struts,Java,Mysql,Spring,Hibernate,Struts,我在项目中使用struts 1.2、hibernate 3、spring 2和tomcat作为服务器。我已经使用dbcp 2(jdk版本1.7.0_03)实现了连接池。我使用MySql作为数据库。尽管实现了dbcp2,但连接每天都会超时。我得到以下例外情况 org.hibernate.transaction.JDBCTransaction - ERROR - JDBC begin failed com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientCo

我在项目中使用struts 1.2、hibernate 3、spring 2和tomcat作为服务器。我已经使用dbcp 2(jdk版本1.7.0_03)实现了连接池。我使用MySql作为数据库。尽管实现了dbcp2,但连接每天都会超时。我得到以下例外情况

org.hibernate.transaction.JDBCTransaction - ERROR - JDBC begin failed
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Connection.close() has already been called. Invalid operation in this state.
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
    at com.mysql.jdbc.Util.getInstance(Util.java:381)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:985)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:957)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927)
    at com.mysql.jdbc.ConnectionImpl.getMutex(ConnectionImpl.java:3015)
    at com.mysql.jdbc.ConnectionImpl.setAutoCommit(ConnectionImpl.java:4789)
    at org.apache.commons.dbcp.DelegatingConnection.setAutoCommit(DelegatingConnection.java:237)
    at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:63)
    at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1326)
    at org.springframework.orm.hibernate3.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:496)
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:322)
    at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:255)
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:102)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:176)
    at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:615)
    at com.tcg.service.user.UserService$$EnhancerByCGLIB$$dc6eec0f.getUserDetails(<generated>)
    at com.tcg.delegate.user.UserDelegate.getUserDetails(UserDelegate.java:127)
    at com.tcg.common.CommonUtil.InactiveUser(CommonUtil.java:209)
    at com.tcg.util.AutomatedProcess.run(AutomatedProcess.java:54)
    at java.lang.Thread.run(Thread.java:722)
org.hibernate.transaction.JDBCTransaction-错误-JDBC开始失败
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:Connection.close()已被调用。此状态下的操作无效。
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
位于java.lang.reflect.Constructor.newInstance(Constructor.java:525)
位于com.mysql.jdbc.Util.HandleneInstance(Util.java:406)
位于com.mysql.jdbc.Util.getInstance(Util.java:381)
位于com.mysql.jdbc.SQLError.createSQLException(SQLError.java:985)
位于com.mysql.jdbc.SQLError.createSQLException(SQLError.java:957)
位于com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927)
位于com.mysql.jdbc.ConnectionImpl.getMutex(ConnectionImpl.java:3015)
位于com.mysql.jdbc.ConnectionImpl.setAutoCommit(ConnectionImpl.java:4789)
位于org.apache.commons.dbcp.DelegatingConnection.setAutoCommit(DelegatingConnection.java:237)
位于org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:63)
位于org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1326)
位于org.springframework.orm.hibernate3.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:496)
位于org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:322)
在org.springframework.transaction.interceptor.TransactionSpectSupport.CreateTransactionIfEssential(TransactionSpectSupport.java:255)上
位于org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:102)
在org.springframework.aop.framework.ReflectiveMethodInvocation.procedue(ReflectiveMethodInvocation.java:176)上
位于org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:615)
在com.tcg.service.user.UserService$$enhancerbyglib$$dc6eec0f.getUserDetails()上
在com.tcg.delegate.user.UserDelegate.getUserDetails(UserDelegate.java:127)上
位于com.tcg.common.CommonUtil.InactiveUser(CommonUtil.java:209)
位于com.tcg.util.AutomatedProcess.run(AutomatedProcess.java:54)
运行(Thread.java:722)
我在谷歌上搜索解决方案,但建议的解决方案无法解决我的问题

这是我的hibernate配置文件:

<hibernate-configuration>

    <session-factory name="hibernate.session-factory.SRS">
        <property name="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>

        <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>

        <property name="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</property>
        <property name="hibernate.default_schema">ITSDEV</property>
        <property name="show_sql">false</property>
        <property name="hibernate.jdbc.batch_size">10</property>
        <property name="hibernate.cache.use_second_level_cache">false</property>
        <property name="hibernate.cache.use_query_cache">false</property>

    </session-factory>
</hibernate-configuration>

org.hibernate.transaction.jdbc事务工厂
org.hibernate.dialogue.mysql5dialogue
org.hibernate.cache.HashtableCacheProvider
ITSDEV
错误的
10
错误的
错误的
这是我的应用程序上下文文件:

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
    <!-- My SQL database Connection -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
      <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
      <property name="url" value="jdbc:mysql://172.20.25.185:3306/itsdev"/> 
      <property name="username" value="itsdev"/>
      <property name="password" value="itsdev"/>      
    </bean> 
</beans>

下面是我在应用程序中使用的示例DAO类:

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import com.tcg.common.CommonUtil;
import com.tcg.dto.ItsUserMaster;

public class CopyOfLoginCheckDAO extends HibernateDaoSupport{
   @SuppressWarnings({ "unchecked"})
    public boolean CheckCredentials(String loginId, String password, Map map)  {
        boolean retVal = false;
        List<ItsUserMaster> userData = new ArrayList<ItsUserMaster>();
        try{

        HibernateTemplate template = getHibernateTemplate(); 
        userData=template.find("from ItsUserMaster itsUserMaster where itsUserMaster.loginId='"+loginId+"' and itsUserMaster.loginCred='Y' and itsUserMaster.deleteFlag!='Y' and itsUserMaster.active!='I' and itsUserMaster.itsCorporateMaster.active!='I' and itsUserMaster.itsCorporateMaster.deleteFlag!='Y' and itsUserMaster.itsUserTypeMaster.deleteFlag!='Y' and itsUserMaster.itsUserTypeMaster.active!='I' and itsUserMaster.itsDepartmentMaster.active!='I' and itsUserMaster.itsDepartmentMaster.deleteFlag!='Y'");

        if(userData.size()>0){

            ItsUserMaster itsUserMaster = (ItsUserMaster)userData.get(0);
            String pwd = CommonUtil.decode(itsUserMaster.getPassword().toString());
            String loginCred=itsUserMaster.getLoginCred().toString();
            if(loginCred.equalsIgnoreCase("Y")){
                retVal = true;
            }

        }
        } catch (Exception sqlexcep) {          
            sqlexcep.printStackTrace();
            retVal = false;
            System.out.println("Exception occured while getting Connection to the database");
        } 
        return retVal;
    }

}
import java.util.ArrayList;
导入java.util.List;
导入java.util.Map;
导入org.springframework.orm.hibernate3.HibernateTemplate;
导入org.springframework.orm.hibernate3.support.HibernateDaoSupport;
导入com.tcg.common.CommonUtil;
导入com.tcg.dto.ItsUserMaster;
公共类CopyOfLoginCheckDAO扩展了HibernateDaoSupport{
@SuppressWarnings({“unchecked”})
公共布尔检查凭据(字符串loginId、字符串密码、映射){
布尔retVal=false;
List userData=new ArrayList();
试一试{
HibernateTemplate=getHibernateTemplate();
userData=template.find(“从ITSUERMaster到ITSUERMaster,其中ITSUERMaster.loginId=”+loginId+"'和itsUserMaster.loginCred='Y'和itsUserMaster.deleteFlag!='Y'和itsUserMaster.active!='I'和itsUserMaster.itsCorporateMaster.active!='I'和itsUserMaster.itsCorporateMaster.deleteFlag!='Y'和itsUserMaster.itsUserTypeMaster.active!='I'和itsUserMaster.itsDepartmentMaster.active!='I'以及它的usermaster.itsDepartmentMaster.deleteFlag!=“Y”);
如果(userData.size()>0){
ItsUserMaster ItsUserMaster=(ItsUserMaster)userData.get(0);
String pwd=CommonUtil.decode(itsUserMaster.getPassword().toString());
字符串loginCred=itsUserMaster.getLoginCred().toString();
if(登录等信号案例(“Y”)){
retVal=true;
}
}
}捕获(异常SQLEXEP){
sqlexep.printStackTrace();
retVal=false;
System.out.println(“连接到数据库时发生异常”);
} 
返回返回;
}
}

如果您需要更多信息,请告诉我。我感谢您的帮助。谢谢。

您能提供您的DAO类吗?您是否在所有DAO方法或任何特定方法中都遇到了问题?我在所有DAO类中都遇到了问题,例如,我甚至无法登录到我的应用程序。我已经在问题中添加了DAO类。您的hibernate和spring相对于jdbc驱动程序来说太旧。请返回JDBC3,或者从应用程序中删除hibernate和spring,然后使用本机JDBC4。