[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