martes, febrero 08, 2005

El Patrón Business Methods Interface

Un problema que tenemos al desarrollar EJBs es el de sincronizar los métodos de la interfaz local o remota con los métodos de la implementación.
Ya que la interfaz y el EJB tienen una jerarquía diferente, se da comunmente el caso en el cual la interfaz tiene una firma determinada para un método, pero el EJB otra.

Para solucionar el problema y capturar esta incoherencia en tiempo de desarrollo (en la compilación), se utiliza comunmente el patrón llamado Business Methods Interface. En este patrón la interface (local o remota) y la implementación (el EJB) implementan la misma interface (business methods).


Por ejemplo, si quisiéramos implementar ciertas funcionalidades de negocio en un EJB con interfaz local, crearíamos primero una Business Methods Interface, donde definiríamos nuestro métodos de negocio:

  public interface MyBusinessInterface {

public void myBusinessMethod1 ( ... );
...
}
y en base a ella crearíamos el EJB, con la implementación de estos métodos:
  import javax.ejb.SessionBean;

public class ExampleEJB implements SessionBean,
MyBusinessInterface {
public void myBusinessMethod1 ( ... ) {
...
}
...
}
y por último la interfaz local, extendiendo también de MyBusinessInterface:
  import javax.ejb.EJBLocalObject;

public interface ExampleLocal extends EJBLocalObject,
MyBusinessInterface {
}
En el caso de necesitar una interfaz remota, los métodos de la Business Methods Interface deberían lanzar RemoteException, tal como es requerido por la especificación de EJB.

De esta forma queda asegurada en tiempo de compilación la integridad de ambos componentes entre si.