Я бы не сказал, что это хорошая практика в целом, но, возможно, хорошая идея для некоторых сценариев.
В сервис-ориентированной архитектуре сервисный уровень используется не только веб-уровнем, но и, возможно, другими клиентами.В этом случае, вероятно, хорошей идеей будет создание веб-уровней и уровней обслуживания на отдельных серверах.
Другой случай может возникнуть, когда вы хотите выполнить отдельные развертывания, потому что, например, работа на обоих уровнях выполняется разными командами илиотдельные рабочие потоки - я бы задал вопрос, является ли это хорошей практикой, в отличие от групп, работающих с вертикальными объектами, а не с уровнями.
Вы можете создать свой уровень обслуживания различными способами:
- Как веб-сервисы.Когда вам нужна совместимость.
- В качестве удаленных EJB (это возможно в TomEE ).Когда совместимость не требуется.
- Вы также можете создать комбинацию обоих вышеперечисленных, они не являются взаимоисключающими.
С точки зрения разделения проектов, вы можете создать:
- Набор доменных объектов в модуле jar, который должен использоваться совместно вашим веб-и сервисным слоями.
- Военный модуль для вашего веб-слоя.
- AМодуль jar для интерфейсов уровня сервиса, который является зависимостью для вашего веб-уровня.
- Модуль jar / war для уровня сервиса, содержащий службы и DAO.