Red de conocimiento informático - Problemas con los teléfonos móviles - ¿Qué significa la reutilización de conexiones de agrupación de conexiones de Tomcat?

¿Qué significa la reutilización de conexiones de agrupación de conexiones de Tomcat?

Múltiples códigos de configuración de grupos de conexiones en Tomcat Para sitios web grandes, la cantidad de consultas de información será muy grande y cada consulta requiere un proceso de este tipo: cargar el controlador, crear una conexión, crear objetos de declaración, ejecutar declaraciones SQL y cerrar estos objetos. Establecer y liberar conexiones de bases de datos consume mucho tiempo del sistema. Si todos los usuarios pueden disfrutar plenamente de la conexión, solo necesitarán crear una conexión una vez y aquellos que necesiten conectarse podrán usarla, lo que puede reducir en gran medida el tiempo para crear una conexión. Para que todos los usuarios disfruten de las conexiones y las utilicen cuando sea necesario, se necesita un mecanismo especial para crear conexiones. La tecnología del grupo de conexiones de la base de datos (Dababase Connection Pool, DBCP para abreviar) está diseñada para resolver este problema.

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:

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" >

Aplicación de prueba MySQL.

/descripción>

Conexión DB

jdbc/TestDB

javax.sql.DataSource

Contenedor

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"