Bonjour,
Je suis en train de migrer une application Struts en Struts 2 et j'ai un problème au moment d'accéder aux bases : le driver est inconnu
Pourtant le driver est bien dans le classpath "WEB-INF/lib".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot load JDBC driver class 'com.mysql.jdbc.Driver'
Si je déplace mon driver dans le Tomcat/lib, çà marche mais ce n'est pas ce que je veux !!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 public ArrayList<Compte> chercherListe() throws BudgetException, BudgetSQLException { ResultSet rs = null; Statement st = null; ArrayList<Compte> liste = new ArrayList<Compte>(); StringBuilder requete = new StringBuilder(); requete.append("select * "); requete.append(" from TYPREGL "); requete.append(" order by LIBELLE "); try { Connection connexion = super.GetConnexion(); st = connexion.createStatement(); rs = st.executeQuery(requete.toString()); while (rs.next()) { Compte compte = new Compte(); compte.setCode(rs.getString("CODE")); compte.setLibelle(rs.getString("LIBELLE")); liste.add(compte); } } catch (SQLException e) { throw new BudgetSQLException(this, e); } catch (Exception e) { // des erreurs se sont produites throw new BudgetException(this, e); } finally { super.closeResultset(rs); super.closeRequest(st); } return liste;mon web.xml
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 public Connection GetConnexion() throws Exception { // Creation de la connection ServletContext servletContext = ServletActionContext.getServletContext(); if (null == dataSource) { dataSource = (DataSource)servletContext.getAttribute("dataSource"); } Connection connection = null; if (null != dataSource) { try { connection = dataSource.getConnection(); } catch (SQLException e) { System.out.println(e); } } return connection; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 <!-- chargeur du datasource --> <listener> <listener-class>fr.pmo.budget.dao.DatasourceListener</listener-class> </listener> <!-- information de connexion a la base de donnees --> <resource-ref> <descritpion>Connexion a la base de donnees</descritpion> <res-ref-name>jdbcMysql</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref> <context-param> <param-name>dataSource</param-name> <param-value>java:/comp/env/jdbcMysql</param-value> </context-param>Mon context.xml
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 public class DatasourceListener implements ServletContextListener { Context context = null; // fonction appelée lors de la création du lanceur @Override public void contextInitialized(ServletContextEvent servletContextEvent) { ServletContext servletContext = servletContextEvent.getServletContext(); String dataSourceJNDI = servletContext.getInitParameter("dataSource"); try { context = new InitialContext(); DataSource dataSource = (DataSource)context.lookup(dataSourceJNDI); servletContext.setAttribute("dataSource", dataSource); } catch (NamingException e) { throw new RuntimeException(); } finally { try { // fermer le context if (null != context) { context.close(); } } catch (Exception e) { System.out.println("Erreur lors de initCtx !"); } } }
j'ai essayé avec driverClassName="org.gjt.mm.mysql.Driver" (même résultat)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 <Context docBase="ProjectName" path="/ProjectName" reloadable="true" source="org.eclipse.jst.jee.server:apiBlog" > <Resource name="jdbcMysql" auth="Container" type="javax.sql.DataSource" username="root" password="" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/budget" maxActive="20" maxIdle="10" validationQuery="SELECT 1" /> </Context>
La version de Struts est la 2.5.14.1.
La version du driver MySQL 5.1.22.
Merci d'avance à ceux qui chercheront une solution à mon problème.
Partager