2010-08-12 164 views
0

在服务器端,我使用休眠与数据库进行通信。但是,如果数据库处于脱机状态,则无法捕获与连接相关的任何异常。更重要的是,在使用gwt的客户端网站上,执行onFailure(Throwable,捕获)函数,但是捕获.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); 
} 

在这两种情况下,如果数据库处于脱机状态也不例外被逮住,所以我不能够将消息发送有关该问题与连接到客户端

在此先感谢

回答

0

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

+0

对不起,但这不是我的意思,请参阅我的更新 – peter 2010-08-12 02:32:44

+0

这个问题与GWT有什么关系? – Glenn 2010-08-12 02:45:44

+0

也许有点原因onFailure(Throwable捕获)被执行,但抓住。printStackTrace();什么都不打印,我改变了主题 – peter 2010-08-12 02:57:32

0

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

+0

“我建议在服务器端捕获db-exceptions,然后抛出你自己的异常。” - 但这是问题,我无法抓住他们。正如您在我的示例中看到的,捕获Throwable不起作用 – peter 2010-08-12 14:16:28