java连接mysql会出现的问题及解决方法

java代码连接mysql数据库的时候一般在空闭8个小时的时候会自动断开数据库与程序代码的连接,如果在断开连接之后,我们再次去访问时候程序就会报错,出现空指针,这样说可以不是很直白,我举个例子就比较清楚了,我们经常看见我们的项目上线后白天可以正常访问,但是再到明天就不能访问了,那我们解决这个问题方法有两种,下面就来讲一下这两种方法。

解决方法一
就是修改mysql的配置文件,让其空闭的时候更多。
inux下打开/etc/my.cnf,在属性组mysqld下面添加参数如下:
[mysqld]
interactive_timeout=28800000
wait_timeout=28800000
windows下打开my.ini,增加:
interactive_timeout=28800000
wait_timeout=28800000
我们这样就可以把空闭的时间设置到更大
取方法的好处就是一劳永逸,所以的项目都有效果,但是不是连接池连接,效果会差一些,内存有时候会溢出。

解决方法二
我们就是把数据库连接方法改为C3po连接池连接,我们推荐用这种方法去连接数据库,因为它会自动去检测是否断开,如果断开就重新连接,好处比较多,稳定性高。
些方法,需要用到两个jar包,c3p0-oracle-thin-extras-0.9.2.1.jar,c3p0-0.9.2.1.jar大家直接网上下载就可以了。

下面就是hibernate连接c3po的方法
<?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.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.password">密码</property>
<property name="hibernate.connection.url">jdbc:mysql:///url</property>
<property name="hibernate.connection.username">用户名</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
<property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider </property>
<property name="c3p0.min_size">100</property>
<property name="c3p0.max_size">120</property>
<property name="c3p0.timeout">120</property>-->
<property name="c3p0.idle_test_period">3000</property>
</session-factory>
</hibernate-configuration>
用方法要注意一个问题,就是c3po有时候数据库会回滚,所以需要再设置下面关键的信息。
<property name="c3p0.testConnectionOnCheckout">true</property>
取方法好处就是不需要配置服务器,有时候只是购买空间,就办法使用第一种方法,而且这样每个项目都有一个单独连接池,不会让其它项目干扰到这个项目,内容也不容易溢出,所以项目建议使用第二种方法。

深圳网站建设请添加链接描述https://www.sz886.com/请添加链接描述

猜你喜欢

转载自blog.51cto.com/14263944/2375683
今日推荐