rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

[JSP ] probleme de deploiment avec web.xml

Posté par kore62, le samedi 4 août 2007 à 12:00:20
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://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance&qu­ot;
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/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(D­efaultErrorHandler.java:85)
	org.apache.jasper.compiler.ErrorDispatcher.javacError(Error­Dispatcher.java:330)
	org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCom­piler.java:435)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:2­98)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:2­77)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:2­65)
	org.apache.jasper.JspCompilationContext.compile(JspCompilat­ionContext.java:564)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServ­letWrapper.java:299)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServ­let.java:315)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.jav­a: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.rep­ortError(Unknown Source)
	at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.rep­ortError(Unknown Source)
	at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFat­alError(Unknown Source)
	at com.sun.org.apache.xerces.internal.impl.XMLScanner.scanPI(Un­known Source)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerIm­pl$PrologDispatcher.dispatch(Unknown Source)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentS­cannerImpl.scanDocument(Unknown Source)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuratio­n.parse(Unknown Source)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuratio­n.parse(Unknown Source)
	at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(U­nknown 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.applicationWebConf­ig(ContextConfig.java:352)
	at org.apache.catalina.startup.ContextConfig.start(ContextConfi­g.java:1044)
	at org.apache.catalina.startup.ContextConfig.lifecycleEvent(Con­textConfig.java:261)
	at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent­(LifecycleSupport.java:120)
	at org.apache.catalina.core.StandardContext.start(StandardConte­xt.java:4148)
	at org.apache.catalina.manager.ManagerServlet.start(ManagerServ­let.java:1176)
	at org.apache.catalina.manager.HTMLManagerServlet.start(HTMLMan­agerServlet.java:542)
	at org.apache.catalina.manager.HTMLManagerServlet.doGet(HTMLMan­agerServlet.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.internalDoFi­lter(ApplicationFilterChain.java:269)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(App­licationFilterChain.java:188)
	at org.apache.catalina.core.StandardWrapperValve.invoke(Standar­dWrapperValve.java:210)
	at org.apache.catalina.core.StandardContextValve.invoke(Standar­dContextValve.java:174)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(A­uthenticatorBase.java:525)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHo­stValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorRepo­rtValve.java:117)
	at org.apache.catalina.core.StandardEngineValve.invoke(Standard­EngineValve.java:108)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAd­apter.java:151)
	at org.apache.coyote.http11.Http11Processor.process(Http11Proce­ssor.java:870)
	at org.apache.coyote.http11.Http11BaseProtocol$Http11Connection­Handler.processConnection(Http11BaseProtocol.java:665)
	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(Poo­lTcpEndpoint.java:528)
	at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(­LeaderFollowerWorkerThread.java:81)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.ru­n(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.applicationWebConf­ig(ContextConfig.java:352)
	at org.apache.catalina.startup.ContextConfig.start(ContextConfi­g.java:1044)
	at org.apache.catalina.startup.ContextConfig.lifecycleEvent(Con­textConfig.java:261)
	at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent­(LifecycleSupport.java:120)
	at org.apache.catalina.core.StandardContext.start(StandardConte­xt.java:4148)
	at org.apache.catalina.manager.ManagerServlet.start(ManagerServ­let.java:1176)
	at org.apache.catalina.manager.HTMLManagerServlet.start(HTMLMan­agerServlet.java:542)
	at org.apache.catalina.manager.HTMLManagerServlet.doGet(HTMLMan­agerServlet.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.internalDoFi­lter(ApplicationFilterChain.java:269)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(App­licationFilterChain.java:188)
	at org.apache.catalina.core.StandardWrapperValve.invoke(Standar­dWrapperValve.java:210)
	at org.apache.catalina.core.StandardContextValve.invoke(Standar­dContextValve.java:174)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(A­uthenticatorBase.java:525)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHo­stValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorRepo­rtValve.java:117)
	at org.apache.catalina.core.StandardEngineValve.invoke(Standard­EngineValve.java:108)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAd­apter.java:151)
	at org.apache.coyote.http11.Http11Processor.process(Http11Proce­ssor.java:870)
	at org.apache.coyote.http11.Http11BaseProtocol$Http11Connection­Handler.processConnection(Http11BaseProtocol.java:665)
	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(Poo­lTcpEndpoint.java:528)
	at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(­LeaderFollowerWorkerThread.java:81)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.ru­n(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
Répondre à kore62  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
kore62, le samedi 4 août 2007 à 14:36:32
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.
Répondre à kore62

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
kore62, le dimanche 5 août 2007 à 00:28:16
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://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance&qu­ot; xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/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&g­t;
</context-param>
<context-param>
<param-name>baseDeDonnees</param-name>
<param-value>jdbc:mysql://localhost/papeterie</para­m-value>
</context-param>
<listener-class>src.MonListener</listener-class>­
</listener>
</web-app>
Répondre à kore62

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
tunisien, le jeudi 24 janvier 2008 à 10:41:42
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
Répondre à tunisien

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
beji, le mercredi 2 avril 2008 à 11:37:05
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
Répondre à beji

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 nO, le mercredi 2 avril 2008 à 11:47:35
As-tu pensé à redémarrer le système?

nO
Répondre à nO