1.Tomcat Configuration Source des données:
Préalable: vous devez placer le package de jar du pilote de base de données MySQL connecté dans le répertoire LIB sous le dossier commun du répertoire d'installation Tomcat.
1. Méthode 1: Créez un dossier Meta-Inf sous webroot et créez un fichier context.xml, comme suit:
<? xml version = "1.0" encoding = "utf-8"?> <context> <ressource name = "jdbc / chaoshi" auth = "contener" type = "javax.sql.datasource" maxactive = "50" maxidle = "30" maxwait = "10000" logabandoned = "true" userame = "root" root "root" driverclassname = "com.mysql.jdbc.driver" url = "jdbc: mysql: // localhost: 3306 / dbname"> </ ressource> </ context>
Méthode 2: Dans le contexte.xml sous le répertoire Tomcat Conf, modifiez la balise de contexte d'origine et changez-la en:
<Context> <! - Ensemble par défaut de ressources surveillées -> <atherdedResource> web-inf / web.xml </ watchedResource> <ressource name = "jdbc / test" auth = "contener" type = "javax.sql.datasource" maxactive = "50" maxidle = "30" maxwait = "10000" logabandon = "username =" maxwait = "10000" logabandon = "username =" maxwait = "10000" logabandon = "username =" maxwait = "10000" Logabandond = "USERNAME =" ROOTAME = " mot de passe = "root" driverclassname = "com.mysql.jdbc.driver" url = "jdbc: mysql: // localhost: 3306 / testdb" /> </ context>
Méthode 3: Lors de la configuration du répertoire virtuel, c'est-à-dire lors de la configuration du server.xml ci-dessous Conf, changez-le par la balise de contexte:
< mot de passe = "root" driverclassname = "com.mysql.jdbc.driver" url = "jdbc: mysql: // localhost: 3306 / testdb" /> </ context>
</ La signification de chaque attribut dans la balise de ressource dans le fichier de configuration:
DriverClassName - le nom complet de la classe de pilote de base de données utilisé par JDBC.
Maxactive - Le nombre maximum de connexions actives fournies par le pool de connexions en même temps.
Maxidle - Le nombre maximum de connexions que le pool de connexions contient pendant le temps inactif.
Maxwait - Le nombre maximum de millisecondes La base de données attend lorsqu'une exception se produit (lorsqu'il n'y a pas de connexion disponible).
Nom d'utilisateur - Nom de connexion lors de la connexion à la base de données
Mot de passe - Le mot de passe pour se connecter à la base de données.
URL - URL au conducteur. (Drivername est également autorisé pour la compatibilité arrière.)
Code de test:
Context initContext = new InitialContext (); context EnvContext = (context) initContext.lookup ("java: / comp / env"); dataSource ds = (dataSource) EnvContext.lookup ("jdbc / test"); System.out.println (ds.getConnection ());S'il n'est pas nul, il devrait réussir.
Notez que lors des tests, vous devez le tester dans Tomcat, c'est-à-dire qu'il doit être dans le conteneur Tomcat (ne vous inquiétez pas, écrivez une page JSP simple pour le tester et utilisez <% ... %>, ce qui est assez simple). S'il n'est pas testé dans le conteneur Tomcat, une exception sera lancée:
... javax.naming.noinnitialContextexception: Besoin de spécifier le nom de classe dans l'environnement ou la propriété système, ou en tant que paramètre d'applet, ou dans un fichier de ressources d'application: java.naming.factory.Initial
2. Il existe trois façons de configurer les pools de connexion en hibernate:
Méthode 1 Utilisez le pool de connexion de Hibernate.
<Hibernate-Configuration> <session-factory> <! - JDBC Driver -> <propriété name = "connection.driver_class"> com.mysql.jdbc.driver </ propriété> <! - URL pour se connecter à la base de données -> <propriété Name = "Connection.Url"> JDBC: Mysql: // LocalHost: 3306 / Feifei La connexion -> <propriété name = "Connection.Username"> root </ propriété> <! - Mot de passe de connexion -> <propriété name = "connection.password"> </ propriété> <! - Que ce soit le sql généré pendant l'exécution vers le journal pour le débogage -> <propriété name = "show_sql"> true </ propriété> <! - Spécifie le langage pour la connexion -> <propriété name = "dialect"> org.hibernate.dialect.mysqldialect </ propriété> <! - Mapping Resources -> <mapping ressource = "/ xx / xx.hbm.xml" /> </ session-factory> </ hibernate-configuration> ma propre configuration est suivant, la partie commentée est publique, et d'autres connexions Besoins pour être utilisées! <Hibernate-Configuration> <Session-Factory> <propriété name = "show_sql"> true </ propriété> <! - Common confr dbcp / c3p0 nécessaire <propriété name = "connection.Username"> informrix </ propriété> <propriété name = "connection.password"> informrix </ propriété> < name = "Connection.driver_class"> com.informix.jdbc.ifxdriver </ propriété> <propriété name = "connection.url"> jdbc: informrix-sqli: //192.168.0.188: 1526 / db_crm: informrixserver = ol_sx; newlocale = zh_cn, en_us; newcodeset = gbk, 8859_1,819; name = "dialect"> com.huatech.sysframe.webapp.common.dao.hibernate.dialet.baseInformIxDialect </ propriété> -> ... ... ... ... </ session-factory> </ hibernate-configuration>
Méthode 2: Utilisez le pool de connexion de la base de données spécifiée par le fichier de configuration.
Le pool de connexions dispose désormais de DBCP, C3P0 et Proxoop. En fait, je savais dbcp
Parmi eux, la configuration de DBCP et C3P0 ne doit qu'ajouter quelques configurations à la configuration ci-dessus, et Hibernate identifiera automatiquement le pool de connexion de la base de données.
Pour configurer DBCP, vous devez rejoindre:
<! - dbcp conf <propriété name = "dbcp.maxactive"> 100 </ propriété> <propriété name = "dbcp.whenexhaustedaction"> 1 </ propriété> <propriété name = "dbcp.maxwait"> 60000 </ propriété> <propriété name = "dbcp.maxidle"> 10 </ propriété> < name = "dbcp.ps.maxactive"> 100 </ propriété> <propriété name = "dbcp.ps.maxactive"> 100 </ propriété> <propriété name = "dbcp.ps.whenexhaustedaction"> 1 </ propriété> <propriété name = "dbcp.ps.maxwait"> 60000 </ propriété> <propriété name = "dbcp.ps.maxidle"> 10 </ propriété>
Pour configurer C3P0, vous devez rejoindre:
<! - C3P0 conf <propriété name = "c3p0.min_size"> 5 </ propriété> <propriété name = "c3p0.max_size"> 30 </ propriété> <propriété name = "c3p0.time_out"> 1800 </ propriété> <propriété name = "C3p0.max_statement"> 50 </premy> ->
La configuration de Proxoop est un peu différente. Vous ne pouvez pas simplement l'ajouter, mais vous devez le changer:
La configuration de base est la suivante:
<propriété name = "proxool.pool_alias"> dbpool </ propriété> <propriété name = "proxool.xml"> test / huatech / conf / proxoolconf.xml </ propriété> <propriété name = "connection.provider_class"> property>
Remarque spéciale: le chemin du fichier suivant doit être configuré correctement, sinon FileNotFound
Le fichier associé: test / huatech / conf / proxoolconf.xml est configuré comme suit:
<? xml version = "1.0" coding = "utf-8"?> <quelque chose-else-envely> <prandool> <lias> dbpool </lias> <! - Proxool ne peut gérer que les connexions générées par lui-même-> <driver-url> jdbc: informrix-sqli: //192.168.0.188: 1526 / db_crm: informrixserver = ol_sx; newlocale = zh_cn, en_us; newcod ESET = GBK, 8859_1,819; </Duver-Url> <Diver-Class> com.informix.jdbc.ifxdriver </Duver-Class> <Deuvre-Properties> <propriété name = "user" value = "informrix" /> <propriété name = "mot de passe" value = "informrix" /> </ driver-properties> <! - Proxool détecte automatiquement l'intervalle de temps (millisecondes) de chaque état de connexion. Si la connexion inactive est détectée, elle sera recyclée immédiatement. Destruction du délai d'attente -> <House-Sleep-Sleep-time> 90000 </ House-Sleep-Sleep-temps> <! - Il se réfère au nombre maximal de demandes d'attente dans la file d'attente car il n'y a pas de connexion inactive à attribuer. Les connexions utilisateur qui dépassent ce nombre de demandes ne seront pas acceptées -> <maximum-new-connections> 20 </ maximum-new-connections> <! - Le nombre minimum de connexions inactives maintenue -> <prototype-compty> 5 </ prototype-compty> <! - Le nombre maximum de connexions autorisées est dépassée. Lorsqu'il y a une demande, il est en file d'attente pour attendre dans la file d'attente. Le nombre maximum de demandes d'attente est déterminé par maximum-new-connections -> <maximum-Connection-Count> 100 </ maximum-Connection-Count> <! - Le nombre minimum de connexions -> <minimum-Connection-Count> 10 </ Minimum-Count-Count> </ Proxool> </nomder-else-entirely>
Méthode 3: Obtenez le pool de connexion à partir du conteneur (comme Tomcat)
Utilisez le pool de connexion propre du serveur: comme Tomcat, Resin, WebLogic, etc.
La configuration hibernate est la suivante: <! - <propriété name = "hibernate.connection.datasource"> java: comp / env / jdbc / crm </ propriété> <propriété name = "show_sql"> true </ propriété> <propriété name = "dialect"> com.huatech.sysframe.webapp.common.dao.hibernate.dialet.baseInformIxDialect </ propriété> <propriété name = "hibernate.generateate_statistics"> true </ propriété> ->
Parmi eux, JDBC / CRM de Java: COMP / ENV / JDBC / CRM est le nom du pool de connexion de la base de données dans le serveur correspondant et doit être configuré dans l'environnement correspondant.
La configuration de Tomcat est décrite dans la première méthode de configuration Tomcat. Notez que le nom de JNDI doit être modifié en fonction de la situation et doit correspondre au nom utilisé par Hibernate.
=================================================.
La configuration ci-dessus nécessite le package JAR pour chaque pool de connexions de base de données, qui est inclus dans le package Hibernate. Si vous avez besoin du dernier, vous pouvez le télécharger à partir de vos sites Web respectifs.
3. Méthode de Spring pour configurer le pool de connexion:
<bean id = "dataSource" destrie-Method = "close"> <propriété name = "DriverClassName"> <value> com.mysql.jdbc.driver </value> </ propriété> <propriété name = "url"> <value> jdbc: Mysql: name = "username"> <value> root </value> </ propriété> <propriété name = "mot de passe"> <value> ****** </ value> </ propriété> <propriété name = "maxactive"> <value> 100 </ value> </ propriété> propriété name = "maxwait"> <value> </ value> </ propriété name = "maxidle"> <value> <value> </ </ </ propriété name = "maxidle"> <value> name = "DefaultAutoCommit"> <value> true </value> </ propriété> <propriété name = "RemoveAbandOned"> // Recyclez automatiquement le pool de connexion pour éviter la fuite du pool de connexion <value> true </value> </ propriété> </ban>
Quatrièmement, qui est également le dernier dont je veux parler aujourd'hui, consiste à configurer le pool de connexions via l'écriture de code, le code est le suivant:
import java.sql. *; import java.sql.datasource; import org.apache.commons.dbcp.basicdatasource; public class ConnectionPool {private static basicDataSource dbs = null; public static dataSource setupDatasource () {bds = neldata bds.sestDriverClassName ("com.mysql.jdbc.driver"); // définir le nom d'utilisateur de connexion bds.sesername ("root"); // définir le mot de passe de connexion bds.setpassword ("root"); de connexions initialisées bds.setinItialSize (50); // définir le nombre total de connexions appliquées simultanément BDS.SetMaxActive (-1); // définir le nombre maximum de connexions dans le pool de tampon BDS.SetMaxidle (-1); // définir le nombre minimum de connexions dans le temps d'attente de buffer BDS.Setminidle (0); // a réglé le temps d'attente long dans le buffer bds. bds.setMaxWait (-1); return (dataSource) bds;} // Méthode pour afficher le nombre de connexions dans le pool de connexions public static void printdatasourCestats (dataSource ds) lève la sqlexception {bds = (basicDatasource) ds; System.out.println (); system.out.out.println ();} // méthode pour fermer le pool de connex ds) lève sqlexception {bds = (BasicDataSource) ds; bds.close ();}} Pour obtenir un pool de connexion, vous ne pouvez utiliser que la méthode statique de cette classe pour configureraSource ().
Ce qui précède est plusieurs méthodes de configuration pour les pools de connexion de la base de données Java qui vous sont présentés (prendre la base de données MySQL comme exemple). J'espère que cela vous sera utile. Si vous avez des questions, veuillez me laisser un message et l'éditeur vous répondra à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!