再就是如果数据库断了后,TOMCAT没办法自动重新连接数据库我应该怎么解决?谢谢大家<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory> 
<property name="hibernate.connection.url">jdbc:mysql://20.20.20.6:3306/tcs?useUnicode=true&amp;characterEncoding=UTF-8</property>  
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> 
<property name="hibernate.connection.username">root</property> 
<property name="hibernate.connection.password">123123</property>
<property name="hibernate.show_sql">false</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
<!-- Mapping files -->
<mapping resource="com/tcs/bean/entitybean/TestRecord.hbm.xml" />
<mapping resource="com/tcs/bean/entitybean/StaticAnalyse.hbm.xml" />
</session-factory>
</hibernate-configuration>

解决方案 »

  1.   

    报什么错误?
    数据库断了,tomcat当然没办法自动重新连接,你要重新启动tomcat才能解决.
      

  2.   

    因我不在现场,所以看不到现象;但根据用户描述 : 白天访问没有任何问题,但第二天上班来后发现无法登录了,查看服务器后发现TOMCAT报了一大堆错误信息;所以用户每天上班的第一件事就是重启TOMCAT;现在需要解决;
      

  3.   

    我想晚上没有人访问,是不是TOMCAT+HIBERNATE 在设置上有个过期的问题;如果你多长时间不访问就会自动断开数据库;大家发表发表意见;帮个忙谢谢!
      

  4.   

    使用Hibernate+proxool解决问题,这是我浏览网页时发现的,我没用过,不知道是否可以。我已经将它里面的一些数据库连接,用户名和密码改成楼主的了,楼主可以试试。由于数据库connection在较长时间没有访问下会自动断开连接,导致浏览出错,增加proxool作为数据库pool。它有自动连接功能。
    1、从http://proxool.sourceforge.Net/下载proxool,释放proxool.jar到WEB-INF/lib2、在hibernate.cfg.Xml中增加:
    <property name="hibernate.proxool.pool_alias">dbpool</property>
    <property name="hibernate.proxool.xml">proxool.xml</property>
    <property name="connection.provider_class">org.hibernate.connection.ProxoolConnectionProvider</property>3、在与hibernate.cfg.xml同级目录(src根目录下)增加proxool.Xml文件:
    <?Xml version="1.0" encoding="utf-8"?>
    <!-- the proxool configuration can be embedded within your own application's.
        Anything outside the "proxool" tag is ignored. -->
    <something-else-entirely>
        <proxool>
            <alias>dbpool</alias>
            <!--proxool只能管理由自己产生的连接-->
            <driver-url>
              jdbc:mysql://20.20.20.6:3306/tcs?useUnicode=true&amp;characterEncoding=UTF-8
            </driver-url>
            <driver-class>com.mysql.jdbc.Driver</driver-class>
            <driver-properties>
                <property name="user" value="root" />
                <property name="password" value="123123" />
            </driver-properties>
            <!-- proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回收,超时的销毁-->
            <house-keeping-sleep-time>90000</house-keeping-sleep-time>
            <!-- 最少保持的空闲连接数-->
            <prototype-count>5</prototype-count>
            <!-- 允许最大连接数,超过了这个连接,再有请求时,就排在队列中等候,最大的等待请求数由maximum-new-connections决定-->
            <maximum-connection-count>100</maximum-connection-count>
            <!-- 最小连接数-->
            <minimum-connection-count>10</minimum-connection-count>
        </proxool>
    </something-else-entirely>4、重起tomcat  
      

  5.   

    proxool是否有重新连接的功能?如数据库由于网络原因断了,能否重新连接.
    最近遇到的问题是客户数据库做集群.导致数据库切换的时候老是把连接断了,重起后过段时间又断了.
      

  6.   

    在网上查了很多,好象就是您说的用Hibernate+proxool去解决但我配置了之后访问系统后报如下错误:SessionFactory Load Error: Proxool Provider unable to load JAXP configurat or file:proxool.xml大家再帮我看看;谢谢这是调用类:
    public class HibernateFactory {
    private static final SessionFactory sessionFactory;
    static {
    try {
    // Create the SessionFactory
    sessionFactory = new Configuration().configure().buildSessionFactory();
    } catch (Throwable ex) {
    String s_ex = ex.getMessage();
    System.out.print("[----->");
    System.out.print("SessionFactory Load error:" + ex.getMessage());
    System.out.print("<-----]");
    throw new ExceptionInInitializerError(ex);
    }
    } public static final ThreadLocal session = new ThreadLocal(); public static Session currentSession() {
    Session s = (Session) session.get();
    // Open a new Session, if this Thread has none yet
    if (s == null) {
    s = sessionFactory.openSession();
    session.set(s);
    }
    return s;
    } public static void closeSession() {
    Session s = (Session) session.get();
    if (s != null)
    s.close();
    session.set(null);
    }
    }
      

  7.   

    closeSession()有没有调用过?要是调用过,那么就会出现连不上数据库的问题
      

  8.   

    closeSession()是在访问后调用,但是现在连数据库都连接不上
      

  9.   

    我把所有用到的代码都贴出来了,请大家帮我看看什么原因:新贴地址如下:
    http://community.csdn.net/Expert/topic/5440/5440625.xml?temp=.2441675解决了立刻两个贴都结贴;
    谢谢大家帮忙
      

  10.   

    只要调用了closeSession(),整个系统就会出现 连接数据库失败.
    建议最好不要去调用这个 closeSession().
      

  11.   

    不是closeSession()的原因,我把代码都注释了,但还是一个效果
      

  12.   

    我这里包了一个Factory,你拿去试试.
    http://218.246.23.46/UpBase/downloads/HibernateFactory.jar
      

  13.   

    接口都一样吗?怎么用?好象是版本的问题
    我现在的版本是:
    proxool-0.8.3.jar
    hibernate3.jar
    jdbc2_0-stdext.jar
    mysql-connector-java-5.0.0-beta-bin.jar我那个版本不适合?
      

  14.   

    我的这个就是完全针对Hibernate3的,跟其他应该没有冲突.
    用法:
    import com.liu.base.StaticHbmQuery;
    import com.liu.base.StaticHbmSession;
    import org.hibernate.Session;StaticHbmQuery shq = new StaticHbmQuery();
    //StaticHbmQuery shq = new StaticHbmQuery("hibernate.cfg.xml"); //默认在程序根目录下
    java.util.ArrayList arr  = shq.HbmQuery("from table t"); //hibernate或sql查询语句
    shq.HbmClear();
    也可以
    Session session = StaticHbmSession.currentSession();
    //Session session = StaticHbmSession.currentChangeSession("hibernate.cfg.xml");
      

  15.   

    AreamArgentateOfWing(梦幻银翼) 谢谢您的帮助;
    我使用了你给我发过来的包,但报的错和原来差不多:
    FATAL connection.ProxoolConnectionProvider - Proxool Provider unable to load JAXP configurator file: proxool.xml好象是版本的问题
    我现在的版本是:
    proxool-0.8.3.jar
    hibernate3.jar
    jdbc2_0-stdext.jar
    mysql-connector-java-5.0.0-beta-bin.jar
      

  16.   

    proxool.xml 你现在用的这个连接池有问题。换其他的吧.
    比如说 C3p0-0.8.5.2.jar 这个也是一个连接池.
      

  17.   

    hibernate.proxool.existing_pool true
    hibernate.proxool.xml proxool.xml
    hibernate.proxool.properties proxool.properties在hibernate.properties中,你是不是把这写文件放开了?
    要是放开了就注释掉.
      

  18.   

    详细代码请在如下网址中可见http://community.csdn.net/Expert/topic/5440/5440625.xml?temp=.3517115实在不行的话就用C3p0吧
      

  19.   

    AreamArgentateOfWing(梦幻银翼) 你说把什么文件放开了?我不太明白;呵呵;配置文件和类文件我都贴到http://community.csdn.net/Expert/topic/5440/5440625.xml?temp=.3517115里了
      

  20.   

    使用c3p0连接池,不需做任何其他额外操作。配置如下:
        <property name="c3p0.acquire_increment">1</property>
        <property name="c3p0.idle_test_period">100</property>
        <property name="c3p0.max_size">100</property>
        <property name="c3p0.max_statements">0</property>
        <property name="c3p0.min_size">10</property>
        <property name="c3p0.timeout">100</property>
      

  21.   

    是不是MySQL服务器超时了并且关闭了连接。
    可以在 my.ini 文件中启动项中添加  wait_timeout = 0 
      

  22.   

    连接地址(URL)后面加autoconnect=true.
    具体网上查一下
      

  23.   

    错误好像是加载不了proxool.xml,是找不到文件,还是文件有问题?
      

  24.   

    使用Hibernate+proxool解决问题,这是我浏览网页时发现的,我没用过,不知道是否可以。我已经将它里面的一些数据库连接,用户名和密码改成楼主的了,楼主可以试试。由于数据库connection在较长时间没有访问下会自动断开连接,导致浏览出错,增加proxool作为数据库pool。它有自动连接功能。
    1、从http://proxool.sourceforge.Net/下载proxool,释放proxool.jar到WEB-INF/lib2、在hibernate.cfg.Xml中增加:
    <property name="hibernate.proxool.pool_alias">dbpool</property>
    <property name="hibernate.proxool.xml">proxool.xml</property>
    <property name="connection.provider_class">org.hibernate.connection.ProxoolConnectionProvider</property>3、在与hibernate.cfg.xml同级目录(src根目录下)增加proxool.xml文件:
    <?Xml version="1.0" encoding="utf-8"?>
    <!-- the proxool configuration can be embedded within your own application's.
        Anything outside the "proxool" tag is ignored. -->
    <something-else-entirely>
        <proxool>
            <alias>dbpool</alias>
            <!--proxool只能管理由自己产生的连接-->
            <driver-url>
              jdbc:mysql://20.20.20.6:3306/tcs?useUnicode=true&amp;characterEncoding=UTF-8
            </driver-url>
            <driver-class>com.mysql.jdbc.Driver</driver-class>
            <driver-properties>
                <property name="user" value="root" />
                <property name="password" value="123123" />
            </driver-properties>
            <!-- proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回收,超时的销毁-->
            <house-keeping-sleep-time>90000</house-keeping-sleep-time>
            <!-- 最少保持的空闲连接数-->
            <prototype-count>5</prototype-count>
            <!-- 允许最大连接数,超过了这个连接,再有请求时,就排在队列中等候,最大的等待请求数由maximum-new-connections决定-->
            <maximum-connection-count>100</maximum-connection-count>
            <!-- 最小连接数-->
            <minimum-connection-count>10</minimum-connection-count>
        </proxool>
    </something-else-entirely>4、重起tomcat  这个方法我试了可以!!!
      

  25.   

    我也被这个问题困扰了很久,用这个c3p0-0.8.5.2.jar
     <property name="c3p0.acquire_increment">1</property>
        <property name="c3p0.idle_test_period">100</property>
        <property name="c3p0.max_size">100</property>
        <property name="c3p0.max_statements">0</property>
        <property name="c3p0.min_size">10</property>
        <property name="c3p0.timeout">100</property>
    另外,<Context path="..." docBase="..." debug="5" reloadable="false" crossContext="true"/> 
    reloadable="false"要注意,reload后,有的连接池会出现连接问题!