Фон: Hibernate подключается к базе данных, используя имя пользователя и пароль, введенные в графический интерфейс. При сбое вместо распространения ошибки в качестве исключения она выводится как трассировка стека в регистраторе. Я не знаю, где это исключение. Кроме того, чуть-чуть утруждая является следующий блок:Исключение Caught Too Early
if (reason != null) {
println("getConnection failed: " + reason);
throw reason;
}
Моя точка останова устанавливается на броска (и успешно запускает), но Println заявление никогда не генерирует вывод (MySQL использует какой-то настройки регистратора я могу» t найти файл открытого файла). Какой-то трюк для определения места исключения?
EDIT 1:
Я называю
sessionFactory = /*AnnotationConfiguration*/ ac.buildSessionFactory();
Исключение перехватывается Hibernate где-то между java.sql.DriverManager
класса и моего HibernateUtil
класса. Я полагаю, мы можем обвинить Hibernate, решив, что я действительно не хочу видеть исключение. Я хочу убедить спящий режим, чтобы я мог видеть исключение.
EDIT 2:
Мой стек это:
java.sql.SQLException: Access denied for user 'user'@'machine' (using password: YES)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3491)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3423)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:910)
at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:3923)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1273)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2031)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:718)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:46)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:302)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:282)
/* Exception is thrown on the next line (1st code block in original post). */
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:154)
/* Begin hidden source calls */
at org.hibernate.connection.DriverManagerConnectionProvider.getConnection(DriverManagerConnectionProvider.java:110)
at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:84)
at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2009)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1292)
at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:859)
/* End hidden source calls */
at com.****.****.util.HibernateUtil.initialize(HibernateUtil.java:34)
Я не могу получить отладчик смотреть в любой точке над штабелем за DriverManager.java:582. Все в стеке, кроме этого, не отображается в отладчике.
Где вы смотрите на выход? –
«Я не знаю, где это исключение поймано» - ну, а где вы звоните в Hibernate? –
@matt b: см. Обновленное редактирование в течение следующих нескольких минут @Alberto Zaccagni: консоль NetBeans (в любое другое время я использовал оператор печати, он идет туда). –