No my jsme to řešili, tak že jsme si v servletu spustili thread, který vykonával tu dlouhotrvající operaci a servlet se potom jen sledoval output toho threadu a z toho usuzoval v jakém stavu zpracování thread je. Na klienta odeslal potom stránku s META tagem REFRESH, třeba na 15 sekund. Takže klientovi se po 15 vteřinách zobrazoval progressbar, jak na tom ta operace je. Trochu se tím ale otevírá pandořina skříňka protože nás stálo kus práce vyladit thready.
Pak je tu ještě možnost rozdělit tu 5 minutovou operaci na několik menších a provádět uživatelel "průvodcem", kde bude jen mačkat NEXT a tím spustí další fázi zprocesování. To jen tak v rychlosti k řešení, které jsme už použili.

S pozdravem
Honza Novotný

Ing. Jan Novotný
analytik návrhář
Corpus Solutions a.s.

Telefon HK: +420 49 553 21 54
Telefon centrála: +420 24 102 03 33
Email: [EMAIL PROTECTED]
WWW: http://www.corpus.cz



Burdik Petr napsal(a):
Ahojas,
mam problemek. Mam operaci, ktera trva zhruba 5 minut. To je na delku jednoho pozadavku pres http velmi dlouho. Napada Vas nejake reseni, jak pockat na takto dlouhou operaci?

To je trosku zmatene, tak priklad:
1. pres webformular zadam hodnoty
2. poslu na server
3. pozadavek trva na vyrizeni 5 minut. Do te doby mi samozrejme vyprsi spojeni. Operace dobehne, ale formular se nikdy nezobrazi.

Mnou namyslene reseni:
1. vytvorit zakladni objekt, ulozit ho a dat mu stav ze neni dodelany
2. asynchronne (casovacem?) spustit danou dlouhotrvajici operaci
3. zobrazit formular ze byl objekt vytvoren a bude tam stav.

Otazkou je jestli a jak spustit danou operaci asynchronne v servletu tak, abych mohl pokracovat v praci dal.

Pet

Odpovedet emailem