Jump to content

Шаблон бизнес-делегата

Бизнес-делегат — это шаблон проектирования Java EE . [1] Этот шаблон направлен на уменьшение связи между бизнес-сервисами и подключенным уровнем представления, а также на сокрытие деталей реализации сервисов (включая поиск и доступность архитектуры EJB ). [1] [2] Бизнес-делегаты действуют как адаптер для вызова бизнес-объектов с уровня представления. [3]

Структура

[ редактировать ]

Запросы на доступ к базовым бизнес-сервисам отправляются от клиентов, а службы поиска используются бизнес-делегатами для поиска компонентов бизнес-сервисов. [1]

Компоненты

[ редактировать ]

Базовыми компонентами являются бизнес-делегат, служба поиска и бизнес-служба.

Деловой делегат

[ редактировать ]

Управление и защита обеспечиваются посредством бизнес-делегата, который может иметь два типа конструкций: без идентификатора и с идентификатором, где идентификатор — это строковая версия ссылки на удаленный объект, например EJBHome или EJBObject. [1]

Служба поиска

[ редактировать ]

Бизнес-сервис находится с помощью службы поиска, которую использует бизнес-делегат. Детали реализации поиска бизнес-служб инкапсулируются службой поиска. [1]

Бизнес-услуги

[ редактировать ]

Это компонент бизнес-уровня, такой как корпоративный компонент или компонент JMS, который предоставляет клиенту требуемый сервис. [1]

Последствия

[ редактировать ]

Некоторые последствия заключаются в следующем:

  • Повышенная гибкость и удобство обслуживания, поскольку промежуточный уровень бизнес-делегирования отделяет бизнес-уровень от уровня представления.
  • Бизнес-делегат предоставляет унифицированный API для уровня представления для доступа к бизнес-логике. [1] [3]

Обеспокоенность

[ редактировать ]

Можно рассмотреть следующие проблемы:

  • Обслуживание за счет дополнительного слоя, увеличивающего количество классов в приложении.
  • Бизнес-делегат должен позаботиться об изменениях интерфейсов удаленных бизнес-объектов, а такие изменения случаются редко. [3]

Пример кода

[ редактировать ]

Ниже приведен пример кода для приложения профессиональных услуг (PSA), в котором клиенту веб-уровня требуется доступ к сеансовому компоненту, реализующему шаблон фасада сеанса.

Представитель ресурса:

public   class   ResourceDelegate   {      // Удаленная ссылка для сеанса      частного   ResourceSession   фасада сеанса  ;      // Класс для домашнего объекта фасада сеанса      Private   static   Final   Class   homeClazz   =      corepatterns  .  приложения  .  пса  .  эйб  .  ResourceSessionHome  .  сорт  ;      // Конструктор по умолчанию. Ищет домашний адрес и подключается      // к сеансу, создавая новый      public   ResourceDelegate  ()   выдает   ResourceException   {          try   {              ResourceSessionHome   home   =   (  ResourceSessionHome  )                  ServiceLocator  .  ПолучитьЭкземпляр  ().  getHome  (                      "Ресурс"  ,   homeClazz  );              сеанс   =   дом  .  создавать  ();          }   catch  (  ServiceLocatorException   ex  )   {              // Транслируем исключение Service Locator в              // исключение приложения              throw   new   ResourceException  (...);          }   catch  (  CreateException   ex  )   {              // Транслируем исключение создания сеанса в              // исключение приложения              throw   new   ResourceException  (...);          }   catch  (  RemoteException   ex  )   {              // Транслируем исключение Remote в              исключение // приложения              throw   new   ResourceException  (...);          }      }      Общественный   BusinessDelegate  (  String   id  )          выдает   ResourceException   {          super  ();          переподключиться  (  идентификатор  );      }      Общественная   строка   getID  ()   {          попробуйте   {              вернуть   ServiceLocator  .  getId  (  сессия );          }   catch   (  Exception   e  )   {              // Выдаем исключение приложения          }      }      public   void   reconnect  (  String   id  )           бросает   ResourceException   {          try   {              session   =   (  ResourceSession  )                                   ServiceLocator  .  ПолучитьСервис  (  идентификатор  );          }   catch   (  RemoteException   ex  )   {              // Транслируем исключение Remote в              исключение // приложения              throw   new   ResourceException  (...);          }      }      Public   ResourceTO   setCurrentResource  (          String   resourcesId  )          выдает   ResourceException   {          try   {              return   session  .  setCurrentResource  (  идентификатор ресурса  );          }   catch   (  RemoteException   ex  )   {              // Транслируем исключение службы в              исключение // приложения              throw   new   ResourceException  (...);          }      }      Общественный   ResourceTO   getResourceDetails  ()          выдает   ResourceException   {          попробуйте   {              возвратите   сеанс  .  getResourceDetails  ();          }   catch  (  RemoteException   ex  )   {              // Транслируем исключение службы в              исключение // приложения              throw   new   ResourceException  (...);          }      }      Общественный   недействительный   setResourceDetails  (  ResourceTO   vo  )          выдает   ResourceException   {          try   {              session  .  setResourceDetails  (  во  );          }   catch  (  RemoteException   ex  )   {              бросить   новое   ResourceException  (...);          }      }      Общественный   недействительный   addNewResource  (  ResourceTO   vo  )          выдает   ResourceException   {          try   {              session  .  добавитьресурс (  во  );          }   catch  (  RemoteException   ex  )   {              бросить   новое   ResourceException  (...);          }      }      // все остальные методы прокси для сеансового компонента      ...  } 

[1]

Удаленный интерфейс для ResourceSession:

public   class   ResourceDelegate   {      // Удаленная ссылка для сеанса      частного   ResourceSession   фасада сеанса  ;      // Класс для домашнего объекта фасада сеанса      Private   static   Final   Class   homeClazz   =      corepatterns  .  приложения  .  пса  .  эйб  .  ResourceSessionHome  .  сорт  ;      // Конструктор по умолчанию. Ищет домашний адрес и подключается      // к сеансу, создавая новый      public   ResourceDelegate  ()   выдает   ResourceException   {          try   {              ResourceSessionHome   home   =   (  ResourceSessionHome  )                  ServiceLocator  .  ПолучитьЭкземпляр  ().  getHome  (                      "Ресурс"  ,   homeClazz  );              сеанс   =   дом  .  создавать  ();          }   catch  (  ServiceLocatorException   ex  )   {              // Транслируем исключение Service Locator в              // исключение приложения              throw   new   ResourceException  (...);          }   catch  (  CreateException   ex  )   {              // Транслируем исключение создания сеанса в              // исключение приложения              throw   new   ResourceException  (...);          }   catch  (  RemoteException   ex  )   {              // Транслируем исключение Remote в              исключение // приложения              throw   new   ResourceException  (...);          }      }      Общественный   BusinessDelegate  (  String   id  )          выдает   ResourceException   {          super  ();          переподключиться  (  идентификатор  );      }      Общественная   строка   getID  ()   {          попробуйте   {              вернуть   ServiceLocator  .  getId  (  сессия );          }   catch   (  Exception   e  )   {              // Выдаем исключение приложения          }      }      public   void   reconnect  (  String   id  )           бросает   ResourceException   {          try   {              session   =   (  ResourceSession  )  ServiceLocator  .  ПолучитьСервис  (  идентификатор  );          }   catch   (  RemoteException   ex  )   {              // Транслируем исключение Remote в              исключение // приложения              throw   new   ResourceException  (...);          }      }      Public   ResourceTO   setCurrentResource  (          String   resourcesId  )          выдает   ResourceException   {          try   {              return   session  .  setCurrentResource  (  идентификатор ресурса  );          }   catch   (  RemoteException   ex  )   {              // Транслируем исключение службы в              исключение // приложения              throw   new   ResourceException  (...);          }      }      Общественный   ResourceTO   getResourceDetails  ()          выдает   ResourceException   {          попробуйте   {              возвратите   сеанс  .  getResourceDetails  ();          }   catch  (  RemoteException   ex  )   {              // Транслируем исключение службы в              исключение // приложения              throw   new   ResourceException  (...);          }      }      Общественный   недействительный   setResourceDetails  (  ResourceTO   vo  )          выдает   ResourceException   {          try   {              session  .  setResourceDetails  (  во  );          }   catch  (  RemoteException   ex  )   {              бросить   новое   ResourceException  (...);          }      }      Общественный   недействительный   addNewResource  (  ResourceTO   vo  )          выдает   ResourceException   {          try   {              session  .  добавитьресурс (  во  );          }   catch  (  RemoteException   ex  )   {              бросить   новое   ResourceException  (...);          }      }      // все остальные методы прокси для сеансового компонента      ...  } 

[1]

См. также

[ редактировать ]
  1. ^ Перейти обратно: а б с д и ж г час я «Основные шаблоны J2EE – бизнес-делегат» . Оракул . Оракул . Проверено 22 июня 2016 г.
  2. ^ Технический проект скрининга – версия 2.0 . Индиана, США: Штат Индиана. п. 7.
  3. ^ Перейти обратно: а б с Каял, Д. (2008). Профессиональные шаблоны Spring EE для Java EE . Нью-Йорк: Апресс. стр. 161 –166.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: e30509d791481fd2865667140ab7bf32__1710410820
URL1:https://arc.ask3.ru/arc/aa/e3/32/e30509d791481fd2865667140ab7bf32.html
Заголовок, (Title) документа по адресу, URL1:
Business delegate pattern - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)