Bonjour,
Mon problème :
Je fonctionne avec glassfish où j'ai tous mes EJBs, et Swing comme interface cliente. Pour l'instant le code client est simple, c'est deux JTextfield et un JButton, où on demande des logins. J'ai un ActionListener attaché à mon boutton, qui fait un lookup sur mon EJB stateful dans le constructeur. Dans le actionPerformed(..) j'appelle une méthode connect(String,String) de mon EJB session, qui peut lever une exception du type PSCDBadLoginException ( une RuntimeException à moi ).
Le problème, si je tape les bons logins ça fonctionne parfaitement, par contre si je tape de mauvais logins, mon client n'attrape jamais de BadLoginException ( pourquoi ? ). Sur la trace, j'ai un EJBException. Puis à la tentative suivante, même en tappant les bons logins, j'ai un NoSuchEJBException, comme si j'avais perdu la référence sur mon EJB.
Un peu de code :
La methode de l'EJB :
L'actionPerformed :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 public void connect(String login, String password) { User u = this.dur.getUserByLogin(login); //dur est un dao. if(u == null) throw new PSCDBadLoginException("login incorrect", 0x0004); if(u.getPass().equals(password)) this.usr = u; else throw new PSCDBadLoginException("mot de passe incorrect", 0x0005); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 try{ this.lmr.connect(this.jtfLog.getText(), this.jtfPass.getText()); for(int i=0; i<this.jmb.getMenuCount(); i++){ JMenu jm = this.jmb.getMenu(i); jm.setEnabled(true); } this.jmb.getMenu(0).getItem(0).setEnabled(false); this.jmb.getMenu(0).getItem(1).setEnabled(true); //MainFrame.getConnectionDialog().setVisible(false); }catch(PSCDBadLoginException exc){ //Jamais attrapé exc.printStackTrace(); }catch(EJBException exc){ exc.printStackTrace(); }
Partager