2012-03-03 15 views
8

This article sugiere que las aplicaciones Tomcat 7 utilicen un conjunto de conexiones JDBC en lugar de un grupo de conexiones commons-dbcp. Sin embargo, este último es el predeterminado para una aplicación de Grails, y no es obvio cómo cambiarlo.configure la aplicación Grails para usar el conjunto de conexiones JDBC

Supongo que tengo que definir un Spring Bean en resources.groovy que sobrescribe un bean que normalmente se crea de manera predeterminada, pero no tengo idea de qué nombre debería tener este bean o qué propiedades debo establecer.

Respuesta

12

Lo más fácil sería usar el plugin jdbc-pool. Dado que las opciones de configuración para este grupo son intencionalmente muy similares a Commons DBCP (están documentadas en here) puede usar el complemento para definir la dependencia de jar y administrar cambiar la clase por usted. El complemento no se ha actualizado en un año, por lo que está un poco desactualizado (el complemento usa la versión 1.0.9.0 pero el latest is 1.0.9.3) por lo que es posible que desee definir la dependencia del complemento excluyendo el jar y agregar uno para la versión más reciente. Está en el repositorio , por lo que deberá agregarlo a BuildConfig.groovy (consulte plugin's version para saber cómo lo hizo).

Hay notas de configuración para el grupo here y una serie de entradas de blog del autor here.

Si desea configurar esto sin usar el plugin, añadir el cesión temporal y la dependencia frasco para BuildConfig.groovy:

repositories { 
    inherits true 
    ... 
    ebr() 
} 

dependencies { 
    runtime('org.apache.tomcat:com.springsource.org.apache.tomcat.jdbc:1.0.9.3') { 
     transitive = false 
    } 
} 

y crear un reemplazo para el grano dataSource en resources.groovy:

import org.apache.tomcat.jdbc.pool.DataSource 

beans = { 

    dataSource(DataSource) { 
     // mandatory 
     driverClassName = '${dataSource.driverClassName}' 
     username = '${dataSource.username}' 
     password = '${dataSource.password}' 
     url = '${dataSource.url}' 
     // optional 
     minEvictableIdleTimeMillis=1800000 
     timeBetweenEvictionRunsMillis=1800000 
     numTestsPerEvictionRun=3 
     testOnBorrow=true 
     testWhileIdle=true 
     testOnReturn=true 
     validationQuery="SELECT 1" 
    } 
} 

Es conveniente usar cadenas de comillas simples con marcadores de posición ${} para aprovechar la funcionalidad de marcador de posición de la propiedad de Spring y mantener las cosas SECAS ya que ya configure el controlador y conecte información en DataSource.groovy.

+0

Creo que usaré el plugin. Haré una nueva versión de ella, que se actualiza a la última versión de la biblioteca de conexiones JDBC. –

3

En DataSource.groovy uso el siguiente:

environments { 
    integration { 
     dataSource { 
      pooled = false 
      jndiName = "java:/comp/env/jdbc/myJndiName" 
     } 
    } 
} 

Y todo lo demás se define por Tomcat - esto sólo debe coincidir con ella. No es necesario definir ningún bean DataSource en resources.groovy

+1

Esto no funcionará al ejecutar la aplicación en modo de desarrollo –

+0

Ah, su pregunta no mencionó el modo de desarrollo. – doelleri

+0

Quiero que mi entorno de desarrollo sea lo más similar posible a la producción para minimizar el potencial de sorpresas. –

Cuestiones relacionadas