[Java lista] EJB - Thread.interrupted
Zsombor
gzsombor at gmail.com
2009. Nov. 9., H, 22:53:52 CET
2009/11/9 Szomor Attila <aszomor at computertechnika.hu>
> Szia,
>
> Nem Ă©n terminálom, hanem a rendszer Ă©s az hogy állĂtja be ezt a jelzĹ‘t ?
> A jelenség a következő debug-olom a programot GalssFish alatt, lelövöm a
> debug-ot minden leáll de az én kis importálóm végig zúg mind a százezer
> tĂ©telen Ă©s amĂg azt be nem fejezi semmi más nem tud törtĂ©nni.
> Ilyenkor nem is zavarna, de mi van ha ez élőben valami egyéb esenény miatt
> történik meg (pl áramszünet, stb...), úgy gondolnám, hogy az AS
> ThreadManager vagy felfüggeszti, vagy terminálja a Thread-eket (kivéve, ha
> hibernál) és est nem ártana észlelni, gondoltam én.
> Lehet, hogy a "Current Thread" ilyenkor nem jó, talán valami Context-től
> kellene kérdezni ???
>
> Attila.
>
>
Nem teljesen értem, hogy mi is a helyzet, de ha jól értem a következők
történnek:
1, a szerverben indĂtasz egy szálat, ami sok tranzakciĂłt indĂt ciklusban.
2, graceful shutdownt indĂtasz - azaz valami control-cĂ© vagy hasonlĂł
eseményt küldesz
3, s bár a szerver nagy része már leállt az importálód még tovább dolgozik.
Nem tudom, honnan indĂtod a threadet - ha egy tranzakciĂłn belĂĽlrĹ‘l akkor az
problĂ©ma lehet, ne tedd. Ha azon kĂvĂĽlrĹ‘l, akkor az fura, abbĂłl a
szempontból, hogy egy idő után a GlassFish-nek nem kéne nyitott connectiont
adni a tranzakciódnak, ami mindenféle IO vagy Runtime Exceptionnel kéne
elszállnia. Vagy legalábbis én naivan ezt várnám el :)
A problĂ©mát nem teljesen Ă©rtem az áramszĂĽnetes pĂ©ldával, valĂłszĂnűleg áram
nélkül a Te importálód sem fog menni :) Vagy egy sima kill-9 is megfektetné
azonnal. Egyáltalán egy normálisan futĂł szerverben, ha le akarják állĂtani a
szervert, biztos az az elvárt viselkedés, hogy azonnal hagyjon abba mindent,
és a hosszan futó feladatodat se hajtsa végre?
AmĂşgy a thread-et thread.setDaemon(true)-val tudod dĂ©monná alakĂtani, ami
ezt a viselkedĂ©st valĂłsĂtja meg. Ha meg konkrĂ©tan VM leálláskor akarsz
valamit végre hajtani, azt a Runtime.getRuntime().addShutdownHook(..)
metódussal teheted meg. De nem hiszem, hogy most erre van szükséged
Zsombor
--------- következő rész ---------
Egy csatolt HTML állomány át lett konvertálva...
URL: http://javagrund.hu/pipermail/javalist/attachments/20091109/c8b43f1c/attachment.html
További információk a(z) Javalist levelezőlistáról