2011-10-20 9 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()); 


} 

¿funcionará la línea de código anterior cuando tengo implementados EJB y Servlets en diferentes servidores? o necesito llamarlo de la manera tradicional ???¿@EJB Annotation funciona para llamadas remotas?

Respuesta

6

Si el EJB reside en el servidor diferente de su cliente (Servlet), entonces no puede usar la inyección de dependencia con la anotación @EJB.

Supongo que tendrá que ir con la antigua forma JNDI.

2

De acuerdo con la especificación EJB 3.1, puede usar la anotación @EJB en una variedad de clientes, incluidos servlets, que es su caso.

El problema es que está ejecutando el cliente y el servidor en diferentes hosts. Según el servidor que esté utilizando, es posible que pueda utilizar la anotación EJB. This post explica cómo hacerlo en Weblogic.

No hace falta decir que tiene que definir el servidor EJB como @Remote en cualquier caso.

0

Si su contenedor también es compatible con CDI, puede escribir un método de productor CDI para el bean que hace la búsqueda JNDI. Entonces, al menos, puede separar la búsqueda del sitio de inyección.

0

¿Qué hay de usar la inyección de dependencia en un cliente independiente?

Cuestiones relacionadas