Article View: pl.comp.lang.java
Article #141858Ciekawy problem projektowy
From: Rafal
Date: Tue, 21 Oct 2008 19:55
Date: Tue, 21 Oct 2008 19:55
41 lines
2470 bytes
2470 bytes
Witam, Dziś pod koniec dnia natrafiłem na taką ciekawą zagadkę: Chciałem sobie zaimplementować pasek postępu podczas wykonywania raportu. Architektura: JSF (richfaces), Spring Kwestie htmlowo-ajaxowe mam już załatwione, tzn po stronie klienta wysyłane są w pewnych odstępach czasu żądania ajaxowe odczytujące pole z managed beana. Managed bean (jsf, scope: request) ma wstrzykiwany bean Springowy (SERVICE), w którym to jest wstrzykiwany kolejny bean Springowy (DAO). Implementacja oparta jest o interfejsy (tzn. mb z jsf widzi interfejs odpowiedniej usługi, która widzi interfejs penych dao). Springowe beany (SERVICE i DAO) są singletonami Ps. To dobrze czy źle (?) Ale do rzeczy: Jak można się domyśleć informacja o postępie raportu zawarta jest w obiekcie dao, a konkretniej w jednej jego metodzie. Chciałem użyć wzorca Obserwator by zmiany postępu w obiekcie dao były raportowone do bean JSF-owego, który jest związany z widokiem. Tylko jak to teraz osiągnąc, skoro w danym czasie raport mogą włączyć np. 2 osoby. Wtedy mamy dwie różne instancje beanów JSF odwołujących się do tych samych instancji (Service i co najważniejsze DAO). Powstają 2 stosy wywołań metody raportowej DAO. Nie mogą one jednak przechowywać aktualnego stanu postępu w obiekcie, gdyż jest on jeden, a stanów 2. Inaczej: obiekt dao ma zarejestrowanych dwóch słuchaczy i równolegle wykonuje 2 operacje raportowe. Skąd biedne DAO ma wiedzieć, któremu słuchaczowi jaką informację o postępie wysłać? :) Może odczytywać właśnie ten stos wywołań? Trochę to hardcorowe i chyba niezby eleganckie z architektonicznego punktu widzenia. -- Pozdrawiam Rafal
Technical Details
Message-ID:
<1gftxd4rvd75r.40k8q597vzs8.dlg@40tude.net>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!lublin.pl!news.lublin.pl!not-for-mailShow Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!lublin.pl!news.lublin.pl!not-for-mail From: Rafal <rl@NOSPAM.adrem.pl> Newsgroups: pl.comp.lang.java Subject: Ciekawy problem projektowy Date: Tue, 21 Oct 2008 21:55:29 +0200 Organization: lubman Lines: 41 Message-ID: <1gftxd4rvd75r.40k8q597vzs8.dlg@40tude.net> NNTP-Posting-Host: host-89-167-54-129.pronet.lublin.pl Mime-Version: 1.0 X-Trace: news.lublin.pl 1224618930 13623 89.167.54.129 (21 Oct 2008 19:55:30 GMT) X-Complaints-To: abuse@news.lublin.pl NNTP-Posting-Date: Tue, 21 Oct 2008 19:55:30 +0000 (UTC) User-Agent: 40tude_Dialog/2.0.15.1pl Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit