Red de conocimiento informático - Problemas con los teléfonos móviles - ¿Hay algún problema con la configuración de la fuente de datos Spring? urgente

¿Hay algún problema con la configuración de la fuente de datos Spring? urgente

Spring incluye dos implementaciones de fuentes de datos en sus paquetes de dependencia de terceros, DBCP y C3P0 de Apache, los cuales se pueden usar para configurar fuentes de datos en archivos de configuración de Spring.

Fuente de datos DBCP

El paquete de clases DBCP se encuentra en /lib/jakarta-commons/commons-dbcp.jar. DBCP es un grupo de conexiones de bases de datos que se basa en el mecanismo del grupo de objetos del grupo común de Yakarta, por lo que también debe contener /lib/jakarta-commons/commons-pool.jar. El siguiente es el fragmento de configuración para configurar la fuente de datos MySql usando DBCP:

código xml

p>

destroy-method="close">

bean>

BasicDataSource proporciona el método close() para cerrar la fuente de datos, por lo que destroy-method= " "Se debe establecer el atributo close" para que la fuente de datos se pueda cerrar correctamente cuando se cierra el contenedor Spring. Además de las propiedades obligatorias de la fuente de datos anteriores, existen otras propiedades de uso común:

Envío automático predeterminado: establezca si la conexión devuelta por la fuente de datos se envía automáticamente; el valor predeterminado es verdadero

defaultReadOnly: establece si la fuente de datos es de solo lectura, el valor predeterminado es falso

defaultReadOnly: establece si la fuente de datos es de solo lectura, el valor predeterminado es falso: establece si los datos la fuente es de solo lectura;

max-method= "close" está configurado en "close".

maxActive: el número máximo de conexiones a la base de datos, no hay límite cuando se establece en 0

maxIdle: el número máximo de conexiones en espera, no hay límite cuando se establece en 0;

maxWait: el número máximo de segundos a esperar, en milisegundos, después del cual el tiempo se informará en el mensaje de error;

validationQuery: se utiliza para verificar la consulta de validación. validationQuery: declaración SQL utilizada para verificar si la conexión es exitosa. Simplemente puede configurarlo para "seleccionar recuento (*) del usuario";

removeAbandoned: si la conexión se interrumpe, el valor predeterminado es falso

removeAbandonedTimeout: cuántos segundos duran los datos; la conexión se desconectará automáticamente después de unos segundos, este valor se proporciona cuando removeAbandoned es verdadero;

logAbandoned: si se registran las interrupciones, el valor predeterminado es falso;

fuente de datos C3P0

C3P0 es un proyecto de implementación de fuente de datos JDBC de código abierto, publicado en el directorio lib junto con Hibernate. Implementa el grupo de conexiones y el grupo de declaraciones descritos en las especificaciones de extensión JDBC3 y JDBC2.

El paquete de clase C3P0 se encuentra en /lib/c3p0/c3p0-0.9.0.4.jar. ComboPooledDataSource"

destroy-method="close">

bean>

ComboPooledDataSource, al igual que BasicDataSource, proporciona una función de método close(), de modo que puede garantizar que la fuente de datos se libere con éxito cuando se cierra el contenedor Spring.

C3P0 tiene un conjunto de propiedades de configuración más rico que DBCP, a través de los cuales se pueden realizar varios controles efectivos en la fuente de datos:

acquireIncrement: el número de nuevas conexiones que C3P0 puede crear al mismo tiempo cuando se agotan las conexiones en el grupo de conexiones;

acquireRetryAttempts: define intentos repetidos de obtener nuevas conexiones después de no poder obtener nuevas conexiones. de la base de datos El número de veces, el valor predeterminado es 30

acquireRetryDelay: el intervalo entre dos conexiones (en milisegundos), el valor predeterminado es 1000

autoCommitOnClose: el valor predeterminado es cuando; la conexión está cerrada Revertir todas las operaciones no confirmadas. El valor predeterminado es falso;

automaticTestTable (tabla de prueba automática): C3P0 creará una tabla vacía llamada Prueba y la probará con su propia declaración de consulta. preferidoTestQuery será ignorado. No puede realizar ninguna operación en esta tabla de prueba, se usará para las pruebas C3P0 y está vacía de forma predeterminada;

breakAfterAcquireFailure: si no se obtiene una conexión, todas las solicitudes serán El hilo. lanza una excepción, sin embargo, la fuente de datos se conservará y continuará intentando obtener una conexión la próxima vez que se llame a getConnection(). Si se establece en verdadero, la fuente de datos se afirmará como desconectada y persistirá después del intento. la obtención de una conexión falla. El valor predeterminado es falso;

checkoutTimeout: cuando se agota el grupo de conexiones, el cliente esperará una nueva conexión después de llamar a getConnection(). el cliente generará una SQLException si el período de tiempo de espera se establece en cero y el cliente esperará indefinidamente. La unidad es milisegundos, el valor predeterminado es 0;

connectionTesterClassName: pruebe la conexión implementando la clase ConnectionTester o QueryConnectionTester. El nombre de la clase debe establecerse en el nombre completo. El valor predeterminado es com.mchange.v2.C3P0.impl.DefaultConnectionTester;

idleConnectionTestPeriod: verifica la cantidad de segundos para las conexiones inactivas en todos los grupos de conexiones. El valor predeterminado es 0, lo que significa que no hay verificación. >

inicialPoolSize: El número de conexiones creadas durante la inicialización, el valor debe estar entre minPoolSize y maxPoolSize.

El valor predeterminado es 3;

maxIdleTime: tiempo máximo de inactividad. Las conexiones que excedan el tiempo de inactividad serán abandonadas. Si el valor es 0 o negativo, la conexión nunca se abandonará. El valor predeterminado es 0;

maxPoolSize: el número máximo de conexiones retenidas en el grupo de conexiones. El valor predeterminado es 15;

maxStatements: parámetro JDBC estándar utilizado para controlar el número de PreparedStatements cargados en la fuente de datos. Sin embargo, dado que la declaración almacenada en caché pertenece a una única conexión, no a todo el grupo de conexiones. Por lo tanto, hay muchos factores a considerar al configurar este parámetro. Si maxStatements y maxStatementsPerConnection son ambos 0, se desactivará el almacenamiento en caché. El valor predeterminado es 0;

maxStatementsPerConnection: el número máximo de declaraciones almacenadas en caché para una única conexión en el grupo de conexiones. El valor predeterminado es 0;

numHelperThreads (número de subprocesos auxiliares): C3P0 se ejecuta de forma asincrónica y las operaciones JDBC lentas se completan a través de procesos auxiliares. Escalar estas operaciones puede mejorar efectivamente el rendimiento al realizar múltiples operaciones simultáneamente con múltiples subprocesos. El valor predeterminado es 3;

preferredTestQuery: define la declaración de prueba que se ejecutará para todas las pruebas de conexión. Cuando se utilizan pruebas de conexión, este parámetro puede mejorar en gran medida la velocidad de la prueba. La tabla que se va a probar debe existir en el momento de la fuente de datos inicial. El valor predeterminado está vacío;

propertyCycle: el número máximo de segundos que se deben esperar antes de que el usuario modifique los parámetros de configuración del sistema. El valor predeterminado es 300;

testConnectionOnCheckout: debido al alto consumo de rendimiento, utilícelo solo cuando sea necesario. Si se establece en "verdadero", se comprobará la validez de cada conexión cuando se envíe. Se recomienda utilizar métodos como idleConnectionTestPeriod o automaticTestTable

para mejorar el rendimiento de las pruebas de conexión. El valor predeterminado es falso;

testConnectionOnCheckin: si se establece en verdadero, se verificará la validez de la conexión cuando se obtenga. El valor predeterminado es falso.

Haga referencia a la propiedad leyendo el archivo de configuración:

class="org.springframework.beans.factory.config. PropertyPlaceholderConfigurer"