Comment injecter des EJB dans java web service SOAP

je suis triyng de développer un service web simple en Java qui utilise un EJB, avec des Ejb dans le fichier jar et WebServices dans la guerre de fichier, à la fois emballés dans une oreille. Nous utilisons des EjB 3.0 sur JBOSS-COMME 7.1.

Ici mon EJB classe avec son interface :

@Stateless
public class TestEjb implements ITestEjb {

    public boolean authentifier(String login, String password) {
        if(login.equals("nico") && password.equals("nr"))
            return true;
        else 
            return false;
    }

}

@Local
public interface ITestEjb {
    public boolean authentifier(String login, String password);
}

Et voici mon service web qui injectent le précédente EJB :

//@Stateless
@WebService
@SOAPBinding(style = Style.RPC)
public class AuthentificationWS {
    @EJB
    private ITestEjb testEjb;

   public boolean authentifier(String login,String password) {
       return testEjb.authentifier(login, password);
   }
}

Le déploiement fonctionne bien mais quand je l'appelle mon service web, l'EJB est toujours null
(error : java.nullpointerException).

J'ai donc essayé d'ajouter un @Stateless à mon Service web pour convertir les EJB, mais sans succès, lorsque j'essaie de le consommer par un client de service web.

Puis j'ai essayé d'accès Ejb par local recherche jndi comme ci-dessous, en prenant le local jndi url dans le journal de JBOSS :

final String jndi = "java:module/TestEjb!fr.test.ITestEjb";
testEjb = (ITestEjb) new InitialContext().lookup(jndi);

Mais il ne fonctionne pas.

Enfin j'ai essayé avec le jndi global url comme ci-dessous :

final String jndi = "ejb:Num-ear-1.0.0-SNAPSHOT/Num-ejb-1/TestEjb!fr.test.ITestEjb"
testEjb = (ITestEjb) new InitialContext().lookup(jndi);

Et il fonctionne bien !!

Donc, je ne comprends pas pourquoi mon webservice ne peut pas accéder localement à son EJB par injection ou local Jndi façon?

  • Sont TestEjb et AuthentificationWS dans la même OREILLE? Sont-ils dans le même fichier ejb-jar?
  • De serveur d'applications de produit et la version utilisez-vous?
  • Marschall Oui j'ai essayé mais aucun effet
  • Jboss 7.1
InformationsquelleAutor Nikoas | 2012-07-20