Bonjour,
J'ai suivi le tutorial "Création d'un premier EJB avec Eclipse et JOnAS", très bien fait soit dis en passant.
J'arrive sans problème à utiliser mon bean HelloWorld avec un client applicatif et un client applet en les exécutant directement d'Eclipse.
Cependant, je ne sais pas comment faire pour les exporter pour qu'il soit exécutable sans Ecplise.
J'ai fait exporter en Jar avec Eclipse, j'ai ajouté les classes manquantes de l'ejb-2_1-api.jar de Jonas directement dans le Jar crée par Eclipse.
Les programmes s'exécutent correctement mais dès que j'essaye de me connecter au bean, j'ai la même erreur qui ressort :
Voici le code de mon bouton qui appelle le bean :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Impossible de trouver HelloWorldHome javax.naming.CommunicationException [Root exception is java.rmi.UnmarshalExcepti on: error unmarshalling return; nested exception is: java.io.StreamCorruptedException] at com.sun.jndi.rmi.registry.RegistryContext.lookup(Unknown Source) at com.sun.jndi.rmi.registry.RegistryContext.lookup(Unknown Source) at javax.naming.InitialContext.lookup(Unknown Source) at helloWorld.HelloWorldClient$AL1.actionPerformed(HelloWorldClient.java
Ce qui est ennuyeux, ce que les 2 clients (applet ou application) marchent sans problème sous Eclipse.
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
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 class AL1 implements ActionListener { public void actionPerformed(ActionEvent e) { // Get InitialContext try { ctx = getInitialContext(); } catch (NamingException ex) { System.out.println("Impossible de trouver le JNDI"); ex.printStackTrace(); System.exit(2); } // Lookup bean home String bName = "HelloWorldHome"; try { home = (HelloWorldHome) PortableRemoteObject.narrow(ctx.lookup(bName), HelloWorldHome.class); HelloWorld bean = home.create(); message.setText(bean.hello()); } catch(Exception ex) { System.out.println("Impossible de trouver HelloWorldHome"); ex.printStackTrace(); System.exit(2); } } } static private Context getInitialContext()throws NamingException { String url = "rmi://localhost:1099"; // Get an InitialContext Properties h = new Properties(); h.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.rmi.registry.RegistryContextFactory"); h.put(Context.PROVIDER_URL, url); return new InitialContext(h); }
Merci d'avance.
Partager