Wie zu injizieren EJB im java-web-service SOAP

bin ich triyng die Entwicklung eines einfachen web service in Java, mit einer EJB, die mit EJBs in der jar-Datei und WebServices in der war-Datei, beides verpackt in einem Ohr. Wir verwenden EjB 3.0 auf JBOSS-AS 7.1.

Hier meine EJB-Klasse mit 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);
}

Und hier ist mein web-service -, die injizieren, die vorherigen 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);
   }
}

Die Bereitstellung funktioniert gut, aber wenn ich rufe meine web-service, die EJB ist immer null
(error : java.nullpointerException).

So, ich versucht, um einen @Stateless auf meine web-Service konvertieren zu EJB-aber ohne Erfolg, wenn ich versuche, Sie zu verbrauchen, die von einem web service-client.

Dann habe ich versucht, Zugriff auf Ejb-von lokalen jndi-lookup wie unten, wobei der lokale jndi-url in das JBOSS-log :

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

Aber es hat nicht funktioniert.

Schließlich habe ich versucht mit dem globalen jndi-url wie unten :

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

Und es funktioniert gut !!

So, ich verstehe nicht, warum mein webservice zugreifen können, die lokal auf Ihrem EJB-durch Injektion oder lokalen Jndi Weg?

  • Sind TestEjb und AuthentificationWS im gleichen OHR? Sind Sie in der gleichen ejb-jar?
  • Die application-server-Produkt und die version verwenden Sie?
  • Marschall ja, ich habe versucht, aber keine Effekte
  • Jboss 7.1
InformationsquelleAutor Nikoas | 2012-07-20
Schreibe einen Kommentar