Testé sous Windows XP et Debian, avec MySQL et PostgreSQL.
La webapp a les lignes suivantes dans WEB-INF/web.xml :
<resource-ref><res-ref-name>jdbc/janitorDB</res-ref-name><res-type>javax.sql.DataSource</res-type><res-auth>Container</res-auth></resource-ref>
Et dans META-INF/context.xml (important) :
<Contextpath="/avpoc-webapp-datasource"reloadable="true"antiJARLocking="true"antiResourceLocking="true"></Context>
La déclaration de la DataSource jdbc/myJndiName dans Tomcat 5.5 peut se faire de la façon suivante.
D'abord dans conf/server.xml, pour par exemple MySQL :
<Resourcename="jdbc/myJndiName"type="javax.sql.DataSource"password="myPassword"driverClassName="com.mysql.jdbc.Driver"maxIdle="2"maxWait="5000"username="myUsername"url="jdbc:mysql://localhost:3306/myDbName?autoReconnect=true"maxActive="4"/>
Pour PostgreSQL ça donne quelque chose comme ça :
<Resourcename="jdbc/myJndiName"auth="Container"type="javax.sql.DataSource"driverClassName="org.postgresql.Driver"url="jdbc:postgresql://127.0.0.1:5432/myDatabaseName"username="myUsername"password="myPassword"maxActive="20"maxIdle="10"maxWait="-1"/>
Ensuite dans conf/context.xml :
<ResourceLinkglobal="jdbc/myJndiName"name="jdbc/myJndiName"type="javax.sql.DataSource"/>
On peut également mettre directement dans conf/context.xml la configuration de la <Resource> mais c'est moins propre.
En tout cas si on ne met rien du tout dans conf/context.xml on obtient :
org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:780)at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:540)at com.avcompris.avpoc.webapp.PocDataSourceServlet.executePoc(PocDataSourceServlet.java:86)at com.avcompris.avpoc.webapp.PocDataSourceServlet.service(PocDataSourceServlet.java:42)at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)atA org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)at java.lang.Thread.run(Thread.java:595)Caused by: java.sql.SQLException: No suitable driverat java.sql.DriverManager.getDriver(DriverManager.java:243)at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:773)... 18 more
Aucun commentaire:
Enregistrer un commentaire