2010-08-12 4 views
0

Du côté serveur, j'utilise Hibernate pour communiquer avec la base de données. Cependant, si la base de données est hors ligne, je ne peux attraper aucune exception liée à la connexion. De plus, sur le site du client où gwt est utilisé, la fonction onFailure (Throwable caught) est exécutée, mais caught.printStackTrace(); n'imprime rien. Je veux que gwt informe un utilisateur que la base de données est actuellement indisponible, mais comme vous pouvez le lire, je ne peux attraper aucune exception qui puisse m'aider à le faire. Des idées?Problème avec Hibernate et exceptions

mise à jour:

par exemple.

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); 
} 

Dans les deux cas, aucune exception attrapées si la base de données est hors ligne, donc je ne suis pas en mesure d'envoyer un message sur le problème de connexion au client

Merci d'avance

Répondre

0

Vous pouvez capturer le côté serveur Exception, puis le transmettre au rappel dans votre DTO en tant que demande réussie. Ajoutez un indicateur "isError" au DTO et, dans la méthode onSuccess() du client, vérifiez l'indicateur et traitez-le en conséquence. En fait, vous pouvez appeler onFailure() à partir de sur Success() avec l'exception téléchargée. Vous devrez peut-être rendre l'exception sérialisable.

+0

Je suis désolé mais ce n'est pas ce que je veux dire, voir ma mise à jour – peter

+0

Est-ce que cette question a quelque chose à voir avec GWT? – Glenn

+0

peut-être un petit peu cause onFailure (Throwable catch) est exécuté mais catch.printStackTrace(); J'imprime rien, j'ai changé le sujet – peter

0

Vous devez ajouter "throws Exception" pour vos interfaces ServiceAsync et vous assurer que les exceptions peuvent être sérialisables. Je recommande d'attraper les db-exceptions sur le serveur, puis de lancer vos propres exceptions.

+0

"Je recommande d'attraper les db-exceptions sur le côté serveur, puis de jeter vos propres exceptions." - Mais voici le problème, je ne peux pas les attraper. Comme vous pouvez le voir dans mon exemple, attraper Throwable ne fonctionne pas – peter

Questions connexes