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

Zsombor gzsombor at gmail.com
2011. Feb. 24., Cs, 22:59:33 CET


HellĂł,

 Elég zavaros ez az egész, nem értem miért kell ennyire túlbonyolítani, azaz
ServletContext-be ConnectionPool, meg ConnectionPoolHandler osztályok.
Elsőre pl azt nem látom, hogy miért nem zárja le a filter szépen az
adatbázis kapcsolatokat legalább a request végén? Valamint miért akarja
minden request, párhuzamosan is ugyanazt a kapcsolatot használni? Ez elég
csúnya hibák forrása is lehet.
 Ezt úgy szokták csinálni, hogy a Filter elején JNDI datasource-tól elkérnek
egy kapcsolatot, azt beállítják egy ThreadLocal változóba, majd a filter
tovább adja a vezérlést, s a végén amikor visszakapja, akkor meg törli a
threadlocal-t és lezárja a kapcsolatot.


Ăśdv
 Zs


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

> Szervusztok!
>
> JVM bugra gyanakodtam ezért frissítettem. A környezet amiben produkálja
> a tĂĽnetet:
> Solaris
> jdk 6u24
> tomcat 6.0.29
>
> META-INF/context.xml:
>
> <Context allowLinking="true">
>    <Resource
>        name="jdbc/f1live"
>        auth="Container"
>        type="javax.sql.DataSource"
>        factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
>        username="f1live"
>        password="mx6345ndvwcsefi"
>        driverClassName="oracle.jdbc.driver.OracleDriver"
>        url="jdbc:oracle:thin:@10.0.2.111:1521:TSH1"
>        maxWait="1000"
>        removeAbandoned="true"
>        maxActive="30"
>        maxIdle="10"
>        removeAbandonedTimeout="60"
>        logAbandoned="true" />
> </Context>
>
> Van egy ConnectionPool osztályom, amely az alábbi felépítésű:
> * protected konstruktorában létrehozza a JNDI dateSource-t.
> * public static ConnectionPool getInstance metódusában megnézi, hogy a
> ServletContext-ben megtalálható-e a ConnectionPool, ha nem akkor
> példányosít, majd elhelyezzi abban.
> * getConnection a dataSource-ből kivesz egy kapcsolatot
> * putConnection meghĂ­vja a connection.close() metĂłdust
>
> Van egy ConnectionPoolHandler filter osztályom amely az init-ben
> meghĂ­vja a fent emlĂ­tett getInstance metĂłdust, illetve a doFilter-ben
> hozzáadja minden egyes request-hez.
>
> A felépítés sajnos adott volt, mert ebben a struktúrában egy másik pool
> üzemelt. A legissebb munkának azt véltem, ha ebbe hegesztem bele az
> újat. Elvileg működnie kellene csak ezek a rejtélyes szálak szaporodnak.
>
> Mi lehet a baj?
>
> Válaszokat nagyon köszi!
>
> Mariák Kálmán
>
>
> _______________________________________________
> Javalist mailing list
> Javalist at javagrund.hu
> http://javagrund.hu/mailman/listinfo/javalist
>
>
--------- következő rész ---------
Egy csatolt HTML állomány át lett konvertálva...
URL: http://javagrund.hu/pipermail/javalist/attachments/20110224/02ed81d6/attachment.html 


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