JDBC соединение - сокет соединение - PullRequest
0 голосов
/ 29 апреля 2011

Несколько дней назад мой сайт упал и показал мне эту ошибку:

java.lang.NoClassDefFoundError: Может не инициализировать класс com.omicc.hibernate.util.HibernateUtil

Поэтому я спросил хостинговую компанию о любых изменениях, которые они могли внести. Они исправили проблему и сказали мне использовать соединения JDBC вместо сокетов. Я использую hibernate и c3p0 с MySQL, и насколько я знаю, они используют соединения JDBC.

<property name="connection.driver_class">com.mysql.jdbc.Driver</property>

Так кто-нибудь из вас, ребята, знает, о чем он говорит? : D (и да, он не отвечает сейчас!)

EDITED >>>>

Решено !, вот что я сделал я перевел свой hibernate с hibernate с 3.5.0 до 3.6.1 и новый hibernate требуется hibernate-jpa-2.0-api-1.0.0.Final.jar и slf4j-simple1.6.1. и проблема решена. я думаю, что хостинговая компания обновила свой hibernate.jar, и это вызвало некоторые проблемы со ссылками.

1 Ответ

1 голос
/ 30 апреля 2011

Перепишите ваш 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 ().

Дело в том, что вы ВИДЕТЕСЬ, что происходит Исключение, и я предсказываю вам, что это явно подразумевает соединение с хостинговой компанией:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...