Salut!
Je travaille avec les EJBs, Oracle et Jboss et j'aimerais récupérer les SQLExceptions affichées par Oracle sur Jboss et les afficher dans un fichier ou une fenêtre de dialogue.
Quelqu'un pourrait m'aider? Merci
Salut!
Je travaille avec les EJBs, Oracle et Jboss et j'aimerais récupérer les SQLExceptions affichées par Oracle sur Jboss et les afficher dans un fichier ou une fenêtre de dialogue.
Quelqu'un pourrait m'aider? Merci
bonjour,
il suffit que tu englobes ton code dans un try catch
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 try{ //ton code qui utilise du sql catch ( SqlException SqlEx ) { System.out.println(SqlEx); }
Pour une fenetre graphique :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 JOptionPane.showMessageDialog(this,monMessage,"Erreur",JOptionPane.ERROR_MESSAGE);
ça marche pas!
Voici l'erreur affichée par Jboss
09:36:04,529 INFO [STDOUT] Suppression
09:36:04,539 ERROR [TB_AUTEURS] Could not remove 51
java.sql.SQLException: ORA-02292: integrity constraint (CISMEF.FK_TB_AUTEU_AF_A_TB_AUTEU) violated - child record found
On voit bien qu'il relève une SQLException.
Voici mon code:
try{
test.supprimer();
}
catch(SQLException e){ //
System.out.println(e);
}
Il aime pas mon catch(SQLException e), il dit : This execption is never thrown from the block try
Tu devrais avoir un try{}catch{} autour du code qui execute la requete : executeQuery()
Remarque : executeQuery() renvoi une SQLException donc tu peux faire un try catch( SQLException e ) autour de cette méthode.
Pour pouvoir faire :
la fonction supprimer doit avoir la signature suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 try{ test.supprimer(); } catch(SQLException e){ // System.out.println(e); }
Je te conseille de mettre au point sur la gestion des exceptions en Java car tu vas très souvent l'utiliser.
Code : Sélectionner tout - Visualiser dans une fenêtre à part public void supprimer() throws SQLException
Merci Seb.
J'explique:
En fait dans ma méthode supprimer() je n'utilise pas de code sql, c'est l'ejb qui s'occupe d'interroger Oracle pour supprimer dans la base de données; Donc ce qu'il me faut c'est de récupérer sur ma console d'exécution les messages d'erreurs (SQLException) affichés par Oracle J'ai vu dans un tuto qu'on peut utiliser les Logger. Quelqu'un sait ce que c'est et comment on les utilise?
Cet EJB qui interroge la base, c'est un entity bean ?
Bonjour,
Ce sujet serait peut-être approprié dans le forum EJB, mais bon, essayons quand même d'y répondre depuis le forum général. Effectivement, si ton EJB est un entity bean CMP, tu n'aurais aucun moyen de récupérer directement l'exception SQLException pour l'afficher sur ta console étant donné que c'est le container qui gère tous les problèmes de persistence et donc d'accès à la base de données. Par contre, dans le cas de l'erreur que tu indiques, je pense qu'il y a une RemoveException qui est renvoyée vers l'application appelante par la méthode "remove()" que tu appelles sur l'EJB, et cette exception encapsule sinon l'erreur de départ qui est liée à la base de données, tu pourrais donc capturer dans ce cas cette RemoveException et l'afficher à l'utilisateur.
En l'occurence là tu as un problème d'intégrité référentielle, tu devrais configurer le "CASCADE DELETE" dans la relation qu'il y a entre tes beans entity (si c'est bien ce que tu utilises) pour permettre des suppressions en cascade qui pourrait résoudre ce problème. Regarde bien du côté des CMR (Container-Managed Relationships )...
En ce qui concerne les logs, je crois que tu as déjà le fichier Log de Jboss qui te permet de savoir ce qui se passe dans ton application, sauf qu'il est commun à toutes les applications déployées. Je te conseillerais de jeter un oeil sur le framework Log4J si tu comptes créer des fichiers de log personnalisés pour tes applications.
Voilà, j'espère que ça aide.
Merci pour le RemoveException sauf qu'il affiche sur Jboss mais pas sur ma console d'eclipse
Voici mon code:
Voici ce que JBOSS affiche:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 try{ EJB.remove(); } catch(RemoveException e){ System.out.println("coucou"); System.out.println("e"); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 15:08:03,124 INFO [STDOUT] coucou 15:08:03,124 INFO [STDOUT] javax.ejb.RemoveException: Could not remove 51: ORA-02292: violation de contrainte (CISMEF.FK_TB_AUTEU_AF_A_TB_AUTEU) d'int��grit�� - enregistrement fils existant
Erreur dans le code que g envoyé:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 try{ EJB.remove(); } catch(RemoveException e){ System.out.println("coucou"); System.out.println(e); }
Si tu fais un System.out dans du code coté serveur tu ne risques pas de récupérer l'erreur sous Eclipse, il faut que tu "lances" l'exception jusqu'à ce qu'elle arrive sous le client.
Sous ton client :
Coté serveur d'application :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 try{ test.supprimer(); } catch(RemoveException e){ // //ici l'exception }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 signature supprimer() throws RemoveException{ try{ EJB.remove(); } catch(RemoveException e){ throw e; } }
Je sais je pose beaucoup de questions mais je dois le faire le plus tot possible.
C'est bien ça la méthode mais il affiche le message sur JBOSS pas sur la console Eclipse. Quelqu'un aurait une autre idée?
Merci
Ben c'est ça que Kikito te propose. Ca ne marche pas ?
Sur le serveur tu envoie (forward quoi) l'exception
Sur le client (qui a appelé la méthode), tu attrapes cette exception pour la traiter ...
ça ne marche pas. Je suis d'accord avec manblaizo, parce que c'est le bean qui s'occupe d'interroger oracle et oracle, lui, il affiche l'erreuer d'exception. Alors pour afficher ce que affiche Oracle sur ma console d'eclipse ...
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager