2009-03-24 14 views
1

I ont créé et EJB avec une interface distante:donnant un EJB un JNDI

@Stateless 
public class TestSessionBean implements TestSessionRemote 
{ 

    public void businessMethod() 
    { 
      System.out.println ("***businessMethod"); 
    } 
} 

I y accéder à partir d'un autre composant (par exemple un servlet) en cours d'exécution sur le serveur via:

ic = new InitialContext(); 
ic.lookup("myEJB"); 

J'utilise netBeans 6.5.1 et glassfish v2.

Comment puis-je faire cela?

Merci, Ido

Répondre

2

d'utilisation en fait ejb3 une convention de nommage par défaut, wich je ne l'ai pas trouvé un moyen de se déplacer.

Le nom de votre haricot serait quelque chose comme: TestSessionBean # package.TestSessionBean

Pour acess votre service à distance que vous pouvez faire quelque chose comme ça

InitialContext ctx = new InitialContext(); 
ctx.lookup(interfaceClass.getSimpleName()+"#"+interfaceClass.getName()); 

où interfaceClass est la classe de votre télécommande interface. Notez que vous n'avez pas défini d'interface distante (ou locale d'ailleurs) pour ce serveur Web. Vous pourriez ne pas être en mesure d'accéder à un autre contexte.

En ce qui concerne le changement de nom, je ne pense pas que ce soit possible grâce à des annotations. pas sûr cependant

+1

Désolé pour ressusciter ceci presque un mois plus tard. Dans Glassfish v2, vous pouvez faire @Stateless (mappedName = "fooBean") et ensuite vous pouvez rechercher en utilisant "fooBean". C'est spécifique au vendeur - ce n'est pas portable. Soyez prudent cependant, car dans Glassfish 3 (EJB 3.1) cela en change. Vous pouvez toujours utiliser le mappedName avec la recherche d'interface distante, mais il existe maintenant une configuration java: global native. Voir http://glassfish.java.net/javaee5/ejb/EJB_FAQ.html si vous n'êtes pas encore assez confus. – Jim