2016-09-06 5 views
0

나는 Hibernate을 사용하는 프로젝트를 가지고 있으며, 로깅에는 Envers을 사용하고 싶지만 누가 변경 작업을 수행했는지의 사용자 이름이 필요합니다. Dropwizard application이 있는데 감사를 위해 Hibernate envers을 사용하고 있습니다.Dropwizard 응용 프로그램에서 최대 절전 모드 Envers로 사용자 정의 데이터 전달

문서에서 RevisionListener을 구현하고 newRevision()에 사용자 이름을 설정해야한다는 것을 알고 있습니다. 그러나 사용자 이름을 CustomRevisionListener으로 전달할 방법이 없습니다. 나는 세션을 구현할 생각을하고 있었지만 Hibernate sessiondropwizard session과 달라야한다고 생각하기 시작했고, 다른 사용자 이름이 다른 사람이 작성한 것과 섞이지 않도록하기 때문에 최대 절전 모드 세션에서이 데이터를 전달하려고합니다.

나는 이것으로 어떤 입력을 주셔서 감사합니다.

감사합니다.

답변

1

아마도 내 게시물 here을 읽고 싶을 것입니다.

일반 아이디어는 응용 프로그램에서 청취자가 필요로하는 관련 정보가 들어있는 변수 ThreadLocal을 저장 한 다음 청취자 콜백 내에서 해당 변수 ThreadLocal에 액세스하도록하려는 점에서 항상 동일합니다. 모든 Envers가 최대 절전 세션 자체의 동일한 스레드 컨텍스트 내에서 발생하기 때문에 거기에 주목할 가치가 있습니다.

ThreadLocal 변수를 속성을 설정하는 최상위 클래스로 만들거나 나중에 구현해야하거나 구현간에 재사용해야하는 경우 제안 할 수 있습니다.