[Java lista] DBCP és szaporodó szálak

Zsombor gzsombor at gmail.com
2011. Feb. 25., P, 17:25:40 CET


2011/2/25 Mariák Kálmán <sirkalmi at kalmiesemese.hu>

> Igazad van, megvan a hiba!
>
> Az égatta világon semmi köze sincs a poolomhoz. A hibát egy olyan
> programrész okozta ami tudtommal eddig is kint volt az élesben. Lehet,
> hogy mégsem...
>
> A TopDispatcher filter osztályomban az alábbi kód okozta a szál
> szaporulatot:
> if(isNewSession) {
>        LookupService service = new LookupService();
>    Future<InetAddress> future =
> service.getByName(request.getRemoteAddr());
>    try {
>        InetAddress ia = future.get(1L, TimeUnit.SECONDS);
>        session.setAttribute("lastHostName", ia.getHostName());
>
>  SessionListenerWrapper.getVisitors(session).put(session.getId(),
> ia.getHostName());
>    } catch (Exception e) {
>                logger.warn(e, e);
>        }
> }
>
> Ez annyit csinál, hogy új session esetén lekérdezi, hogy honnan érkezett
> a kérés, majd eltárolja egy lastHostName nevű session attrubútumként.
> Annak érdekében, hogy ez ne lassítsa le az oldal betöltődését egy
> LookupService osztályban indítok erre egy új szálat ami valami miatt nem
> fejeződik be soha. Azért vagyok értetlen, mert az svn szerint 2010.06.07
> -én került ez a ficsőr a kódba és valamiért most jött ki ez a hiba mikor
> a pool cserét belehegesztettem.
> Megmondom őszintén, hogy szálkezelés ügyben nem vagyok túl expert, ezt a
> kódot az internetről kukáztam anno.
>
> Ha esetleg ötlete van valakinek, hogy miért nem hal meg a szál a dolga
> végeztével akkor ne tartsa magában! ;-)
>
> Mariák Kálmán
>
>

Esetleg nem kéne mindig új LookupService-t meg ThreadPool-t létrehozni, úgy
vélem az meg fogja tartani a referenciát, így nem lesz GC-zve soha.

Zs
--------- következő rész ---------
Egy csatolt HTML állomány át lett konvertálva...
URL: http://javagrund.hu/pipermail/javalist/attachments/20110225/25f4678b/attachment.html 


További információk a(z) Javalist levelezőlistáról