Я хочу реализовать аудит в своем веб-проекте. В основном мое приложение составлено веб-проектом (WAR), который вызывает методы в проекте EJB (JAR), все обернуто внутри EAR, который развернут в контейнере (Jboss и, вероятно, Websphere в ближайшем будущем).Проверка JPA с идентификатором пользователя
Итак, я получил сеанс пользователя на веб-стороне и сущности и DAO на стороне ejb. Я хотел бы реализовать процедуру аудита для некоторых пользовательских транзакций, поэтому состояние данных должно сохраняться в базе данных вместе с идентификатором пользователя, выполнившего изменение.
Я могу легко передать идентификатор пользователя при каждом вызове на стороне EJB и выполнить аудит из бизнес-методов, но это загромождает мои бизнес-и клиентские методы.
Я изучил Hibernate Envers, что представляет собой очень интересную структуру аудита, но не проверяет идентификатор пользователя из коробки. Поэтому я посмотрел дальше и узнал this post, в котором объясняется, как использовать RevisionListener, чтобы получить идентификатор пользователя из сеанса и сохранить его в базе данных. Однако он не работает в архитектуре EAR по следующей причине: этот RevisionListener использует FacesContext.getCurrentInstance(), чтобы получить идентификатор пользователя из сеанса, поэтому это означает, что RevisionListener должен находиться на веб-стороне приложение, а не на стороне EJB ...
Ну, я надеюсь, что я сделал себе достаточно ясно :)
Ура!
Какой тип EJB вы используете: Session beans и/или JPA javax.persistence.Entity beans? – Beryllium
Мои EJB - все @Stateless, а мои сущности - javax.persistence. @ Entity –