2010-08-24 7 views
2

Comment configurer la mise en pool des connexions dans Spring MVC? Je travaille sur un site intranet basé sur Spring MVC 2.5 et jQuery. C'est ma première tentative de développement web.Configurer la mise en pool des connexions dans Spring MVC

Je ne suis pas sûr, mais je ne l'utilise dans mon fichier de configuration de printemps et j'ai vu cela dans l'étape Spring MVC par étape tutoriel

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" 
    destroy-method="close"> 
    <property name="driverClassName" value="${jdbc.driverClassName}" /> 
    <property name="url" value="${jdbc.url}" /> 
    <property name="username" value="${jdbc.username}" /> 
    <property name="password" value="${jdbc.password}" /> 
</bean> 

<bean id="propertyConfigurer" 
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
    <property name="locations"> 
    <list> 
    <value>classpath:jdbc.properties</value> 
    </list> 
    </property> 
</bean> 

Cela semble bon au cours du développement et de la vitesse de connexion est rapide mais Je ne suis pas sûr si cela sera toujours vrai si de nombreux utilisateurs sont connectés simultanément.

Comment puis-je y parvenir? J'ai lu que ce n'est pas une source de données de connexion optimale.

Répondre

2

Vous voudrez peut-être regarder c3p0, qui a une configuration puissante et une optimisation disponible.

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> 
    <property name="driverClass" value="..." /> 
    <property name="jdbcUrl" value="..." /> 
    <property name="user" value="..." /> 
    <property name="password" value="..." /> 
</bean> 
+0

En tant que nouveau printemps développeur, je havent entendu parler de cette C3PO chose. Mais alors que je google sur le net, j'ai trouvé une discussion intéressante à ce sujet. Une question cependant pour éclaircir mes pensées, Si je crée un haricot comme celui que vous avez donné ci-dessus et que j'ajoute le fichier JAR C3PO requis dans mon chemin de construction, puis-je dire que je fais déjà du pooling de connexion? Merci –

+0

"Si je crée un bean comme celui que vous avez donné ci-dessus puis que j'ajoute le fichier jar C3PO requis dans mon chemin de construction, puis-je dire que je fais déjà la connexion?" Oui, vous pouvez, même si vous pourriez dire la même chose avec BasicDataSource (il utilise commons-pool). – earldouglas

1

Votre configuration actuelle est correcte, tout ce que vous devez faire pour utiliser la mise en commun de connexion de base est d'utiliser une implémentation DataSource fourni par une bibliothèque de mise en commun de connexion, dans votre cas Apache DBCP. Voir this post pour quelques liens vers d'autres alternatives, C3P0 étant l'un d'entre eux.

Notez que lorsque vous utilisez réellement le grain de DataSource vous injecter l'envelopper dans un SimpleJdbcTemplate ou utiliser DataSourceUtils pour obtenir une connexion - voir Spring JDBC Documentation

1
For connection Pooling 

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" 
    destroy-method="close"> 
    <property name="driverClassName" value="${jdbc.driverClassName}" /> 
    <property name="url" value="${jdbc.url}" /> 
    <property name="username" value="${jdbc.username}" /> 
    <property name="password" value="${jdbc.password}" /> 

//Add this two more parameters 
    <property name="**initialSize**" value="20" /> 
    <property name="**maxActive**" value="30" /> 


</bean> 

connection pool will create 20 database connection as initialSize is 20 and goes up to 30 Database connection if required as maxActive is 30.