休眠和异常的问题

时间:2010-08-12 01:47:46

标签: hibernate gwt

在服务器端,我使用hibernate与数据库进行通信。但是,如果数据库处于脱机状态,则无法捕获与该连接相关的任何异常。更重要的是,在使用gwt的客户端站点上,执行了onFailure(Throwable caught)函数,但是catch.printStackTrace();没有打印。我希望gwt通知用户数据库当前不可用,但正如您所读,我无法捕获任何可以帮助我做到这一点的异常。有什么想法吗?

更新

e.g。

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 :(得分:0)

您可以捕获异常服务器端,然后将其作为成功请求传递给DTO中的回调。向DTO添加“isError”标志,并在客户端的onSuccess()方法中检查标志并相应地处理。实际上,您可以使用下载的Exception从Success()上调用onFailure()。您可能必须使Exception可序列化。

答案 1 :(得分:0)

您必须为ServiceAsync接口添加“throws Exception”,并确保异常可以序列化。我建议在服务器端捕获db-exceptions,然后抛出自己的异常。