Проблема с гибернацией и исключениями - PullRequest
0 голосов
/ 12 августа 2010

На стороне сервера я использую hibernate для связи с базой данных.Однако, если база данных находится в автономном режиме, я не могу поймать исключение, связанное с подключением.Более того, на сайте клиента, где используется gwt, выполняется функция onFailure (Throwable catch), но catch.printStackTrace ();ничего не печатает.Я хочу, чтобы gwt информировал пользователя о том, что база данных в настоящее время недоступна, но, как вы можете прочитать, я не могу поймать ни одно исключение, которое может помочь мне сделать это.Есть идеи?

обновление:

например

public class HibernateUtil
{
    private static final SessionFactory sessionFactory;

    static {
        try {
            sessionFactory = new Configuration().configure().buildSessionFactory();
        } catch (Throwable ex) {
            System.err.println("Initial SessionFactory creation failed." + ex);
            throw new ExceptionInInitializerError(ex);
        }
    }

    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }
}

...

Session session = null;
try
{
   session = HibernateUtil.getSessionFactory().openSession();
} catch (Throwable ex) {
   System.err.println("Initial SessionFactory creation failed." + ex);
}

В обоих случаях исключение не отслеживается, если база данныхофлайн, поэтому я не могу отправить сообщение о проблеме с подключением к клиенту

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 12 августа 2010

Вы должны добавить «throws Exception» для ваших ServiceAsync -интерфейсов и быть уверены, что исключения могут быть сериализуемыми.Я рекомендую перехватить db-исключения на стороне сервера, а затем выбросить ваши собственные исключения.

0 голосов
/ 12 августа 2010

Вы можете перехватить исключительную ситуацию на стороне сервера, а затем передать ее обратному вызову в вашем DTO в качестве успешного запроса. Добавьте флаг «isError» в DTO, и в методе onSuccess () на клиенте проверьте флаг и обработайте соответственно. Фактически, вы можете вызывать onFailure () из Success () с загруженным исключением. Возможно, вам придется сделать сериализацию исключений.

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