Précédent   Forum des professionnels en informatique > Java > Serveurs, conteneurs, et Java EE > Tomcat
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/01/2012, 10h51   #1
Nouveau Membre du Club
 
Avatar de KnowPart
 
Homme
Développeur Web
Inscription : décembre 2010
Messages : 73
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2010
Messages : 73
Points : 39
Points : 39
Par défaut Pool de connexion sur Tomcat

Bonjour,

J'utilise le DATASOURCE pour se connecter à la base de donnée oracle dans mon application et j'ai comme avantage :
1) chaque appel à ce datasource avec le taglib <sql:query
dataSource="jdbc/nomconn"> le datasource vérifie s'il ya une connexion active pour qu'il utilise après chaque appel de sql:query.
2) les ressources sont bien partagés et bien utilisés.

Inconvénients:
* Je visualise des connexions inactive sur oracle concernant le datasource,ce qui généré le nombre maximum des connections atteint.

J'utilise le server.xml pour configurer la ressource utilisé pour chaque datasoucre ,et voilà les paramètres:

<Resource
name="jdbc/nomcon"
type="javax.sql.DataSource"
password="pass"
driverClassName="oracle.jdbc.OracleDriver"
maxIdle="10"
maxWait="200"
removeAbandoned="true"
logAbandoned="true"
username="user"
url="jdbc:oracle:thin:@ip:1521:sid"
removeAbandonedTimeout="10"
maxActive="10"/>

les connections inactive ne se ferme que lorsque je redémarre tomcat.
ma question c'est: comment parvenir à fermer la connexion inactive à partir de la configuration de la ressource du datasource,sachant que j'ai utilisé le paramètre removeAbandoned="true" et removeAbandonedTimeout="10" mais en vain.

Merci.
KnowPart est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2012, 15h26   #2
Modérateur
 
Avatar de tchize_
 
Homme
Responsable de service informatique
Inscription : avril 2007
Messages : 16 196
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 32
Localisation : Belgique

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : Service public

Informations forums :
Inscription : avril 2007
Messages : 16 196
Points : 25 343
Points : 25 343
Envoyer un message via MSN à tchize_ Envoyer un message via Skype™ à tchize_
Ta configuration mentionne clairement un pool de 10 connexions en attentes. (En même temps c'est aussi le but du pool...)
Donc à moins de te débarasser du pooling (max à 0). Es-tu sur que ce sont les connexion "inactive" le problème, ou est-ce que tu as du leak dans tes connexion (connexions non rendues au pool). Le removeAbandoned ça sert juste à rattraper du code cochon, mieux vaut commencer par éviter le code cochon!
__________________
⥀⥁ Чиз faq java, cours java, javadoc. Pensez à et
"Votre génitrice tute des pédoncules au pandémonium" (le conjurateur, 1973)
tchize_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2012, 17h17   #3
Nouveau Membre du Club
 
Avatar de KnowPart
 
Homme
Développeur Web
Inscription : décembre 2010
Messages : 73
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2010
Messages : 73
Points : 39
Points : 39
Voulez vous dire par le code cochon les connexions non fermer?

Moi je ferme pas les connexions ,dans chaque requete j'utilise la balise sql:query
dataSource="jdbc/nomconn"> et je la ferme </sql:query>,sauf quelque requête dans les quelles je fait
Code :
1
2
3
4
Context initContext = new InitialContext();
	Context envContext  = (Context)initContext.lookup("java:/comp/env");
	DataSource ds = (DataSource)envContext.lookup("jdbc/MyPool");
		con = ds.getConnection();
Toute mes connexions sont rendu au pool,sauf dans quelques requête j'attaque une autre base de données avec le link table@sid en passant par le datasource.
j'arrive pas à comprendre d'ou vient les connexions inactive dans la base de données suite à mon application?
KnowPart est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2012, 17h48   #4
Modérateur
 
Avatar de tchize_
 
Homme
Responsable de service informatique
Inscription : avril 2007
Messages : 16 196
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 32
Localisation : Belgique

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : Service public

Informations forums :
Inscription : avril 2007
Messages : 16 196
Points : 25 343
Points : 25 343
Envoyer un message via MSN à tchize_ Envoyer un message via Skype™ à tchize_
sql:query, on peux supposer qu'il rend correctement les connexions.

Dans votre code à vous, est-ce que vous faite bien appel systématiquement (donc dans un bloc finally) au close() de votre connexion ainsi que de tout Statement que vous auriez créé? C'est important, si la connexion n'est pas libérée ainsi, le connexion pool ne saura jamais qu'il peux la réutiliser, elle sera perdue (mais mangera quand même de la place dans la liste des connexion du serveur DB)
__________________
⥀⥁ Чиз faq java, cours java, javadoc. Pensez à et
"Votre génitrice tute des pédoncules au pandémonium" (le conjurateur, 1973)
tchize_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h52.


 
 
 
 
Partenaires

Hébergement Web