¿Qué significa la reutilización de conexiones de agrupación de conexiones de Tomcat?
DBCP puede administrar de forma centralizada todas las conexiones en una aplicación web, crear múltiples conexiones a la base de datos por adelantado, obtener conexiones del grupo de conexiones cuando el usuario las necesita y devolver las conexiones al grupo de conexiones después de su uso. Para utilizar DBCP, primero debe configurar una fuente de datos JNDI.
Configuración de fuentes de datos JNDI
DBCP se puede implementar utilizando una variedad de tecnologías. Este libro presentará el DBCP más popular de Jakarta-Commons.
Existe un problema con el uso de la agrupación de conexiones: la aplicación web debe cerrar explícitamente el objeto ResultSet, el objeto Statement y el objeto Connection. Si el cierre falla, estos objetos no se pueden reutilizar. La aplicación web debe cerrar explícitamente los objetos ResultSet, los objetos Statement y los objetos Connection; si no los cierra, estos objetos no serán reutilizables y es posible que la aplicación web no pueda conectarse a la base de datos cuando se agote la conexión.
Jakarta-Commons DBCP proporciona un mecanismo para rastrear y recuperar conexiones no administradas. Para rastrear y recuperar conexiones no administradas, debe agregar el siguiente código al configurar la fuente de datos:
removeAbandoned="true"
El grupo de conexiones busca cuando hay menos conexiones disponibles y reutilizar la conexión no administrada. Puede utilizar la propiedad removeAbandonedTimeout para establecer el número de segundos después de los cuales una conexión está inactiva antes de que se considere abandonada. El valor predeterminado es 300 segundos. Para cambiarlo a 60 segundos, use el siguiente código:
removeAbandonedTimeout="60"
Puede configurar la propiedad logAbandoned para registrar el código que no libera la conexión correctamente: p>
logAbandoned="true"
Configurar server.xml
El archivo server.xml se encuentra en el subdirectorio conf del directorio de instalación de Tomcat.
Agregue el siguiente código antes de :
debug="5" reloadable="true " crossContext="true"> maxActive="100" maxIdle ="30" maxWait="10000" nombre de usuario="j2ee" contraseña="j2ee" driverClassName="oracle.jdbc.driver.jdbc :oracle:thin:@127.0.0.1:1521:orcl"/>
maxWait="10000" nombre de usuario="j2ee" contraseña="j2ee" driverClassName="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@127.0 . 0.1:1521:orcl"/> El significado de cada atributo es el siguiente: 1 maxActive: el número máximo de conexiones en el grupo. Asegúrese de que el número máximo de conexiones MySQL sea mayor que este valor. Si es 0, no hay límite en el número máximo de conexiones. 2 maxIdle: el número máximo de conexiones de bases de datos inactivas en el grupo. Si -1, no hay límite. 3 axWait: El tiempo máximo de espera para que una conexión esté disponible, en ms, en este caso 10 segundos, se lanzará una excepción si se agota el tiempo de espera. Si se establece en -1, esperará indefinidamente 4 Nombre de usuario y contraseña: nombre de usuario y contraseña para conectarse a la base de datos MySQL 5 driverClassName: nombre del controlador JDBC para la base de datos MySQL, El El nombre del controlador en este ejemplo es com.mysql.jdbc. 6 url: El parámetro autoReconnect=true garantiza que el grupo de conexiones se vuelva a conectar y el administrador de mysql cerrará la conexión si no se realiza ninguna operación dentro de 8 horas. Configurando web.xml Necesita configurar web.xml para la aplicación actual, su función principal es declarar la fuente de datos. El código es el siguiente: xmlns:xsi="/xml/ns/j2ee version="2.4" > p> /descripción> Usar el grupo de conexiones para acceder a la base de datos Usar el grupo de conexiones para acceder a la base de datos y acceder directamente a una base de datos usando JDBC es básicamente lo mismo, excepto cómo se obtiene la conexión. . El siguiente código muestra cómo obtener una conexión de base de datos cuando se utiliza la agrupación de conexiones. importar javax.naming.Context; importar javax.naming.InitialContext; importar javax.naming.DataSource; público clase DBPool { grupo de origen de datos estático privado; estático { Contexto env = null; prueba {< env = (Contexto) new InitialContext().lookup("java:comp/env"); pool = (DataSource)env.lookup("java:comp/env"); } } fuente de datos estática pública getPool() { grupo de retorno; } } Configure el grupo de conexiones de la base de datos global: 1. Coloque el archivo JAR del controlador de la base de datos en common/lib de Tomcat; 2 Configure la fuente de datos en server.xml, tomando la base de datos Oracle como ejemplo, de la siguiente manera: En nombre="jdbc/connpool" tipo="javax.sql.DataSource" contraseña="j2ee" driverClassName =" oracle .jdbc.driver.OracleDriver"