Хороший шаблон или платформа для добавления аудита к существующему приложению? [закрытый]

У меня есть существующее корпоративное приложение J2EE, к которому я должен добавить аудит, т.е. быть в состоянии записать операции CRUD на нескольких важных доменных типах (Сотрудник, AdministratorRights, и т.д.).

Приложение имеет стандарт n-tier архитектура:

  • Веб-интерфейс
  • Бизнес-операции, инкапсулировавшие в смеси сеансовых объектов без сохранения состояния и транзакционного POJOs (использующий Spring)
  • персистентность является смесью прямого JDBC (из бизнес-слоя) и EJB 2.x компоненты сущности BMP (я знаю, я знаю),

Мой вопрос: есть ли какие-либо стандартные шаблоны или (лучше все еще) платформы/библиотеки специально для добавления аудита как сквозное беспокойство? Я знаю, что AOP может использоваться для реализации сквозных проблем в целом; я хочу знать, существует ли что-то конкретно нацеленное на аудит.

10
задан Andrew Swan 17 September 2008 в 03:31
поделиться

4 ответа

Прямо сейчас я склоняюсь к использованию Spring AOP (использующий стиль "@AspectJ") для уведомления бизнес-операциям, которые подвергнуты веб-слою.

2
ответ дан 4 December 2019 в 01:58
поделиться

Попробуйте платформу Аспектно-ориентированного программирования.

Из Википедии "Аспектно-ориентированное программирование (AOP) является парадигмой программирования, которая увеличивает модульный принцип путем разрешения разделения сквозных проблем".

0
ответ дан 4 December 2019 в 01:58
поделиться

Я собираюсь пойти немного против мелкой частицы сюда и предложить, чтобы Вы посмотрели на решение нижнего яруса. У нас есть подобная архитектура в нашем приложении, и для нашего аудита мы пошли с триггерами аудита уровня базы данных, которые отслеживают операции в RDBMS. Это может быть сделано как прекрасное - или крупномодульное как Вам угодно, просто необходимо определить объекты, которые требуется отследить.

Теперь, это не идеологически чистое решение; это вовлекает логику помещения в базу данных, которая, как возможно предполагается, остается в бизнес-уровне, и я не могу отклонить то это представление, имеет значение, но в нашем случае у нас есть многие независимое приложение, взаимодействующее с моделью данных, некоторые записанные в C, некоторые заданные сценарием, и другие приложения J2EE, и все они должны последовательно контролироваться.

Существует возможно все еще некоторая работа AOP, которая будет сделана здесь на стороне J2EE, обратите внимание; любому методу, который обновляет базу данных вообще, вероятно, придется иметь некоторую дополнительную работу, сделанную для сообщения базы данных, какой пользователь делает работу. Мы используем переменные сеанса базы данных, чтобы сделать это, но существуют другие решения, конечно.

2
ответ дан 4 December 2019 в 01:58
поделиться

Для всего EJBs можно использовать перехватчики EJB 3.0 (Это - что-то подобное фильтру Сервлета) и другой подобный перехватчик для Spring (не знакомый с пружиной), Поскольку Вы используете EJBs, а также Spring, который не может покрыть целые транзакции. Другой подход мог использовать Фронтальный контроллер однако, который требует некоторой модификации в стороне клиента. Еще один подход мог использовать Фильтр Сервлета однако, который означает реализовывать доменную логику на уровне представления.

Я рекомендовал бы Фронтальный контроллер в этом случае.

0
ответ дан 4 December 2019 в 01:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: