Request context dla wywołań EJB

0

Witam,
nurtuje mnie problem przydzielania wątków dla wywołań EJB.
Chodzi mi mianowicie o stworzenie pewnego kontekstu przechowujące informacje specyficzne dla jednego requesta a dostępne dla wszystkich metod wywołanych w ramach tego zapytania. Dla zobrazowania może przedstawię przykładową sytuacje:
otóż wołamy sobie (np. z warstwy WWW) zdalnego beana i wrzucamy jakieś interesujące nas dane do ThreadLocal'a, następnie wywołujemy jakąś metodę z innego lokalnego beana czy możemy mieć pewność że dane które wrzuciliśmy wcześniej do lokalnej pamięci wątku będą widoczne również w tej metodzie? (czy jest to ten sam wątek?)

Pozdrawiam i z góry dziękuje za odpowiedzi.

0

Zainteresuj sie CDI i @RequestScope dla wywolan lokalnych.

0

Zapomniałem nadmienić że jest to zmiana w istniejącej już aplikacji, w której jest wykorzystana java 1.4 i ejb 2.1.

0

Biedaku...

Co do watkow to tak, jest taka gwarancja, zreszta cale mnostwo frameworkow opiera sie na ThreadLocalach. Ale zamiast takiego brzydkiego rozwiazania, moze masz pewnosc ze te wywolania sa w jednej transakcji, i mozesz zrobic lookup TransactionSynchronizationRegistry, ktore jest taka mapa dla danej tx, i tam przechowywac dane? Beany ktore potrzebuja tego robia sobie lookupa i pobieraja stamtad dane wlozone przez kogos wczesniej w transakcji?

ThreadLocal maja to do siebie, ze bardzo latwo o memory leaki - jesli wsadzisz cos do TL, padnie wyjatek, i przypadkiem nie usuniesz tego co wsadziles, mozliwe ze zostanie w sytemie na zawsze, albo nawet gorzej - inne beany beda pobierac zle dane...

0

Też sobie współczuje.

Dzięki za odpowiedź. Przyjrzę się bliżej TransactionSynchronizationRegistry jednak chyba mimo wszystko pozostanę przy ThreadLocal. Dane które muszę przekazywać będą wykorzystane przez logger nie jestem pewny czy TSR nie będzie przypadkiem wolniejsze, poza tym muszę też mieć te dane po stronie kontenera WWW a tam chyba już nic innego niż TL nie wymyśle.
Masz rację że istnieje ryzyko pozostawanie śmieci w pamięci podręcznej wątków, jednak można to ryzyko myślę zminimalizować, dodatkowo jeśli nawet coś zostanie w jakimś wątku to przy następnym wywołaniu (i wzięciu tego wątku z puli) zostanie to nadpisane przez aktualne dane - przynajmniej w teorii.

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