Bonjour à tous,
Je dois faire un petit tp qui gère une liste de contact en utilisant struts et tomcat, jusque là pas de problème mon appli fonctionne quand je me connecte à ma base mysql de façon "classique".
Néanmoins je dois utiliser une datasource, j'ai donc suivi les tutos disponibles sur internet, mais j'ai une erreur qq part:
Voici le message d'erreur que j'obtient:
exception
javax.servlet.ServletException: org.apache.tomcat.dbcp.dbcp.BasicDataSource
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:523)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
cause mère
java.lang.ClassCastException: org.apache.tomcat.dbcp.dbcp.BasicDataSource
com.society.contactbook.application.actions.ListContactAction.execute(ListContactAction.java:23)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
Et maintenant voici un extrait de mon fichier server.xml de tomcat
<Context docBase="ContactBook" path="/ContactBook" reloadable="true" source="org.eclipse.jst.j2ee.server:ContactBook">
<Resource name="contactbookDatasource" auth="Container" type="javax.sql.DataSource"
maxActive="10" maxIdle="3" maxWait="10000"
username="toto" password="toto" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost/contacts"/>
</Context>
Extrait du web.xml de mon appli
<resource-ref>
<description>DB Connection</description>
<res-ref-name>contactbookDatasource</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
Code de récupération de ma datasource dans une classe Action:
ContactDaoSql db = new ContactDaoSql((DataSource) new InitialContext().lookup("java:comp/env/contactbookDatasource"));
db.connect();
Collection<Contact> list = db.listAll();
db.disconnect();
request.setAttribute("list", list);
return mapping.findForward("listContactOK");
Bref je suis un peu perdu, quelqu'un peut m'aider ?
Merci
Partager