Creación y registro del EJB

PEDRO DELGADO YARZA 2014/01/29 13:58

En Fundeweb 2.0 el módulo EJB se encuentra contenido dentro del módulo web por lo que es ahí donde deberemos crear nuestros EJB. Debemos tener en cuenta que en la creación de un EJB necesitaremos una interaz y una clase implementación. Adicionalmente podremos hacer uso de cualquier tipo de clase adicional que necesitemos, bien de utilidad, bien del modelo de datos.

Los EJB se pueden exponer sólo dentro de la aplicación, o al resto de las aplicaciones, y pueden conservar el estado o no. Según deseemos uno u otro comportamiento, deberemos indicarlo mediante anotaciones en las clases o interfaces correspondientes.

La interfaz se utiliza para mostrar la lógica de negocio que se proporciona al resto de la aplicación, es decir expone los métodos que queremos del EJB. Un EJB puede tener dos diferentes tipos de interfaces: local y remota.

  • Interfaz local: Expone los métodos del EJB dentro de la misma aplicación.
  • Interfaz remota: Expone los métodos del EJB en aplicaciones y contenedores remotos.

Una vez creado la interfaz, añadimos la anotación @Local (si queremos exponer en local) o @Remote (si es remota) que es obligatoria para trabajar con Seam. También es posible utilizar las anotaciones @Local y @Remote en la implementación, indicando en su interior la interface a utilizar.

@Local
public interface ServicioCalculadora {
	public CambiaMonedaResponse cambiaMoneda(CambiaMonedaRequest parameters);
}

El siguiente paso es crear la implementación del EJB. Para ello creamos una nueva clase Java que será la implementación del EJB. Una vez creada, añadimos la anotación @Stateless para indicar que es un EJB sin estado (o @Stateful si es con estado) y la anotación @Name para indicar el nombre para la variable de contexto que hace referencia al componente en Seam, es decir el identificador del EJB en Seam. Esta anotación también es obligatoria.

package org.umu.atica.fundeweb.ejbs;
 
@Stateless
@Name("servicioCalculadora")
public class ServicioCalculadoraImpl implements ServicioCalculadora{
 
	public ServicioCalculadoraImpl() {
	}

Si utilizáramos la anotación @Stateful para indicar que el EJB es con estado, supondría que mantiene el valor de sus propiedades entre diferentes llamadas a sus metodos. En este caso es obligatorio que implementen el interfaz Serializable y además, para que funcionen correctamente con Seam, tienen que tener un método con la anotación @Remove implementado.

@Stateful
@Name("servicioCalculadora")
public class ServicioCalculadoraImpl implements Serializable, ServicioCalculadora{
 
	public void metodo() {
		// Codigo del metodo
	}
 
	@Remove @Destory
	public void destroy() {
	}
}
 

Para inyectar un EJB dentro de otro componente (sea o no un componente Seam) utilizaremos la anotación @EJB, aunque la anotación @In también es posible utilizarla para inyectar el EJB dentro de un componente Seam.

  • fdw2.0/fundeweb2.0/gt/creacion_y_registro_en_la_aplicacion_del_ejb.txt
  • Última modificación: 07/11/2017 10:46
  • (editor externo)