0

Прежде чем я задам свой вопрос, я должен описать, как наши приложения построены.Архитектура фасада/обслуживания

Мы запускаем несколько веб-приложений, которые используют ejb's в сервисном слое. Я пытаюсь описать связь с коротким, например:

  • JSF фасоли (PersonHandler) вызывает фасад, чтобы удалить объект «лицо»
  • фасада можно использовать множество различных услуг, но не может использовать другие фасады. В этом случае PersonFacade использует PersonService (для удаления человека) и NotificationService (для отправки электронной почты). Также транзакции контролируются логикой фасада. Письма должны отправляться только в том случае, если транзакция успешно выполнена.
  • Служба НЕ МОЖЕТ иметь ссылку на другую услугу или фасад. Вместо этого PersonService имеет только ссылку на PersonDao (persist logic).

Я думаю, что эта архитектура довольно распространена. Вот мой вопрос.

В методе удаления PersonFacade у нас есть действительно важный код, который мы не будем дублировать. Каждый раз, когда человек должен быть удален, этот фрагмент кода должен выполняться. В другой логике фасада нам нужен точно такой же код, но фасад < -> фасадная связь не допускается.

Какое оптимальное решение этой проблемы?

Heres мое текущее решение, но я не доволен им. Я создал новый модуль ejb с ejb, который обрабатывает логику удаления. Оба фасадных модуля имеют зависимости от нового модуля, поэтому все работает, и я не нарушаю контракт «фасады никогда не использовать другие фасады». Если мы будем использовать это каждый раз, нам нужен тот же код в разных местах, что наши модули будут взрываться, а модули станут путать. На данный момент у нас есть более 250 модулей ejb/jar.

ответ

0

Ниже представлены два варианта, которые я бы рассмотрел.

  1. имеет общую логику базового фасада, что все фасад-х будет распространяться от или
  2. Переместить общую логику в качестве вспомогательного класса (полезность), что любой фасад может ссылаться. Я вижу, что вы уже делаете подобное, создавая новый ejb. Я не уверен, что он должен быть ejb, зависит от точной логики.

 Смежные вопросы

  • Нет связанных вопросов^_^