Articulo de referencia

Patrón de delegado empresarial

Business delegate es un patrón de diseño de Java EE . [ 1 ] Este patrón está dirigido a reducir el acoplamiento entre los servicios de negocio y la capa de presentación conectad...

Business delegate es un patrón de diseño de Java EE . [ 1 ] Este patrón está dirigido a reducir el acoplamiento entre los servicios de negocio y la capa de presentación conectada, y a ocultar los detalles de implementación de los servicios (incluida la búsqueda y la accesibilidad de la arquitectura EJB ). [ 1 ] [ 2 ] Business delegate actúa como un adaptador para invocar objetos de negocio desde la capa de presentación. [ 3 ]

Estructura

Las solicitudes para acceder a los servicios empresariales subyacentes son enviadas por los clientes, y los delegados empresariales utilizan servicios de búsqueda para localizar los componentes del servicio empresarial. [ 1 ]

Componentes

Los componentes básicos son el delegado empresarial, el servicio de búsqueda y el servicio empresarial.

delegado empresarial

El control y la protección se proporcionan a través del delegado de negocio, que puede tener dos tipos de estructuras: sin ID y con ID, donde ID es una versión en cadena de la referencia a un objeto remoto como EJBHome o EJBObject. [ 1 ]

Servicio de búsqueda

El servicio empresarial se localiza mediante un servicio de búsqueda que utiliza el delegado empresarial. Los detalles de implementación de la búsqueda del servicio empresarial están encapsulados por el servicio de búsqueda. [ 1 ]

Servicio empresarial

Este es un componente de nivel de negocio, como un bean empresarial o un componente JMS, que proporciona el servicio requerido al cliente. [ 1 ]

Consecuencias

Algunas consecuencias son las siguientes:

  • Mayor flexibilidad y facilidad de mantenimiento, ya que la capa intermedia de delegación empresarial desacopla la capa empresarial de la capa de presentación.
  • El delegado de negocio expone una API uniforme a la capa de presentación para acceder a la lógica de negocio. [ 1 ] [ 3 ]

Preocupaciones

Se pueden tener en cuenta las siguientes preocupaciones:

  • Mantenimiento debido a la capa adicional que aumenta el número de clases en la aplicación.
  • El delegado empresarial debe encargarse de los cambios en las interfaces de los objetos empresariales remotos, y este tipo de cambios son poco frecuentes. [ 3 ]

Código de ejemplo

A continuación se proporciona un ejemplo de código para una aplicación de servicios profesionales (PSA), donde un cliente de la capa web necesita acceder a un bean de sesión que implementa el patrón de fachada de sesión.

Delegado de recursos:

clase pública ResourceDelegate {// Referencia remota para Session Facade private ResourceSession session ;// Clase para el objeto Home de Session Facade private static final Class homeClazz = corepatterns . apps . psa . ejb . ResourceSessionHome . class ;// Constructor predeterminado. Busca el directorio principal y se conecta // a la sesión creando una nueva. public ResourceDelegate () throws ResourceException { try { ResourceSessionHome home = ( ResourceSessionHome ) ServiceLocator . getInstance (). getHome ( "Resource" , homeClazz ); session = home . create (); } catch ( ServiceLocatorException ex ) { // Traduce la excepción de Service Locator a // excepción de aplicación throw new ResourceException (...); } catch ( CreateException ex ) { // Traduce la excepción de creación de sesión a // excepción de aplicación throw new ResourceException (...); } catch ( RemoteException ex ) { // Traduce la excepción remota a // excepción de aplicación throw new ResourceException (...); } }public BusinessDelegate ( String id ) throws ResourceException { super (); reconnect ( id ); }public String getID () { try { return ServiceLocator . getId ( session ); } catch ( Exception e ) { // Lanzar una excepción de aplicación } }public void reconnect ( String id ) throws ResourceException { try { session = ( ResourceSession ) ServiceLocator.getService ( id ) ; } catch ( RemoteException ex ) { // Traducir la excepción remota en // excepción de aplicación throw new ResourceException (...); } }public ResourceTO setCurrentResource ( String resourceId ) throws ResourceException { try { return session . setCurrentResource ( resourceId ); } catch ( RemoteException ex ) { // Traducir la excepción del servicio en // excepción de la aplicación throw new ResourceException (...); } }public ResourceTO getResourceDetails () throws ResourceException {try { return session.getResourceDetails ( ); } catch ( RemoteException ex ) { // Traducir la excepción del servicio en // excepción de la aplicación throw new ResourceException (...); } }public void setResourceDetails ( ResourceTO vo ) throws ResourceException { try { session . setResourceDetails ( vo ); } catch ( RemoteException ex ) { throw new ResourceException (...); } }public void addNewResource ( ResourceTO vo ) throws ResourceException { try { session . addResource ( vo ); } catch ( RemoteException ex ) { throw new ResourceException (...); } }// todos los demás métodos proxy al bean de sesión ... }

[ 1 ]

Véase también

Referencias

  1. 1 2 3 4 5 6 7 8 "Patrones básicos de J2EE: Business Delegate" . Oracle . Oracle . Consultado el 22 de junio de 2016 .
  2. Documento de diseño técnico de cribado – Versión 2.0 . Indiana, EE. UU.: Estado de Indiana. pág. 7. 
  3. ^ Kayal , D. (2008) . Patrones de primavera Pro Java EE . Nueva York: Apress. págs. 161 –166.