En muchas ocasiones nos encontramos definiendo una serie de interfaces para utilizar EJBs . A partir de EJB 3.1 no será necesario utilizar interfaces si unicamente necesitamos definir EJBs que tengan acceso local . Nos bastará con definir nuestros EJBs con la anotación @LocalBean.
Anotado el EJB no hará falta el uso de interfaces para utilizarle desde un cliente local.
Vamos a ver el código fuente de nuestro EJB.
package com.arquitecturajava;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
@Stateless
@LocalBean
public class HolaMundoLocalBean {
public HolaMundoLocalBean() {
}
public String mensaje() {
return "hola ejb sin interface";
}
}
Para invocar al EJB desde un servlet seguiremos usando las anotaciones habituales pero ahora no tendremos que anotar un interface sino directamente la clase que hemos anotado anteriormente.
@WebServlet("/HolaServletEJBLocal")
public class HolaServletEJBLocal extends HttpServlet {
private static final long serialVersionUID = 1L;
@EJB
HolaMundoLocalBean miejb;
public HolaServletEJBLocal() {
super();
// TODO Auto-generated constructor stub
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter pw=response.getWriter();
pw.println(miejb.mensaje());
pw.close();
}
}
Una vez hecha esta operación nos hemos ahorrado la generación de interfaces por parte del EJB con lo cual todo quedará mas sencillo.Esta capacidad esta unicamente disponible en JEE 6.