2011-03-09 10 views
5

Tengo una aplicación web basada en Spring que se ejecuta bajo tomcat 6. Ahora, quiero usar la agrupación de conexiones c3p0 en lugar del DBCP predeterminado de tomcat. Así, desde el c3p0 help doc, he definido el origen de datos en context.xml algo como:Uso de la conexión c3p0 Puesta en común en una aplicación Tomcat Spring

<Resource name="jdbc/sample" auth="Container" 
    driverClassName="oracle.jdbc.driver.OracleDriver" 
    url="jdbc:oracle:thin:@someServer:1551:xyz" 
    username="userName" 
    password="pwd" 
    validationQuery="SELECT 1 FROM dual" 
    testOnBorrow="true" 
    testWhileIdle="true" 
    factory="org.apache.naming.factory.BeanFactory" 
    type="com.mchange.v2.c3p0.ComboPooledDataSource" 
    maxPoolSize="20" 
    minPoolSize="5" 
    acquireIncrement="1" 
    /> 

Ahora, la documentación dice, que debe incluir lo siguiente en web.xml:

<resource-ref> 
    <res-ref-name>jdbc/sample</res-ref-name> 
    <res-type>javax.sql.DataSource</res-type> 
    <res-auth>Container</res-auth> 
</resource-ref> 

también tengo la siguiente en applicationContext.xml:

<jee:jndi-lookup id="sampleDataSource" resource-ref="true" 
    jndi-name="jdbc/sample" /> 

Cuando comienzo el gato, me sale

javax.naming.NameNotFoundException: Nombre JDBC no está obligado en este contexto

Sin c3p0 y el uso de la agrupación de conexiones por defecto en tomcat6 funciona bien.

Cualquier ayuda sería apreciada.

+0

¿Por qué quieres hacer esto? Lo dijiste tú mismo: "la agrupación de conexiones predeterminada en tomcat6 funciona bien" – skaffman

+1

¿Por qué no se define el origen de datos directamente en * applicationContext.xml * y se omite el jndi y se nombran por completo ?. –

+0

Si no está resuelto: intente con '' o ' ' – micfra

Respuesta

0

Se necesita una entrada en context.xml así, por ejemplo .:

<Context antiJARLocking="true" swallowOutput="true"> 

    <ResourceLink 
    global="jdbc/sample" 
    name="jdbc/sample" 
    type="javax.sql.DataSource" /> 
</Context> 

Me acuerdo en que J2EE tiene demasiados niveles de indirección. Tenga en cuenta que context.xml puede residir en el directorio "conf" de Tomcat o en el directorio META-INF de la aplicación web (dependiendo de si desea que la fuente de datos sea para todas las aplicaciones web o solo una específica). Con las entradas context.xml, no necesita el recurso-ref en web.xml.

4

este hilo es antiguo, por lo que la respuesta es para su uso futuro - tuve el mismo problema (así es como llegué a este hilo).

resolví el problema después de realizar una pequeña investigación. hay algunas definiciones que la fuente de datos utilizada no admite. cuando elimina esas definiciones y cambia el nombre de otras, la fuente de datos se crea sin problemas y sin necesidad del resourceLink mencionado anteriormente.

En el siguiente enlace puede encontrar la lista de definiciones compatibles. http://www.mchange.com/projects/c3p0/#tomcat-specific

el siguiente enlace es al documento de origen de Java de la fuente de datos. de acuerdo con los métodos que se enumeran allí, puede configurar la etiqueta de recurso en el archivo context.xml. http://www.mchange.com/projects/c3p0/apidocs/com/mchange/v2/c3p0/ComboPooledDataSource.html

Cuestiones relacionadas