Перепишите ваш 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 ().
Дело в том, что вы ВИДЕТЕСЬ, что происходит Исключение, и я предсказываю вам, что это явно подразумевает соединение с хостинговой компанией:)