Question

Je vais avoir des problèmes appelant bean sans état EJB3 extérieur du conteneur.

Code pour obtenir la référence d'objet:

Context envCtx = (Context) context.lookup("ejb");
MyObject o = (MyObject) envCtx.lookup(MyObject);

Les résultats du deuxième rangée en exception:

java.lang.ClassCastException: javax.naming.Reference

J'utilise JBoss.org 5.1.0 GA.

Sur la base des autres postes que je soupçonne que cela pourrait être dû à une mauvaise version des bibliothèques clientes. Cependant, je ne suis pas sûr que pot de bibliothèque (s) je dois inclure dans le pot? (Je reçois l'erreur à l'aide de jnpserver 5.0.4.GA.)

Était-ce utile?

La solution

Pour JBoss, votre code devrait ressembler à quelque chose comme ça:

Properties properties = new Properties();
properties.put("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory");
properties.put("java.naming.factory.url.pkgs","=org.jboss.naming:org.jnp.interfaces");
properties.put("java.naming.provider.url","localhost:1099");

Context context = new InitialContext(properties);
(EchoBeanRemote) c.lookup("EchoBean/remote");

Si vous préférez, vous pouvez mettre les paramètres JNDI environement dans un fichier jndi.properties (qui doit être sur le chemin de classe):

java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
java.naming.provider.url=jnp://localhost:1099

Et utiliser le constructeur InitialContext non arg:

Context context = new InitialContext();
(EchoBeanRemote) c.lookup("EchoBean/remote");

Ceci est évidemment plus facile à transporter.

Et dans les deux cas, vous aurez besoin jbossall-client.jar sur le chemin de classe du côté client.

PS:. Vous pouvez vérifier le Global Nom JNDI votre bean est enregistré à la JNDI Voir de la console JMX sur le Web (si elle existe encore)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top