2010-07-20 15 views
7

Tengo una aplicación web maven de varios módulos que utiliza hibernate.Uso de Maven para implementar en Embedded Tomcat con un Datasource

Uso el objetivo de ejecución de tomcat: para ejecutarlo en el servidor de tomcat incrustado de maven. Todo funciona bien hasta ahora.

Pero ahora necesito cambiar de una configuración explicite jdbc en hibernate.properties a un origen de datos. Hice lo siguiente:

  • hibernate.properties modificados

de

hibernate.connection.driver_class=oracle.jdbc.OracleDriver 
hibernate.connection.url=jdbc:somejdbcurl 
hibernate.connection.username=aUser 
hibernate.connection.password=aPassword 

a

hibernate.connection.datasource=java:comp/env/jdbc/datasourcename 
  • en web.xml añadí
<resource-ref> 
    <res-ref-name>jdbc/datasourcename</res-ref-name> 
    <res-type>javax.sql.DataSource</res-type> 
    <res-auth>Container</res-auth> 
</resource-ref> 
  • añadió una context.xml junto a la web.xml con el siguiente contenido:
<Context> 
    <Resource name="jdbc/datasourcename" 
     auth="Container" 
     type="javax.sql.DataSource" 
     username="aUser" password="aPassword" 
     driverClassName="oracle.jdbc.OracleDriver" 
     url="jdbc:somejdbcurl" 
     maxActive="2" maxIdle="2"/> 
</Context> 

esto no funciona, que es esperado, ya que no encontré una manera de proporcionar el archivo jar, que contiene el controlador jdbc de Oracle. Yo esperaba una excepción ClassNotFound o algo similar, pero en cambio me dieron un

org.hibernate.exception.GenericJDBCException: Cannot open connection 

con una causa raíz hacia abajo en la pila:

Caused by: org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null' 

Soooooo las preguntas son:

  • Por qué doesn 't tomcat sabe que quiero que use Oracle Driver?
  • ¿Cómo le digo al tomcat sobre el archivo jar que contiene el controlador?

Respuesta

11

es necesario agregar el controlador JDBC dentro de la declaración plugin:

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>tomcat-maven-plugin</artifactId> 
    <version>1.0</version> 
    <configuration> 
    ... 
    </configuration> 
    <dependencies> 
    <dependency> 
     <groupId>...</groupId> 
     <artifactId>...</artifactId> 
     <version>...</version> 
    </dependency> 
    </dependencies> 
</plugin> 

Por cierto, el valor por defecto para el contextFile es src/main/webapp/META-INF/context.xml.

+0

que parece prometedor, intentaré eso mañana –

+0

gracias por señalar la ubicación predeterminada del archivo de contexto .. Pasé unas horas persiguiendo eso .. –

Cuestiones relacionadas