ETAPE 1 : Définition de la datasource au niveau de la configuration du serveur d'application

Pour déclarer une datasource il modifier le fichier server.xml de tomcat.

Il faut aussi penser à mettre le .jar gérant le driver BD dans le répertoire "Tomcat\common\lib" comme on l'aurait dans le cas de l'utilisation d'un accès jdbc direct. Par exemple pour DB2, il faut récupérer le fichier db2java.zip fourni par db2 et le placer dans "Tomcat\common\lib" en le renommant en db2java.jar

1/ Solution 1 : Modifier directement server.xml

 

<Context path="/DBTest" docBase="DBTest"
debug="0" reloadable="true" crossContext="true">

<Resource name="jdbc/TestDB"
auth="Container"
type="javax.sql.DataSource"/>

<ResourceParams name="jdbc/TestDB">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>

<!-- Maximum number of dB connections in pool. Make sure you
configure your mysqld max_connections large enough to handle
all of your db connections. Set to 0 for no limit.
-->
<parameter>
<name>maxActive</name>
<value>100</value>
</parameter>

<!-- Maximum number of idle dB connections to retain in pool.
Set to 0 for no limit.
-->
<parameter>
<name>maxIdle</name>
<value>30</value>
</parameter>

<!-- Maximum time to wait for a dB connection to become available
in ms, in this example 10 seconds. An Exception is thrown if
this timeout is exceeded. Set to -1 to wait indefinitely.
-->
<parameter>
<name>maxWait</name>
<value>10000</value>
</parameter>

<!-- DB2 dB username and password for dB connections -->
<parameter>
<name>username</name>
<value>db2admin</value>
</parameter>
<parameter>
<name>password</name>
<value>db2admin</value>
</parameter>

<!-- Class name for DB2 UDB JDBC driver -->
<parameter>
<name>driverClassName</name>
<value>COM.ibm.db2.jdbc.app.DB2Driver</value>
</parameter>

<!-- The JDBC connection url for connecting to your DB2 dB. -->
<parameter>
<name>url</name>
<value>jdbc:db2:TSTVABD</value>
</parameter>
</ResourceParams>
</Context>

2/ solution 2 : Utiliser la console d'administration de tomcat :

La définition d'une datasource est incluse dans les ressources.

Attention : Comme c'est une GlobalNamingResource qui est ajoutée au server.xml, elle n'est pas limitée à un seul Context et il faut déclarer un lien pour chaque Context qui peut y accéder. Cette solution permet d'éviter la section <resource-ref> du fichier web.xml (nous conseillons néanmoins de conserver cette déclaration qui servira en cas déploiement de l'application web sous websphere) et simplifie l'écriture du server.xml à :

<Context path="/DBTest" docBase="DBTest"
debug="5" reloadable="true" crossContext="true">
<ResourceLink
name="jdbc/TestDB"
global="jdbc/TestDB"
type="javax.sql.DataSource"/>
</Context>

ETAPE 2 : Déclaration de la datasource au niveau de l'application web

Pour déclarer la datasource il faut modifier le fichier web.xml de la web-app.

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>LoadGenericFile</servlet-name>
<servlet-class>com.hardis.adelia.services.LoadGenericFile</servlet-class>
</servlet>
....
<servlet-mapping>
<servlet-name>LoadGenericFile</servlet-name>
<url-pattern>/LoadGenericFile</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>30</session-timeout>
</session-config>
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/TestDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>

ETAPE 3 : Utilisation dans Adélia web


Les programmes doivent être générés en mode sans conservation des connexions (= mode "poolé") et les serveurs logiques en mode "local".

Dans la configuration serveur (MWSERVER.INI) définir un SGBD de type "Datasource" et indiquer le nom de la Datasource.

Généralement on n'indique pas de profil et de mot de passe de connexion car les connexions se font avec le profil et le mode passe indiqués lors de la définition de la datasource dans le serveur d'application. Pour Tomcat (tests fait en 4.1.30 et 5.0) il faut absolument laisser à blanc le profil et le mot de passe.



Liens web :

http://tomcat.apache.org/tomcat-4.1-doc/jndi-datasource-examples-howto.html

http://christophej.developpez.com/tutoriel/j2ee/pooltomcat/

Articles connexes