J'essaye de declarer ma source données
-J 'utilise tomcat 5 sous windows
- d'aprés ce que j'ai lu dans les tutoriel c'est que je dois mettre les declaration dans ( web.xml et META-INF/context.xml)
- dans le répertoire de l'application "dal2" j'ai créé le dossier META-INF puis le fichier context.xml dans le dossier META-INF ( je ne sais pas si c ça ce que je dois faire) parcque ma declaration de ma datasource ne doit pas se faire dans le fichier server.xml avec tomcat5.
-dans le fichier context.xml j'ai mis :
Puis dans le fichier web.xml j'ai :
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 <Context path="/dal2" reloadable="true" docBase="D:\dal2" > <Resource name="jdbc/DbAccess" auth="Container" type="javax.sql.DataSource"/> <ResourceParams name="jdbc/DbAccess"> <parameter> <name>username</name> <value>root</value> </parameter> <parameter> <name>password</name> <value>pass83</value> </parameter> <parameter> <name>driverClassName</name> <value>com.mysql.jdbc.Driver</value> </parameter> <parameter> <name>url</name> <value>jdbc:mysql://localhost:3306/dal</value> </parameter> </ResourceParams> </Context>
et dans l'application j'ai créé une classe DbAccess contenant :
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
39
40
41
42
43
44
45
46
47
48
49
50<web-app> <display-name>Struts Blank Application</display-name> <!-- Standard Action Servlet Configuration --> <servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config.xml</param-value> </init-param> <load-on-startup>2</load-on-startup> </servlet> <!-- Standard Action Servlet Mapping --> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <!-- Standard datasources --> <servlet> <servlet-name>DbAccess</servlet-name> <servlet-class>ma.ac.dal.bd.DbAccess</servlet-class> </servlet> <servlet-mapping> <servlet-name>DbAccess</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <resource-ref> <description> reference a la ressource BDD pour le pool </description> <res-ref-name>jdbc/DbAccess</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref> <!-- The Usual Welcome File List --> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
et dans mon action J'ai fait un test :
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
39
40
41
42
43
44 package ma.ac.dal.bd; import java.sql.Connection; import java.sql.SQLException; import javax.naming.Context; import javax.naming.InitialContext; import javax.sql.DataSource; public class DbAccess { public DataSource ds; Connection con=null; private static DbAccess instance = new DbAccess(); public DbAccess() { try { //récupération de la source de donnée Context initCtx = new InitialContext(); ds = (DataSource) initCtx.lookup("java:comp/env/jdbc/DbAccess"); } catch (Exception e) { e.printStackTrace(); } } public Connection getConnection() { try { this.con=ds.getConnection(); System.out.println("on ouvre la connection"); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return con; } public static DbAccess getInstance() { return instance; } }
Enfin j'obtien cettre erreur :
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
39
40 package ma.ac.dal.actions; import java.io.IOException; import java.sql.Connection; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import ma.ac.dal.bd.DbAccess; import ma.ac.dal.beans.LoginForm; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.config.FormBeanConfig; public class LoginAction extends Action { private Connection connection = null; public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException,ServletException { // on a un formulaire valide, sinon on ne serait pas arrivé là LoginForm formulaire=(LoginForm)form; connection=DbAccess.getInstance().getConnection(); return mapping.findForward("success"); } }
S'il vous plait,comment puis je résoudre ce problème ?
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
39 24 sept. 2007 01:44:09 org.apache.struts.chain.ComposableRequestProcessor init INFO: Initializing composable request processor for module prefix '' 24 sept. 2007 01:44:09 org.apache.struts.chain.commands.servlet.CreateAction createAction INFO: Initialize action of type: ma.ac.dal.actions.LoginAction org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null' at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:780) at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:540) at ma.ac.dal.bd.DbAccess.getConnection(DbAccess.java:29) at ma.ac.dal.actions.LoginAction.execute(LoginAction.java:32) at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58) at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67) at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51) at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190) at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304) at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190) at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913) at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462) at javax.servlet.http.HttpServlet.service(HttpServlet.java:709) 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) at 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(Unknown Source) Caused by: java.sql.SQLException: No suitable driver at java.sql.DriverManager.getDriver(Unknown Source) at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:773) ... 28 more
Je ne sais pas si ça vient du dossier META-INF que j'ai créé dans le dossier de l'application "D/:dal2". Je ne sais pas si comme ça que e devais procéder.
Je vous ai expliqué tt ce que j'ai fait .
Merci de m'aider.
Partager