[JSP ] probleme de deploiment avec web.xml

Fermé
kore62 Messages postés 9 Date d'inscription samedi 4 août 2007 Statut Membre Dernière intervention 23 août 2007 - 4 août 2007 à 12:00
xanadu72 Messages postés 4 Date d'inscription jeudi 26 mai 2011 Statut Membre Dernière intervention 6 juin 2011 - 6 juin 2011 à 21:38
Bonjour tout le monde...
Je suis actuellement entrain de développer une première application à l'aide de JSP.. J'utilise TOMCAT 5.5 et MYSQL 5 installés tout les deux en local et JDK 5..

Au départ pas de problème de déployment, j'arrivais à faire des connexions via jdbc en incluant le code de connection dans chaque page jsp. Du style, j ai une page connectionClient.jsp avec le code suivant:

<%
//Declaration des variables
String identifiantCh = request.getParameter("identifiant"), motDePasseCh = request.getParameter("motDePasse");
boolean isPresent = false;
int idClient=0;

//Connexion a la base de donnees
Class.forName("com.mysql.jdbc.Driver");

//String pilote = application.getInitParameter(pilote);

        java.sql.Connection cnx = java.sql.DriverManager.getConnection(urlbase, login, pwd);

java.sql.Statement requete = cnx.createStatement();
ResultSet rs = requete.executeQuery("SELECT * FROM client");

//Suite du traitement


Maintenant, ce qu je voudrais c'est créer un ContextListener qui me charge intialement le driver jdbc de la base afin de supprimer de chaque page jsp l'appel systématique à la ligne de code suivante:
Class.forName("com.mysql.jdbc.Driver");


Donc pour cela j ai creer une classe MonListener comme suit:
package src;
import java.sql.*;
import javax.servlet.*;

public class MonListener implements ServletContextListener{
//Methodes a implementer declaree dans l'interface ServletContextListener
public void contextInitialized(ServletContextEvent sce){
try{
   ServletContext application = sce.getServletContext();
   String pilote = application.getInitParameter("pilote"); 
   Class.forName(pilote);
}catch(Exception e){
}//trycatch
}//contextInitialized

public void contextDestroyed(ServletContextEvent sce){
//instructions executees a l'arret de l'application
}//contextDestroyed
}//class MonListener


et j'ai créé le fichier web.xml suivant:

<? xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://www.oracle.com/webfolder/technetwork/jsc/xml/ns/j2ee/index.html"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.oracle.com/webfolder/technetwork/jsc/xml/ns/j2ee/index.html http://www.oracle.com/webfolder/technetwork/jsc/xml/ns/j2ee/web-app_2_4.xsd"
    version="2.4">
<context-param>
<param-name>pilote</param-name>
<param-value>com.mysql.jdbc.Driver</param-value>
</context-param>
<listener>
<listener-class>.MonListener</listener-class>
</listener>
</web-app>
<code>

Soit je place le fichier web.xml en dehors de mon dossier WEB-INF de mon application sachant que WEB-INF contient un dossier "/classes/src/*.class".
Lorsque je veux acceder à ma page connexionClient.jsp, j'obtiens cette erreur:

org.apache.jasper.JasperException: Impossible de compiler la classe pour la JSP: 

Une erreur s'est produite à la ligne: 18 dans le fichier jsp: /connexionClient.jsp
The local variable pilote may not have been initialized
15: //Connexion a la base de donnees
16: //Class.forName("com.mysql.jdbc.Driver");
17: 
18: String pilote = application.getInitParameter(pilote);
19: 
20:         java.sql.Connection cnx = java.sql.DriverManager.getConnection(urldatabase, login, lot de passe);
21: //String bd = application.getInitParameter("baseDeDonnees");


Stacktrace:
	org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:85)
	org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330)
	org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:435)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:298)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:277)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:265)
	org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:564)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:299)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

Soit je place le fichier web.xml mais Tomcat m'envoie cette erreur au moment du déployement:
ECHEC - L'application pour le chemin de contexte /papeterie n'a pas puêtredémarrée

Voici l'erreur en détail dans le fichier manager.log:

4 août 2007 11:31:20 org.apache.tomcat.util.digester.Digester fatalError
GRAVE: Parse Fatal Error at line 1 column 3: The processing instruction must begin with the name of the target.
org.xml.sax.SAXParseException: The processing instruction must begin with the name of the target.
	at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
	at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(Unknown Source)
	at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
	at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
	at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(Unknown Source)
	at com.sun.org.apache.xerces.internal.impl.XMLScanner.scanPI(Unknown Source)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDispatcher.dispatch(Unknown Source)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
	at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
	at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1562)
	at org.apache.catalina.startup.ContextConfig.applicationWebConfig(ContextConfig.java:352)
	at org.apache.catalina.startup.ContextConfig.start(ContextConfig.java:1044)
	at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:261)
	at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120)
	at org.apache.catalina.core.StandardContext.start(StandardContext.java:4148)
	at org.apache.catalina.manager.ManagerServlet.start(ManagerServlet.java:1176)
	at org.apache.catalina.manager.HTMLManagerServlet.start(HTMLManagerServlet.java:542)
	at org.apache.catalina.manager.HTMLManagerServlet.doGet(HTMLManagerServlet.java:105)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
	at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
	at java.lang.Thread.run(Unknown Source)
4 août 2007 11:31:20 org.apache.catalina.startup.ContextConfig applicationWebConfig
GRAVE: Erreur d'évaluation (parse) dans le fichier web.xml de l'application à jndi:/localhost/papeterie/WEB-INF/web.xml
org.xml.sax.SAXParseException: The processing instruction must begin with the name of the target.
	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
	at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1562)
	at org.apache.catalina.startup.ContextConfig.applicationWebConfig(ContextConfig.java:352)
	at org.apache.catalina.startup.ContextConfig.start(ContextConfig.java:1044)
	at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:261)
	at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120)
	at org.apache.catalina.core.StandardContext.start(StandardContext.java:4148)
	at org.apache.catalina.manager.ManagerServlet.start(ManagerServlet.java:1176)
	at org.apache.catalina.manager.HTMLManagerServlet.start(HTMLManagerServlet.java:542)
	at org.apache.catalina.manager.HTMLManagerServlet.doGet(HTMLManagerServlet.java:105)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
	at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
	at java.lang.Thread.run(Unknown Source)
4 août 2007 11:31:20 org.apache.catalina.startup.ContextConfig applicationWebConfig
GRAVE: S'est produite à la ligne 1 colonne 3
4 août 2007 11:31:20 org.apache.catalina.startup.ContextConfig start
GRAVE: Cette application est marquée comme non disponible suite aux erreurs précédentes
4 août 2007 11:31:20 org.apache.catalina.core.StandardContext start
GRAVE: Error getConfigured
4 août 2007 11:31:20 org.apache.catalina.core.StandardContext start
GRAVE: Erreur de démarrage du contexte [/papeterie] suite aux erreurs précédentes


Merci d'avance pour votre aide. Je continue de chercher de mon côté...<code>Configuration: Windows XP
Internet Explorer 7.0

4 réponses

kore62 Messages postés 9 Date d'inscription samedi 4 août 2007 Statut Membre Dernière intervention 23 août 2007 10
5 août 2007 à 00:28
C'est résolu il ne trouvait pas l'empacement de ma servletListener Monlistener qui etait appelée au demarrage....

Donc en fait, il faut redemarrer TOMCAT et definir le web.xml comme ci-dessous:

Voici mon fichier web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://www.oracle.com/webfolder/technetwork/jsc/xml/ns/j2ee/index.html" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.oracle.com/webfolder/technetwork/jsc/xml/ns/j2ee/index.html http://www.oracle.com/webfolder/technetwork/jsc/xml/ns/j2ee/web-app_2_4.xsd">
	<display-name>
	papeterie</display-name>
	<servlet>
		<description>
		</description>
		<display-name>
		VerifConnectionSVR</display-name>
		<servlet-name>VerifConnectionSVR</servlet-name>
		<servlet-class>
		maServlet.VerifConnectionSVR</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>VerifConnectionSVR</servlet-name>
		<url-pattern>/VerifConnectionSVR</url-pattern>
	</servlet-mapping>
	<welcome-file-list>
		<welcome-file>index.html</welcome-file>
		<welcome-file>index.htm</welcome-file>
		<welcome-file>index.jsp</welcome-file>
		<welcome-file>default.html</welcome-file>
		<welcome-file>default.htm</welcome-file>
		<welcome-file>default.jsp</welcome-file>
	</welcome-file-list>
<context-param>
<param-name>pilote</param-name>
<param-value>org.gjt.mm.mysql.Driver</param-value>
</context-param>
<context-param>
<param-name>baseDeDonnees</param-name>
<param-value>jdbc:mysql://localhost/papeterie</param-value>
</context-param>
<listener-class>src.MonListener</listener-class>
</listener>
</web-app>
10
kore62 Messages postés 9 Date d'inscription samedi 4 août 2007 Statut Membre Dernière intervention 23 août 2007 10
4 août 2007 à 14:36
C'est bon on m'a aiguillé.. c'est un blanc entre le ? et xml dans web.xml qui faisait planter..
Maintenant c'est un probleme de listener start arf!

Voici l'erreur:

4 août 2007 14:13:45 org.apache.catalina.core.StandardContext start
GRAVE: Error listenerStart


Si quelqu'un peut m'aiguiller de nouveau.. Merci.
0
xanadu72 Messages postés 4 Date d'inscription jeudi 26 mai 2011 Statut Membre Dernière intervention 6 juin 2011 3
6 juin 2011 à 21:38
Kore 62,
Une "Listener start error" est la plus part du temps engendrée par une classe non trouvée (ClassNotFoundException). Ca peut être un filtre, un listener ou log4j qui n'est pas bien configuré par exemple . Si tes logs ne t'indiquent pas la classe manquante il faut que tu enlèves la configuration de logging de ta webapp ou que tu la redéfinisse. Tu trouveras sur la page suivante une explication assez complète ainsi que la méthode pour afficher le coupable dans tes logs.

http://www.java-tutorial.ch/java-server-faces/jsf-error-listener-start-error/
0
comment creer un autre fichier web.xml parce que mon fichier web.xml je l ai efacé pas expret
et c est pas moi qui la crée.
merci pour votre aide
-1
mon problème est très facile,
en effet sur invite de commande pour compiler un programme java on ecrit javac mon application.java
cette commande javac n'est pas reconnu en tant que commande externe ou interne.
Même si j'ai effectué les étapes suivantes:
1-JDK est installé ver 5
2-Variable d'environnement PATH et CLASSPATH sont crées sous chemin (succéssivement) c:\programme file\JDK1.5
et c:\programme file\JDK1.5
merci pour votre aide
-1
As-tu pensé à redémarrer le système?

nO
0