2010-07-20 9 views
7

Ho un'applicazione web Maven multi modulo, che utilizza la modalità di sospensione.Uso di Maven per la distribuzione su Embedded Tomcat con un'origine dati

Io uso il tomcat: esegui l'obiettivo per eseguirlo sul server tomcat incorporato di Maven. Tutto funziona bene finora.

Ma ora ho bisogno di passare da una configurazione jdbc explicite in hibernate.properties a un'origine dati. Ho fatto la seguente:

  • mutate hibernate.properties

da

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 
  • in web.xml ho aggiunto
<resource-ref> 
    <res-ref-name>jdbc/datasourcename</res-ref-name> 
    <res-type>javax.sql.DataSource</res-type> 
    <res-auth>Container</res-auth> 
</resource-ref> 
  • aggiunto un context.xml accanto al web.xml con il seguente contenuto:
<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> 

Questo non funziona, che è atteso, dal momento che non ho trovato un modo per fornire il file jar, contenente il driver jdbc di Oracle. Mi aspettavo un'eccezione ClassNotFound o qualcosa di simile, ma invece ho avuto un

org.hibernate.exception.GenericJDBCException: Cannot open connection 

con una causa principale verso il basso nello stack:

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

Soooooo le domande sono:

  • Perché doesn sapete che voglio usare il driver Oracle?
  • Come si comunica al tomcat il file jar che contiene il driver?

risposta

11

è necessario aggiungere il driver JDBC all'interno della dichiarazione 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> 

Tra l'altro, il valore predefinito per la contextFile è src/main/webapp/META-INF/context.xml.

+0

che sembra promettente, ci proverò domani –

+0

grazie per aver segnalato il contesto di defaultFile posizione .. ho passato un paio d'ore a inseguirlo .. –

Problemi correlati