1. Источник данных конфигурации:
Обязательное условие: вам нужно поместить подключенный пакет JAR DARBASE DARBASE DARBASE в каталог LIB под общей папкой в каталоге установки TOMCAT.
1. Метод 1: Создайте мета-инф в папке под WebRoot и создайте в нем файл context.xml следующим образом:
<?xml version="1.0" encoding="UTF-8"?><Context><Resource name="jdbc/chaoshi" auth="Container"type="javax.sql.DataSource"maxActive="50" maxIdle="30" maxWait="10000" logAbandoned="true"username="root" password="root" DriverClassName = "com.mysql.jdbc.driver" url = "jdbc: mysql: // localhost: 3306/dbname"> </resource> </context>
Метод 2: В контексте. Xml ниже конфликта Directory Tomcat, измените исходный тег контекста и измените его на:
<Stext> <!-набор контролируемых ресурсов по умолчанию-> <ThorchEdresource> web-inf/web.xml </watchedresource> <resource name = "jdbc/test" auth = "container" = "javax.sql.datasource" maxactive = "50" maxidle = "30" maxwait = "10000" logAmAneN "=" true "root" root "=" true "=" true "=" rOy "rOy» = "true" rOy »=" true "=" rOy "=" rOy "=" rOy ". password = "root" driverclassname = "com.mysql.jdbc.driver" url = "jdbc: mysql: // localhost: 3306/testdb"/> </context>
Метод 3: При настройке виртуального каталога, то есть при настройке Server.xml ниже Conf, измените его на тег контекста:
<Context path="/WebRoot" reloadable="true" docBase="E:/workspace/DataSource/WebRoot" ><Resource name="jdbc/test" auth="Container"type="javax.sql.DataSource"maxActive="50" maxIdle="30" maxWait="10000"logAbandoned="true"username="root" password = "root" driverclassname = "com.mysql.jdbc.driver" url = "jdbc: mysql: // localhost: 3306/testdb"/> </context>
</Значение каждого атрибута в теге ресурса в файле конфигурации:
DriverClassName - полное имя класса драйверов базы данных, используемое JDBC.
MAXACTICE - максимальное количество активных соединений, обеспечиваемых пулом соединений одновременно.
maxidle - максимальное количество соединений, которые пул соединений содержит во время простоя.
MAXWAIT - максимальное количество миллисекундов, которое база данных ждет, когда происходит исключение (когда нет доступного соединения).
Имя пользователя - Имя входа в систему при подключении к базе данных
Пароль - пароль для подключения к базе данных.
URL - URL для водителя. (DriverName также разрешено для обратной совместимости.)
Тестовый код:
Context initContext = new initialContext (); Context envContext = (context) initContext.lookup ("java:/comp/env"); dataSource ds = (dataSource) envContext.lookup ("jdbc/test"); System.out.println (ds.getConnection ());Если это не нулевое, это должно быть успешным.
Обратите внимание, что при тестировании вы должны проверить его в Tomcat, то есть он должен быть в контейнере Tomcat (не беспокойтесь, напишите простую страницу JSP, чтобы проверить его и использовать <%...%>, что довольно просто). Если он не будет проверен в контейнере Tomcat, будет брошено исключение:
... javax.naming.noinitialContexTexTexception: необходимо указать имя класса в среде или свойстве системы или в качестве параметра апплета, или в файле ресурса приложения: java.naming.factory.initial
2. Есть три способа настройки пулов соединений в Hibernate:
Метод 1 Используйте собственный пул соединений Hibernate.
<Hibernate-configuration> <session-factory> <!-Драйвер JDBC-> <name = "connection.driver_class"> com.mysql.jdbc.driver </property> <!-URL для подключения к базе данных-> <property name = "connect.url"> jdbc: mysql: // localhost: 3306/for wyfie <//feail <//localhost: 3306/feifie <//feisti <//localhost: 3306/feifie <//localhost: 3306/feifie <//feisti. Соединение-> <name name = "connection.username"> root </property> <!-пароль входа в систему-> <name = "connection.password"> </property> <!-Будь то вывод SQL, сгенерированного во время запуска в журнал для отладки-> <name = "show_sql"> true </property> <! name = "dialect"> org.hibernate.dialect.mysqlidialect </property> <!-Ресурсы картирования-> <Картографический ресурс = "/xx/xx.hbm.xml"/> </session-factory> </hibernate-configuration> Моя собственная конфигурация следующая, комментированная часть является публичной, и другие пулы соединений должны использоваться! <hibernate-configuration> <session-factory> <property name = "show_sql"> true </property> <!-common conf dbcp/c3p0 effect <propertive name = "connection.username"> informix </properate> <proportment = "connection.password"> informix </propertive> <proportive = "connection.driver_class"> com.informix. name = "connection.url"> jdbc: informix-sqli: //192.168.0.188: 1526/db_crm: informixserver = ol_sx; newlocale = zh_cn, en_us; newcodeset = gbk, 8859_1,819; name = "dialect"> com.huatech.sysframe.webapp.common.dao.hibernate.dialet.baseinformixdialect </property>-> ... ... ... ... </session-factory> </hibernate-configuration>
Метод 2: Используйте пул соединений базы данных, указанный в файле конфигурации.
Пул соединений теперь имеет DBCP, C3P0 и Proxoop. На самом деле, я знал DBCP
Среди них конфигурация DBCP и C3P0 должна добавить только некоторые конфигурации в вышеуказанную конфигурацию, а Hibernate автоматически идентифицирует пул соединений базы данных.
Чтобы настроить DBCP, вам нужно присоединиться:
<!- dbcp conf <name = "dbcp.maxactive"> 100 </property> <name = "dbcp.whenexhaustedaction"> 1 </property> <name = "dbcp.maxwait"> 60000 </property> <property name = "dbcp.maxidle"> 10 </property name = "dbcp.ps.maxactive"> 100 </property> <property name = "dbcp.ps.maxactive"> 100 </property> <name = "dbcp.ps.whenexhaustedaction"> 1 </property> <name = "dbcp.ps.maxwait"> 60000 </property> <property name = "dbcp.ps.maxwait"> 60000 </properation> <свойство = "dbcp.ps.
Чтобы настроить C3P0, вам нужно присоединиться:
<!-c3p0 conf <name = "c3p0.min_size"> 5 </property> <name = "c3p0.max_size"> 30 </property> <name = "c3p0.time_out"> 1800 </property> <name = "c3p0.max_statement"> 50 </property>->->->->->->
Конфигурация Proxoop немного отличается. Вы не можете просто добавить его, но вам нужно изменить:
Основная конфигурация заключается в следующем:
<имя свойства = "proxool.pool_alias"> dbpool </property> <name = "proxool.xml"> test/huatech/conf/proxoolconf.xml </property> <name = "connection.provider_class"> org.hibernate.connection.proxoolconnectionprovider </propertive> propertive>
Специальное примечание: путь следующего файла должен быть настроен правильно, в противном случае FileNotFound
Связанный файл: тест/huatech/conf/proxoolconf.xml настроен следующим образом:
<? xml version = "1.0" Encoding = "UTF-8"?> <Something-else-erever> <proxool> <alias> dbpool </alias> <!-Proxool может управлять только соединениями, сгенерированными для Сам-> <Driver-url> jdbc: Informix-Sqli: //192.168.0.188: 1526/db_crm: informixserver = ol_sx; newlocale = zh_cn, en_us; newcod ESET = GBK, 8859_1,819; </Driver-url> <Драйвер-класс> com.informix.jdbc.ifxdriver </driver-class> <Driver-properties> <свойство name = "user" value = "informix" /> <name = "password" value = "informix" /> < /driver-properties> <!-Proxool автоматически обнаруживает интервал времени (миллисекунд) каждого состояния соединения. Если соединение холостого хода будет обнаружено, оно будет немедленно переработано. Уничтожение тайм-аута-> <Домашнее время сна время> 90000 </house-hearting-sleep-time> <!-Это относится к максимальному количеству запросов, ожидающих в очереди, потому что не существует холостого соединения, которое будет выделено. Пользовательские подключения, которые превышают это количество запросов, не будут приняты-> <максимальные новые соединения> 20 </максимальные новые соединения> <!-Минимальное количество подключений к холостовым подключениям-> <Прототип-count> 5 </prototype-count> <!-Максимальное количество разрешенных подключений. Когда есть запрос, он будет стоить в очереди в очереди. Максимальное количество запросов на ожидание определяется максимально новыми соединениями-> <максимальное соединение> 100 </максимальное соединение> <!-Минимальное количество соединений-> <Минимальное соединение> 10 </минимальное соединение> </proxool> </come-else-entry>
Метод 3: Получите пул соединений из контейнера (например, Tomcat)
Используйте собственный пул подключений сервера: например, Tomcat, смола, Weblogic и т. Д.
Конфигурация Hibernate выглядит следующим образом: <!-<name = "hibernate.connection.datasource"> java: comp/env/jdbc/crm </property> <name = "show_sql"> true </property> <свойство name = "dialect"> com.huatech.sysframe.webapp.common.dao.hibernate.dialet.baseinformixdialect </property> <name = "hibernate.generate_statistics"> true </property>->
Среди них JDBC/CRM Java: Comp/Env/JDBC/CRM является именем пула соединений базы данных на соответствующем сервере, и его необходимо настроить в соответствующей среде.
Конфигурация Tomcat описана в первом методе конфигурации Tomcat. Обратите внимание, что имя JNDI должно быть изменено в соответствии с ситуацией и должно соответствовать имени, используемому Hibernate.
==============================================================================
Приведенная выше конфигурация требует пакета JAR для каждого пула соединений базы данных, который включен в пакет Hibernate. Если вам нужен последний, вы можете скачать его с соответствующих веб -сайтов.
3. Spring метод настройки пула соединений:
<bean id = "dataSource" dressome-method = "close"> <property name = "DriverClassName"> <Dague> com.mysql.jdbc.driver </value> </property> <name = "url"> <value> jdbc: mysql: // localhost: 3306/dbname </value> </value> name="username"><value>root</value></property><property name="password"><value>******</value></property><property name="maxActive"> <value>100</value></property><property name="maxWait"><value>1000</value></property><property name="maxIdle"><value>30</value></property><property name = "defaultautocommit"> <dalue> true </value> </property> <name = name = "removeabandone"> // автоматически переработать пул соединений, чтобы избежать утечки пула соединений <значение> true </value> </property> </bean>
В -четвертых, что также является последним, о чем я хочу поговорить сегодня, - это настройка пула соединений с помощью написания кода, код заключается в следующем:
Импорт java.sql.*; import java.sql.datasource; import org.apache.commons.dbcp.basicdatasource; открытый класс ConnectionPool {private Static BasicDatasource dbs = null; public Static DataSource setupDatasource () {bds = new BasicDatasource () set the Grim bds.sestdriverclassname ("com.mysql.jdbc.driver"); // Установить имя пользователя подключения bds.setusernam Инициализированные соединения Bds.SetInitialSize (50); // Установить общее количество подключений, применяемых одновременно BDS.SetMactactive (-1); // Установить максимальное количество соединений в пуле буферов BDS.SetMaxidle (-1); // Установить минимальное количество соединений в пуле буферов. bds.setmaxwait (-1); return (dataSource) bds;} // Метод отображения количества соединений в пуле подключений Public void printDatasourcestats (dataSource ds) Throws sqlexception {bds = (basicdatasource) ds; system.out.println (); System.out.println (); // medode to close publice static static static static statice voidce DS) Throws SQLexception {bds = (basicDatasource) ds; bds.close ();}} Чтобы получить пул соединений, вы можете использовать только статический метод этого класса для configuredatasource ().
Выше приведены несколько методов конфигурации для бассейнов подключений к базе данных Java, введенных вам (в качестве примера, взяв базу данных MySQL). Я надеюсь, что это будет полезно для вас. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит вам вовремя. Большое спасибо за вашу поддержку сайту wulin.com!