Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.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/64.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 jdbc连接-套接字连接_Java_Mysql_Hibernate_Jdbc - Fatal编程技术网

Java jdbc连接-套接字连接

Java jdbc连接-套接字连接,java,mysql,hibernate,jdbc,Java,Mysql,Hibernate,Jdbc,几天前,我的网站崩溃,并向我显示了以下错误: java.lang.NoClassDefFoundError:无法 不初始化类 com.omicc.hibernate.util.HibernateUtil 所以我问了托管公司他们可能做了什么改变。他们解决了这个问题,并告诉我使用JDBC连接而不是套接字连接。 我在MySQL中使用hibernate和c3p0,据我所知,它们使用JDBC连接 <property name="connection.driver_class">com.mysq

几天前,我的网站崩溃,并向我显示了以下错误:

java.lang.NoClassDefFoundError:无法 不初始化类 com.omicc.hibernate.util.HibernateUtil

所以我问了托管公司他们可能做了什么改变。他们解决了这个问题,并告诉我使用JDBC连接而不是套接字连接。 我在MySQL中使用hibernate和c3p0,据我所知,它们使用JDBC连接

<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
com.mysql.jdbc.Driver
你们知道他在说什么吗D(是的,他现在没有回答!)

已编辑>>>

解决了!,这就是我所做的 我将hibernate从3.5.0升级到3.6.1 新的hibernate需要hibernate-jpa-2.0-api-1.0.0.Final.jar和slf4j-simple1.6.1。 问题解决了。
我认为托管公司更新了他们的hibernate.jar,这导致了一些参考问题。

重写您的HibernateUtil,这样它就不会在静态块中实例化。相反,让它成为一个带有同步getInstance的单例。然后

private static SessionFactory cache;

synchronized SessionFactory getInstance() throws SQLException {

if (cache != null) return cache;

// try/catch and rethrow SQLException
try {
Class.forName("com.mysql.jdbc");
} Exception (e) {
throw new SQLException(e);
}
// Test connection with JDBC
// Create a non connection pooled raw connection, try/finally close it
// throw SQL Exception if it fails
testMe()

// finally create the sessionFactory
.... build your Configuration object
.... then 
try {
SessionFactory me = ....buildSessionFactory
} catch (RuntimeException e) {
throw new SQLException(e);
}
cache = me;
return cache;

}
一些评论:有些人更喜欢未经检查的异常,这很好。 我喜欢只做一次原始连接的原因是,在启动时,如果SQL Server碰巧完成了,它往往会较少地阻塞连接池/休眠。一旦他们成功初始化,我就没有恢复问题。但这是个人喜好,你也可以跳过testMe()


关键是这样,您将看到异常发生,我向您预测它将清楚地暗示与托管公司的连接:)

JDBC使用tcp(它是在tcp之上分层的)。因此,除非您已经实现了jdbc堆栈(请说不),否则他们的警告更有可能是对他们自己错误的掩盖。Hibernate应该一直使用jdbc。我不知道你们的托管公司在说什么。我认为这个包是可疑的,因为这不是Hibernate的包结构。很有可能是与Hibernate类发生了冲突,这已经解决了。嗯,@duffymo:这就是我告诉他们的,我只希望他们告诉我出了什么问题,这样我就可以拒绝进一步的崩溃。谢谢,我是自发地输入的,所以请大家原谅这种不可靠的语法,等:)注意,我确实认识到HibernateUtil实现的不同理念,但我发现这一理念很有用,它肯定会追踪到托管公司的问题。如果按选中状态抛出异常是错误的,请先以未选中状态重新抛出,但要先记录