2011-10-20 21 views
6
public class Servlet2Stateless extends HttpServlet { 

@EJB private HelloUserLocal helloUser; 

    @Override 
    public void doGet(HttpServletRequest req, HttpServletResponse resp) 
      throws ServletException, IOException { 

     resp.setContentType("text/html"); 
     PrintWriter out = resp.getWriter(); 
     out.println(newSess.getName()); 


} 

la linea di codice sopra può funzionare quando EJB e Servlet sono distribuiti su server diversi? o ho bisogno di chiamarlo attraverso il modo tradizionale ????funziona @ Annotazione EJB per la chiamata remota?

risposta

6

Se l'EJB si trova sul server diverso dal client (Servlet) di quanto non sia possibile utilizzare l'iniezione di dipendenza con l'annotazione @EJB.

Immagino che avrete bisogno di andare con il vecchio modo JNDI.

2

In base alle specifiche EJB 3.1, è possibile utilizzare l'annotazione @EJB in una varietà di client, inclusi i servlet come nel caso specifico.

Il problema è che si stanno eseguendo client e server in host diversi. A seconda del server che stai utilizzando, potresti essere in grado di utilizzare l'annotazione EJB. This post spiega come farlo in Weblogic.

Inutile dire che è necessario definire il server EJB come @Remote in entrambi i casi.

0

Se il contenitore supporta anche CDI, è possibile scrivere un metodo di produzione CDI per il bean che esegue la ricerca JNDI. Quindi è possibile separare almeno la ricerca dal sito di iniezione.

0

Cosa ne pensi di utilizzare l'integrazione delle dipendenze in un client standalone?

Problemi correlati