J'essaie de développer avec struts une interface qui permet d'interroger une base de données.
Je test ma connexion en réalisant un formulaire qui lorsque l'on clique sur le bouton éxécute une requête.
Mais j'ai un message d'erreur qui apparaît:
javax.servlet.ServletException: "Servlet.init()" pour la servlet action a généré une exception
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:164)
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:206)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:828)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:700)
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:584)
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
java.lang.Thread.run(Thread.java:534)
et
java.lang.NoClassDefFoundError: org/apache/struts/legacy/GenericDataSource
java.lang.ClassLoader.defineClass0(Native Method)
java.lang.ClassLoader.defineClass(ClassLoader.java:537)
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1677)
org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:900)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1350)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1230)
java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
org.apache.struts.action.ActionServlet.initModuleDataSources(ActionServlet.java:1084)
org.apache.struts.action.ActionServlet.init(ActionServlet.java:472)
javax.servlet.GenericServlet.init(GenericServlet.java:256)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:164)
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:206)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:828)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:700)
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:584)
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
java.lang.Thread.run(Thread.java:534)
J'ai dans mon fichier struts-config.xml ceci:
<data-source type="org.apache.commons.dbcp.BasicDataSource">
<set-property
property="driverClassName"
value="oracle.jdbc.driver.OracleDriver" />
<set-property
property="url"
value="jdbc:oracle:thin:@ip:port:nom" />
<set-property
property="username"
value="" />
<set-property
property="password"
value="" />
<set-property
property="maxActive"
value="10" />
<set-property
property="maxWait"
value="5000" />
<set-property
property="defaultAutoCommit"
value="false" />
<set-property
property="defaultReadOnly"
value="false" />
<set-property
property="validationQuery"
value="SELECT Type.Name FROM Type" />
</data-source>
</data-sources>
et dans ma classe Action :
public class LoginAction extends Action {
public ActionForward execute (
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {
javax.sql.DataSource dataSource;
java.sql.Connection myConnection;
try {
dataSource = getDataSource(request);
myConnection = dataSource.getConnection(); Statement st = myConnection.createStatement();
String query="SELECT Type.Name"
+" FROM Type";
ResultSet rs = st.executeQuery(query); System.out.println(rs);
rs.close();
st.close();
myConnection.close();
}
catch (SQLException sqle) {
getServlet().log("Connection.process", sqle);
}
if (request.getSession().getServletContext().getAttribute("users" ) == null ){
Vector users = new Vector();
request.getSession().getServletContext().setAttribute("users", users);
}
return (mapping.findForward("mainmenu" ));
}
}
Désolé c un peu long mais je ne sais plus quoi faire.
Y a t il d'autres fichiers à créer? Et dans ce cas où les installer?