Сервисы образуют слой компонентов, определяющий множество операций Middleware, доступных клиентскому уровню приложения. Внутри сервисов инкапсулируется бизнес-логика и управление транзакциями.
Основные задачи сервисов:
-
Предоставляют удаленный (remote) интерфейс для вызова с клиентского уровня
-
Проверяют наличие активной пользовательской сессии, соответствующей идентификатору сессии, переданному с клиента
-
Записывают в журнал необработанные исключения среднего слоя
Кроме того, именно в слое сервисов рекомендуется выполнять авторизацию текущего пользователя, т.е. проверять его права на ту или иную функциональность.
Общие для всех сервисов задачи решаются следующим образом:
-
Проверка наличия пользовательской сессии и логгирование исключений производится классом-интерцептором
ServiceInterceptor
, который перехватывает выполнение каждого метода сервиса с помощью Spring AOP -
Удаленный интерфейс для доступа к сервису через Spring HTTP Invoker создается бином
RemoteServicesBeanCreator
, который конфигурируется в файлеremoting-spring.xml
модуля core.