Environnement de configuration du pool de connexions à la base de données SQL Server2000 de Tomcat en JSP :
1. Base de données : Microsoft SQL Server 2000
2. Pilote de base de données : net.sourceforge.jtds.jdbc.Driver
Présentation de JNDI (Java Naming and Directory Interface) :
Tomcat4(5) fournit un exemple d'implémentation JNDI--InitialContext compatible avec les services d'application Java Enterprise Edition. Ses données initiales sont définies dans le fichier $CATALINA_HOME/conf/server.xml et peuvent être référencées par les éléments suivants dans la description de l'environnement de l'application web (/WEB-INF/web.xml) :
1)
2)
3)
InitialContext est défini lorsque l'application Web est initialisée pour prendre en charge les composants de l'application Web. Toutes les entrées et ressources sont placées dans la section java:comp/env de l'espace de noms JNDI. Cliquez sur les URL suivantes pour plus d'informations :
1) Interface de dénomination et d'annuaire Java
2) Spécification de la plate-forme J2EE
Configuration des ressources JNDI Pour configurer les ressources JNDI, utilisez les identifiants suivants dans le fichier $CATALINA_HOME/conf/server.xml :
1)
2)
3)
4)
Les identifiants ci-dessus doivent être placés entre
De plus, les noms et valeurs définis dans le descripteur d'application Web (/WEB-INF/web.xml) sont également définis dans le contexte initial, lorsqu'ils sont activés par la valeur de l'élément
Les variables globales peuvent être définies dans
Présentation du pool de connexions à la base de données :
Les connexions aux bases de données constituent une ressource critique, limitée et coûteuse, en particulier dans les applications Web multi-utilisateurs. La gestion des connexions aux bases de données peut affecter de manière significative l'évolutivité et la robustesse de l'ensemble de l'application et affecter les indicateurs de performance du programme. Le pool de connexions à la base de données a été proposé pour résoudre ce problème.
Le pool de connexions à la base de données est responsable de l'allocation, de la gestion et de la libération des connexions à la base de données. Il permet aux applications de réutiliser une connexion à la base de données existante au lieu de rétablir une connexion à la base de données dont le temps d'inactivité dépasse le temps d'inactivité maximal pour éviter les erreurs dues à l'échec de la libération. la connexion à la base de données causée par une connexion à la base de données manquante. Cette technologie peut améliorer considérablement les performances des opérations de base de données.
Le pool de connexions à la base de données créera un certain nombre de connexions à la base de données et les placera dans le pool de connexions lors de l'initialisation. Le nombre de ces connexions à la base de données est défini par le nombre minimum de connexions à la base de données. Que ces connexions à la base de données soient utilisées ou non, le pool de connexions sera toujours assuré d'avoir au moins ce nombre de connexions. Le nombre maximum de connexions à la base de données dans le pool de connexions limite le nombre maximum de connexions que le pool de connexions peut occuper. Lorsque le nombre de connexions demandées par l'application au pool de connexions dépasse le nombre maximum de connexions, ces requêtes seront ajoutées au pool de connexions. file d'attente. La définition du nombre minimum de connexions et du nombre maximum de connexions dans le pool de connexions à la base de données doit prendre en compte les facteurs suivants :
1) Le nombre minimum de connexions est le nombre de connexions à la base de données maintenues par le pool de connexions, donc si l'application n'utilise pas une grande quantité de connexions à la base de données, une grande quantité de ressources de connexion à la base de données sera gaspillée ;
2) Le nombre maximum de connexions est le nombre maximum de connexions que le pool de connexions peut demander. Si la demande de connexion à la base de données dépasse ce nombre, les demandes de connexion à la base de données ultérieures seront ajoutées à la file d'attente, ce qui affectera les opérations ultérieures de la base de données.
3) Si la différence entre le nombre minimum de connexions et le nombre maximum de connexions est trop importante, la première demande de connexion sera rentable, et les demandes de connexion ultérieures dépassant le nombre minimum de connexions équivaudront à établir une nouvelle connexion à la base de données. Cependant, ces connexions à la base de données supérieures au nombre minimum de connexions ne seront pas libérées immédiatement après utilisation. Elles seront placées dans le pool de connexions en attente de réutilisation ou seront libérées après le délai d'inactivité.
Conditions préalables à la configuration du pool de connexions à la base de données Tomcat :
1. L'environnement d'exécution Java doit être installé ;
2. Il doit y avoir un serveur de base de données SQL Server2000 (il n'est pas nécessaire qu'il soit local) ;
3. Vous devez avoir jtds.jar et le placer dans le répertoire $CATALINA_HOME/common/lib (uniquement ici). Il est utilisé car le pilote Java SQL Server de Microsoft ne prend pas en charge les requêtes secondaires, disponibles en ligne. J'utilise actuellement jtds-0.6.jar.
Définissez le pool de connexions à la base de données dans $CATALINA_HOME/conf/server.xml :
Voici le code de configuration, qui doit être placé entre
.
.
.
.
Voici une description de certains paramètres :
dans:
1) path spécifie le chemin, le répertoire de qualité défini ici est $CATALINA_HOME/webapps ;
2) Répertoire racine du fichier docBase.
3) reloader S'il faut recompiler lorsque la page Web est mise à jour.
4) maxActive Le nombre maximum de connexions à la base de données dans le pool de connexions. Réglé sur 0 pour aucune limite.
5) maxIdle Le temps d'inactivité maximum de la connexion à la base de données. Au-delà de ce temps d'inactivité, la connexion à la base de données sera marquée comme indisponible puis libérée. Réglé sur 0 pour aucune limite.
6) maxWait est le temps d'attente maximum pour établir une connexion. Si ce délai est dépassé, une exception sera reçue. Réglé sur -1 pour indiquer qu'il n'y a pas de limite.
7) RemoveAbandoned recycle les connexions de base de données abandonnées (généralement oubliées de la libération) dans le pool de connexions.
8) RemoveAbandonedTimeout Si la connexion à la base de données n'est pas utilisée pendant une longue période, elle sera considérée comme abandonnée et renvoyée au pool de connexions.
9) logAbandoned enregistre le recyclage des connexions à la base de données abandonnées.
10) pilote JDBC driverClassName.
11) La chaîne de connexion à la base de données URL définit la ressource référencée dans $CATALINA_HOME/webapps/quality/WEB-INF/web.xml :
Voici le code de configuration, qui doit être placé dans
Voici la description nécessaire des paramètres :
1) description Une description de la ressource référencée.
2) nom de la ressource res-ref-name. Voir
3) type de ressource res-type. Voir
Utiliser des ressources dans JSP :
Cela fait partie du code du fichier de page Web jsp dans un certain sous-répertoire sous $CATALINA_HOME/webapps/quality :
<%@ page contentType="text/html;charset=GBK"%>
<%@ page errorPage="error.jsp"%>
<%@ page import="javax.naming.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="java.sql.*"%>
<%
………………
………………
// Opérations de base de données
Contexte ctx=null ;
Connexion cnn=null ;
Instruction stmt=null ;
ResultSet rs=null ;
essayer
{
ctx=nouveau InitialContext();
si(ctx==null)
throw new Exception("Aucun environnement correspondant");
DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/connectDB");
si(ds==null)
throw new Exception("Aucune base de données correspondante");
cnn=ds.getConnection();
stmt=cnn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs=stmt.executeQuery("select * from table1");
………………
………………
}
enfin
{
si(rs!=null)
rs.close();
si(stmt!=null)
stmt.close();
si(cnn!=null)
cnn.close();
si(ctx!=null)
ctx.close();
}
%>
Description des codes :
DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/connectDB");
La phrase ci-dessus applique les ressources que nous venons de définir.
C'est une bonne habitude de libérer les ressources après utilisation, en particulier les ressources contextuelles. Voir le segment de code final dans la section try-catch-finally. Si les ressources de niveau supérieur sont libérées lors de la libération des ressources, les ressources de niveau inférieur seront libérées en premier. Par exemple : si ctx est libéré, l'ordre de libération des ressources sera rs, stmt, cnn, ctx. En d'autres termes, si ctx est publié, rs, stmt et cnn seront indisponibles.
La libération des ressources ici renvoie uniquement la connexion de base de données au pool de connexions et ne libère pas réellement les ressources. Voir la présentation des pools de connexions de base de données.