Wiki source code of Datasources et Tomcat

Last modified by Julien EYMERY on 2015/09/09 09:24

Show last authors
1 (((
2 == ETAPE 1 : Définition de la datasource au niveau de la configuration du serveur d'application ==
3 )))
4
5 Pour déclarer une datasource il modifier le fichier server.xml de tomcat.
6
7 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
8 (((
9 === 1/ Solution 1 : Modifier directement server.xml ===
10 )))
11
12
13
14 {{code language="none"}}
15 <Context path="/DBTest" docBase="DBTest"
16 debug="0" reloadable="true" crossContext="true">
17
18 <Resource name="jdbc/TestDB"
19 auth="Container"
20 type="javax.sql.DataSource"/>
21
22 <ResourceParams name="jdbc/TestDB">
23 <parameter>
24 <name>factory</name>
25 <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
26 </parameter>
27
28 <!-- Maximum number of dB connections in pool. Make sure you
29 configure your mysqld max_connections large enough to handle
30 all of your db connections. Set to 0 for no limit.
31 -->
32 <parameter>
33 <name>maxActive</name>
34 <value>100</value>
35 </parameter>
36
37 <!-- Maximum number of idle dB connections to retain in pool.
38 Set to 0 for no limit.
39 -->
40 <parameter>
41 <name>maxIdle</name>
42 <value>30</value>
43 </parameter>
44
45 <!-- Maximum time to wait for a dB connection to become available
46 in ms, in this example 10 seconds. An Exception is thrown if
47 this timeout is exceeded. Set to -1 to wait indefinitely.
48 -->
49 <parameter>
50 <name>maxWait</name>
51 <value>10000</value>
52 </parameter>
53
54 <!-- DB2 dB username and password for dB connections -->
55 <parameter>
56 <name>username</name>
57 <value>db2admin</value>
58 </parameter>
59 <parameter>
60 <name>password</name>
61 <value>db2admin</value>
62 </parameter>
63
64 <!-- Class name for DB2 UDB JDBC driver -->
65 <parameter>
66 <name>driverClassName</name>
67 <value>COM.ibm.db2.jdbc.app.DB2Driver</value>
68 </parameter>
69
70 <!-- The JDBC connection url for connecting to your DB2 dB. -->
71 <parameter>
72 <name>url</name>
73 <value>jdbc:db2:TSTVABD</value>
74 </parameter>
75 </ResourceParams>
76 </Context>
77 {{/code}}
78
79 (((
80 === 2/ solution 2 : Utiliser la console d'administration de tomcat : ===
81 )))
82
83 La définition d'une datasource est incluse dans les ressources.
84
85 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 à :
86
87
88 {{code language="xml" language="xml"}}
89 <Context path="/DBTest" docBase="DBTest"
90 debug="5" reloadable="true" crossContext="true">
91 <ResourceLink
92 name="jdbc/TestDB"
93 global="jdbc/TestDB"
94 type="javax.sql.DataSource"/>
95 </Context>
96
97 {{/code}}
98
99 (((
100 == ETAPE 2 : Déclaration de la datasource au niveau de l'application web ==
101 )))
102
103 Pour déclarer la datasource il faut modifier le fichier web.xml de la web-app.
104
105
106
107 {{code language="xml" language="xml"}}
108 <?xml version="1.0" encoding="ISO-8859-1"?>
109 <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
110 "http://java.sun.com/dtd/web-app_2_3.dtd">
111 <web-app>
112 <servlet>
113 <servlet-name>LoadGenericFile</servlet-name>
114 <servlet-class>com.hardis.adelia.services.LoadGenericFile</servlet-class>
115 </servlet>
116 ....
117 <servlet-mapping>
118 <servlet-name>LoadGenericFile</servlet-name>
119 <url-pattern>/LoadGenericFile</url-pattern>
120 </servlet-mapping>
121 <session-config>
122 <session-timeout>30</session-timeout>
123 </session-config>
124 <resource-ref>
125 <description>DB Connection</description>
126 <res-ref-name>jdbc/TestDB</res-ref-name>
127 <res-type>javax.sql.DataSource</res-type>
128 <res-auth>Container</res-auth>
129 </resource-ref>
130 </web-app>
131 {{/code}}
132
133 (((
134 == ETAPE 3 : Utilisation dans Adélia web ==
135 )))
136
137
138 Les programmes doivent être générés en mode sans conservation des connexions (~= mode "poolé") et les serveurs logiques en mode "local".
139
140 Dans la configuration serveur (MWSERVER.INI) définir un SGBD de type "Datasource" et indiquer le nom de la Datasource.
141
142 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.
143
144
145
146 Liens web :
147
148 [[http://tomcat.apache.org/tomcat-4.1-doc/jndi-datasource-examples-howto.html>>url:http://tomcat.apache.org/tomcat-4.1-doc/jndi-datasource-examples-howto.html]]
149
150 [[http://christophej.developpez.com/tutoriel/j2ee/pooltomcat/>>url:http://christophej.developpez.com/tutoriel/j2ee/pooltomcat/]]
151 (((
152 == (% style="line-height: 1.5;" %)Articles connexes(%%) ==
153 )))
154
155 Les articles connexes apparaissent ici en fonction des étiquettes que vous avez sélectionnées. Cliquez pour modifier la macro et ajouter ou modifier des étiquettes.
156
157 {{liveData sort="doc.date:desc" source="liveTable" properties="doc.title,doc.date,doc.author" description="Recently updated" limit="5" filters="tag=web tomcat sgbd" sourceParameters="translationPrefix=platform.index."}}{{/liveData}}
158