[NameNotFoundException] Initialcontext.lookup(MyEjb) failed!
Bonjour,
J'essaye de jouer avec des ejb ( un programme de type HelloWorld ) mais je suis confronté à un problème lors de l'appel du InitialContext.lookup ("JNDI name?!"): cet appel lève une exception de type javax.naming.NameNotFoundException. A première vue je dirai que j'utilise un mauvais JNDI name: si je ne dis pas de bêtise, il faut utiliser le nom indiqué dans le descripteur de déploiement de cet EJB
Voici le code du client appelant l'ejb:
Code:
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 37 38
|
public class HelloWorldClient {
public static void main(String args[]) {
Context initialContext = null;
try {
Properties prop = new Properties();
prop.put(Context.PROVIDER_URL, "rmi://localhost:1099");
prop.put(Context.INITIAL_CONTEXT_FACTORY, "org.objectweb.carol.jndi.spi.MultiOrbInitialContextFactory");
initialContext = new InitialContext(prop);
} catch (Exception e) {
System.err.println("Impossible d'accéder au contexte JNDI : " + e);
System.exit(2);
}
HelloWorldHome home = null;
try {
home = (HelloWorldHome)PortableRemoteObject.narrow(initialContext.lookup
("HelloWord"), HelloWorldHome.class);
} catch (Exception e) {
System.err.println( "Impossible de trouver HelloWorldHome : " + e);
System.exit(2);
}
HelloWorld myHelloWorld = null;
try {
myHelloWorld = home.create();
System.out.println(myHelloWorld.sayHelloWorld());
} catch (Exception e) {
System.err.println("Impossible de créer le bean : " + e);
System.exit(2);
}
}
} |
et voici le descripteur de déploiement de mon ejb
jonas-ejb-jar.xml
Code:
1 2 3 4 5 6
|
<!-- Session Beans -->
<jonas-session>
<ejb-name>HelloWord</ejb-name>
<jndi-name>HelloWord</jndi-name>
</jonas-session> |
ejb-jar.xml
Code:
1 2 3 4 5 6 7 8 9 10 11
|
<!-- Session Beans -->
<session >
<description><![CDATA[]]></description>
<ejb-name>HelloWord</ejb-name>
<home>server.interfaces.HelloWordHome</home>
<remote>server.interfaces.HelloWord</remote>
<ejb-class>server.ejb.HelloWordSession</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
</session> |
Je pense que je suis en train d'utiliser un mauvaise valeur pour le JNDI name pour l'obtention de l'interface Home :cry:
Quelqu'un aurait une idée svp?
merci :ccool: