Logowanie zmian w logice biznesowej @EJB, a @AroundInvoke / interceptors

Odpowiedz Nowy wątek
Student911
2014-09-06 16:19
Student911
0

Witam,
Wkrótce chcę opracować system logowania zmian, czyli np. użytkownik wykonuje metodę biznesową x, a informacja o tym zostaje zapisana w tabeli bazy danych specjalnie do tego przeznaczonej (audit table).

Generalnie nie chcę, aby metoda biznesowa zawierała jawne wołanie zapisania / tworzenia logu, bo ją to zanieczyszcza i utrudnia pisanie testów.

Chcę utworzyć adnotację, która spowoduje że odpowiednia informacja zostanie odnotowana (czyli tak naprawdę po wykonaniu metody odpali oddzielną metodę, która utworzy obiekt logu i wykonana na nim persist lub zaregauje na wystąpienie wyjątku i też odnotuje daną sytuację).

Wiem, że tworzenie takich customowych adnotacji umożliwiają Interceptors w EJB3.

Pytanie:
Czy interceptors nadają się do tworzenia logów znajdujących się w audit tables za pomocą JPA (czyli em.persist)? Czy jest jakieś szczególne ograniczenie, o którym warto wiedzieć?

Pozdrawiam,

Pozostało 580 znaków

2014-09-07 19:50

Rejestracja: 5 lat temu

Ostatnio: 3 godziny temu

0

WYgląd dobrze..uważaj na local proxy call i na transakcje

Pozostało 580 znaków

Student911
2014-09-09 18:17
Student911
0

Dzięki, a więc jak będę miał chwilę zabieram się za testy.

Pozostało 580 znaków

2014-09-09 23:17
Moderator

Rejestracja: 16 lat temu

Ostatnio: 3 godziny temu

0

Wszystko spoko ale właściwie czemu wymyślasz koło na nowo skoro jest aspectj z potrzebnymi adnotacjami?


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...

Pozostało 580 znaków

Student911
2014-09-09 23:31
Student911
0

Z tego co zawsze mi się kojarzyło AspectJ jest mocno związany ze Springiem i jakoś nie znalazłem dobrych przykładów na użycie z EJB3 (w przeciwieństwie do Interceptorów) i jeszcze z niego nie korzystałem (bo mało pracowałem ze Springiem).

Czy AspectJ jest używalny z EJB3? Nie mogę migrować do Springa w tym projekcie. To istniejący soft, który jest utrzymywany.

Z tego co przeczytałem tworzenie Interceptorów w EJB3 jest dobrze udokumentowane i raczej wydaje mi się łatwiejszym zadaniem niż dodawanie do tego AspectJ. Chyba, że się mylę.

Pozostało 580 znaków

2014-09-09 23:49
Moderator

Rejestracja: 16 lat temu

Ostatnio: 3 godziny temu

0

Dla jasności: mówisz o intetceptorach z CDI a nie tych rozszerzeniach dostępnych z różnymi serwerami aplikacji? Jeśli tak to w czystej aplikacji JEE to będzie dobre rozwiązanie.


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...

Pozostało 580 znaków

Student911
2014-09-10 00:05
Student911
0

Mówię o tych standardowych, jednak są one na benach będących na pewno EJB3 (adnotacja @Stateless), ze względu np. na automatyczne zarządzanie transakcjami przez kontener (JTA). Niektóre z tych beanów wykorzystują Welda (CDI) do wstrzykiwania różnego rodzaju utilsów (@Dependent), gdy są potrzebne.

Czy Interceptor dla EJB3 i CDI to jest dokładnie to samo? Z postu na StackOverflow wynika, że spokojnie mogę użyć tego z Welda dla mojego ziarenka EJB.
http://stackoverflow.com/ques[...]erceptors-vs-cdi-interceptors

Tak więc zostanie użyty Interceptor CDI (po migracjach w aplikacji mam EJB 3.2). Już specyfikacja EJB 3.0 udostępniała Interceptory zanim powstało CDI i raczej też nadawałyby się.

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0