🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.java
Article #141858

Ciekawy problem projektowy

#141858
From: Rafal
Date: Tue, 21 Oct 2008 19:55
41 lines
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-mail

Show 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