Prb de connexion de jsf et hibernate

Prb de connexion de jsf et hibernate - Java - Programmation

Marsh Posté le 01-09-2009 à 16:43:29    

Bonsoir
J ai fait une petite application en jsf + Hibernate
Et j ai fait une interface qui traite l ajout d un utilisateur et voici le code de ma page index.jsp
 
 

Code :
  1. <%@ page contentType="text/html; charset=UTF-8" %>
  2. <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
  3. <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  5. <html>
  6. <f:view>
  7. <head>
  8. <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  9. <title>Identification</title>
  10. </head>
  11. <body>
  12. <h:form id="form1">
  13.   <h:outputText value="login"/>
  14.   <h:inputText id="login" value="#{traitement.login}" styleClass="input" >
  15.   </h:inputText>
  16.   <br>
  17.   <br>
  18.     <h:outputText value="MDP" />
  19.     <h:inputText id="mdp"  value="#{traitement.mdp}" styleClass="input" >
  20.     </h:inputText>
  21.    <br>
  22.   <br>
  23.   <div align="center">
  24.   <h:commandButton  action="#{traitement.Ajout}" value="Ajouter" />
  25.   <h:commandButton  action="#{traitement.Supp}" value="Supprimer" />
  26.   <h:commandButton  action="#{traitement.Affichage}" value="Afficher" />
  27.   <h:commandButton  value="Annuler"/>
  28.   <h:commandButton action="#{traitement.Modif}" value="Modifier" />
  29.   </div>
  30. </h:form>
  31. </body>
  32. </f:view>
  33. </html>


[img][img][img][img][/img][/img][/img][/img]
 
Et voici le code de mon bean
 

Code :
  1. package Traitement;
  2. import java.util.HashMap;
  3. import java.util.Hashtable;
  4. import java.util.Map;
  5. import java.util.ArrayList;
  6. import java.util.Collection;
  7. import java.util.HashMap;
  8. import java.util.Iterator;
  9. import java.util.List;
  10. import javax.naming.Context;
  11. import javax.naming.NamingException;
  12. import javax.naming.directory.BasicAttribute;
  13. import javax.naming.directory.BasicAttributes;
  14. import javax.naming.directory.DirContext;
  15. import javax.naming.directory.InitialDirContext;
  16. import org.hibernate.HibernateException;
  17. import org.hibernate.Session;
  18. import com.projet.User;
  19. import com.sun.org.apache.bcel.internal.classfile.Attribute;
  20. import com.sun.org.apache.xalan.internal.xsltc.runtime.Attributes;
  21. import com.util.HibernateUtil;
  22. import org.hibernate.*;
  23. import javax.faces.context.FacesContext;
  24. import javax.faces.event.ActionEvent;
  25. import javax.faces.model.SelectItem;
  26. import javax.servlet.http.HttpServletRequest;
  27. import com.projet.UserHome;
  28. public class traitement {
  29. private Integer id;
  30. private String mdp;
  31. private String login;
  32.  
  33. public Integer getId() {
  34.  return id;
  35. }
  36. public void setId(Integer id) {
  37.  this.id = id;
  38. }
  39. public String getMdp() {
  40.  return mdp;
  41. }
  42. public void setMdp(String mdp) {
  43.  this.mdp = mdp;
  44. }
  45. public String getLogin() {
  46.  return login;
  47. }
  48. public void setLogin(String login) {
  49.  this.login = login;
  50. }
  51. public String Ajout() throws HibernateException{
  52.  System.out.println("Debut Ajout" );
  53.  Session session = HibernateUtil.getSessionFactory().getCurrentSession();
  54.  session.beginTransaction();
  55.  User u1= new User();
  56.  u1.setLogin(getLogin());
  57.  System.out.println("login"+getLogin());
  58.  u1.setMdp(getMdp());
  59.  System.out.println("MDP"+getMdp());
  60.  session.save(u1);
  61.  session.getTransaction().commit();
  62.  HibernateUtil.getSessionFactory().close();
  63.  System.out.println("Fin Ajout" );
  64.  return "ajouter";
  65. }
  66.  public static void main(String[] args) throws Exception{
  67.   traitement t=new traitement();
  68.   t.Ajout();
  69.  }
  70. }


 
 
Et voici le code de mon faces-config.xml
 

Code :
  1. <?xml version="1.0"?>
  2. <!DOCTYPE faces-config PUBLIC
  3.   "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN"
  4.   "http://java.sun.com/dtd/web-facesconfig_1_1.dtd">
  5. <faces-config>
  6.    <managed-bean>
  7.  <managed-bean-name>traitement</managed-bean-name>
  8.  <managed-bean-class>Traitement.traitement</managed-bean-class>
  9.  <managed-bean-scope>session</managed-bean-scope>
  10. </managed-bean>
  11. </faces-config>


 
 
Et qd j exécute mon code de bean avec main se trouvant a mon bean : traitement.java ça marche bien l ajout mais j exécute mon code au niveau de ma page index.jsp voici les erreurs :
 
 

Code :
  1. exception
  2. javax.servlet.ServletException: #{traitement.Ajout}: javax.faces.el.EvaluationException: java.lang.ExceptionInInitializerError
  3. javax.faces.webapp.FacesServlet.service(FacesServlet.java:209)
  4. cause mère
  5. javax.faces.FacesException: #{traitement.Ajout}: javax.faces.el.EvaluationException: java.lang.ExceptionInInitializerError
  6. com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:78)
  7. javax.faces.component.UICommand.broadcast(UICommand.java:312)
  8. javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:267)
  9. javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:381)
  10. com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:75)
  11. com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
  12. com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:90)
  13. javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)
  14. cause mère
  15. javax.faces.el.EvaluationException: java.lang.ExceptionInInitializerError
  16. com.sun.faces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:130)
  17. com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:72)
  18. javax.faces.component.UICommand.broadcast(UICommand.java:312)
  19. javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:267)
  20. javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:381)
  21. com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:75)
  22. com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
  23. com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:90)
  24. javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)
  25. cause mère
  26. java.lang.ExceptionInInitializerError
  27. com.util.HibernateUtil.<clinit>(HibernateUtil.java:16)
  28. Traitement.traitement.Ajout(traitement.java:80)
  29. sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  30. sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  31. sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  32. java.lang.reflect.Method.invoke(Method.java:585)
  33. com.sun.faces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:126)
  34. com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:72)
  35. javax.faces.component.UICommand.broadcast(UICommand.java:312)
  36. javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:267)
  37. javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:381)
  38. com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:75)
  39. com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
  40. com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:90)
  41. javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)
  42. cause mère
  43. java.lang.NoSuchMethodError: org.apache.log4j.Logger.isTraceEnabled()Z
  44. org.slf4j.impl.Log4jLoggerAdapter.isTraceEnabled(Log4jLoggerAdapter.java:81)
  45. org.hibernate.type.NullableType.<clinit>(NullableType.java:59)
  46. org.hibernate.Hibernate.<clinit>(Hibernate.java:103)
  47. org.hibernate.type.TypeFactory.<clinit>(TypeFactory.java:69)
  48. org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:283)
  49. org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:276)
  50. org.hibernate.mapping.Property.isValid(Property.java:207)
  51. org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:458)
  52. org.hibernate.mapping.RootClass.validate(RootClass.java:215)
  53. org.hibernate.cfg.Configuration.validate(Configuration.java:1149)
  54. org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1334)
  55. com.util.HibernateUtil.<clinit>(HibernateUtil.java:12)
  56. Traitement.traitement.Ajout(traitement.java:80)
  57. sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  58. sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  59. sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  60. java.lang.reflect.Method.invoke(Method.java:585)
  61. com.sun.faces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:126)
  62. com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:72)
  63. javax.faces.component.UICommand.broadcast(UICommand.java:312)
  64. javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:267)
  65. javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:381)
  66. com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:75)
  67. com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
  68. com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:90)
  69. javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)


 
Et voici la liste des librairies que j ai utilisé :
ant-1.6.5.jar
ant-antlr-1.6.5.jar
ant-junit-1.6.5.jar
ant-launcher-1.6.5.jar
antlr-2.7.6.jar
ant-swing-1.6.5.jar
asm.jar
asm-attrs.jar
c3p0-0.9.1.jar
cglib-2.1.3.jar
cglib-2.2.jar
commons-beanutils-1.7.jar
commons-collections-3.1.jar
commons-collections.jar
commons-digester-1.7.jar
commons-logging-1.1.jar
commons-logging-api-1.1.jar
dom4j-1.6.1.jar
ehcache-1.2.3.jar
hibernate3.jar
javassist-3.9.0.GA.jar
jboss-cache-1.4.1.GA.jar
jbosscache-core-3.1.0.GA.jar
jsf-api.jar
jsf-impl.jar
jstl.jar
jta-1.1.jar
jta.jar
log4j-1.2.11.jar
log4j.jar
mysql-connector-java-5.0.4-bin.jar
oscache-2.1.jar
proxool-0.8.3.jar
slf4j-api-1.5.8.jar
slf4j-log4j12.jar
standard.jar
swarmcache-1.0RC2.jar
 
Est-ce que je dois ajouter qlq choses et merci d avance ??


Message édité par sonia5 le 01-09-2009 à 16:51:21
Reply

Marsh Posté le 01-09-2009 à 16:43:29   

Reply

Marsh Posté le 03-09-2009 à 02:40:43    

Salut Sonia,
 
Dans ta stack trace, tu dois rechercher avant tout le dernier "cause mère" ("caused by" en anglais), car les erreurs au début sont causées par des erreurs antérieures, donc si on règle la cause mère tous les problèmes induits disparaissent aussi.
 
Dans ta stack trace, tu vois en ligne 43 :  "java.lang.NoSuchMethodError: org.apache.log4j.Logger.isTraceEnabled()Z", qui veut dire très clairement que la méthode "isTraceEnabled()" de la classe "Logger" dans le package "org.apache.log4j" n'existe pas.  
Ca veut dire à tous les coups que tu as plusieurs versions de Log4J (plusieurs JARs) présentes dans ton classpath, seulement 1 d'entre eux est chargé et manque de bol ce n'est pas le bon.  
 
Tu as dans ton classpath :
 
log4j-1.2.11.jar
log4j.jar
...........
slf4j-log4j12.jar  
 
Probablement "log4j-1.2.11.jar" est bon car il a l'air d'aller avec "slf4j-log4j12.jar" qui doit l'utiliser, mais le "log4j.jar" tout seul est SUSPECT, c'est probablement lui qui est chargé en 1er par ton application, donc l'autre JAR "log4j-1.2.11.jar" ne l'est pas puisque Log4J est déjà chargé et manque de pot c'est lui qu'il aurait fallu.
 
Donc tu dois certainement virer le "log4j.jar" de ton application, mais ça dépend d'où il vient, il peut très bien faire partie du "common/lib/" de Tomcat par exemple donc chargé automatiquement, il peut aussi être sous ton "WEB-INF/lib/", donc à toi de chercher d'où il vient.
 
Ce genre de problème avec Log4J est extrêmement courant.
 
@++

Reply

Marsh Posté le 03-09-2009 à 02:55:43    

Salut Sonia,

 

Je rajoute que tu peux utiliser l'outil "Front End Plus" pour naviguer dans les JARs de Log4J pour être sûre et certaine de la cause de l'erreur et du JAR à virer, ça lit et décompile les ".class" dans les JARs pour te montrer les codes sources en clair.

 

@++


Message édité par bugbreeder le 03-09-2009 à 02:55:55
Reply

Marsh Posté le 03-09-2009 à 12:25:59    

Merci pour votre réponse mais j ai supprimé log4j.jar de mes jars et aussi sera les mêmes erreurs mais quand je supprime log4j.jar de mon dossier « lib » voici les erreurs qui m a affichè
 
 

Code :
  1. log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).
  2. log4j:WARN Please initialize the log4j system properly.
  3. Initial SessionFactory creation failed.java.lang.NoSuchMethodError: org.apache.log4j.Logger.isTraceEnabled()Z
  4. Exception in thread "main" java.lang.ExceptionInInitializerError
  5. at com.util.HibernateUtil.<clinit>(HibernateUtil.java:16)
  6. at Traitement.traitement.Ajout(traitement.java:80)
  7. at Traitement.traitement.main(traitement.java:106)
  8. Caused by: java.lang.NoSuchMethodError: org.apache.log4j.Logger.isTraceEnabled()Z
  9. at org.slf4j.impl.Log4jLoggerAdapter.isTraceEnabled(Log4jLoggerAdapter.java:81)
  10. at org.hibernate.type.NullableType.<clinit>(NullableType.java:59)
  11. at org.hibernate.Hibernate.<clinit>(Hibernate.java:103)
  12. at org.hibernate.type.TypeFactory.<clinit>(TypeFactory.java:69)
  13. at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:283)
  14. at org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:276)
  15. at org.hibernate.mapping.Property.isValid(Property.java:207)
  16. at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:458)
  17. at org.hibernate.mapping.RootClass.validate(RootClass.java:215)
  18. at org.hibernate.cfg.Configuration.validate(Configuration.java:1149)
  19. at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1334)
  20. at com.util.HibernateUtil.<clinit>(HibernateUtil.java:12)


 
Est-ce que vous avez une autre idée car j essaye tous et ça ne marche pas pour moi
Ou bien est ce que je dois répéter mon application de A à Z ?
Merci d avance

Reply

Marsh Posté le 03-09-2009 à 12:45:09    

Salut,
 

sonia5 a écrit :

Merci Est-ce que vous avez une autre idée car j essaye tous et ça ne marche pas pour moi
...........................
Ou bien est ce que je dois répéter mon application de A à Z ?
Merci d avance


 
C'est possible de Zipper votre application et de me l'envoyer (eric.lemaitre_AT_gmail.com, remplacer le _AT_ par @ évidemment) pour que je puisse reproduire le problème et le corriger ?
 
@++

Reply

Marsh Posté le 03-09-2009 à 17:09:07    

D acoord j ai dèjà vous a envoyè mon projet  
Merci d avance

Reply

Marsh Posté le 03-09-2009 à 17:31:05    

Quand je supprime mon log4j à partir de mon dossier « lib » , voici le message d erreur qui m a affiché avant l exécuter de mon code :
 

Code :
  1. Could not delete C:/Workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/projet26/WEB-INF/lib/log4j.jar. May be locked by another process.


 
Et au niveau de mon console:

Code :
  1. GRAVE: Error reading tld listeners java.lang.NullPointerException
  2. java.lang.NullPointerException
  3. at org.apache.log4j.Category.isEnabledFor(Category.java:746)
  4. at org.apache.commons.logging.impl.Log4JLogger.isTraceEnabled(Log4JLogger.java:327)
  5. at org.apache.catalina.startup.TldConfig.tldScanResourcePaths(TldConfig.java:581)
  6. at org.apache.catalina.startup.TldConfig.execute(TldConfig.java:282)
  7. at org.apache.catalina.core.StandardContext.processTlds(StandardContext.java:4307)
  8. at org.apache.catalina.core.StandardContext.start(StandardContext.java:4144)
  9. at org.apache.catalina.core.StandardContext.reload(StandardContext.java:3025)
  10. at org.apache.catalina.loader.WebappLoader.backgroundProcess(WebappLoader.java:432)
  11. at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1278)
  12. at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1570)
  13. at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1579)
  14. at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1579)
  15. at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1559)
  16. at java.lang.Thread.run(Thread.java:595)
  17. log4j:WARN No appenders could be found for logger (org.apache.commons.digester.Digester.sax).
  18. log4j:WARN Please initialize the log4j system properly.


 
Est ce que vous avez une idèe??

Reply

Marsh Posté le 04-09-2009 à 01:30:04    

Salut Sonia,
 

sonia5 a écrit :

Quand je supprime mon log4j à partir de mon dossier « lib » , voici le message d erreur qui m a affiché avant l exécuter de mon code :

Code :
  1. Could not delete C:/Workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/projet26/WEB-INF/lib/log4j.jar. May be locked by another process.



 
C'est simplement que ce fichier était encore utilisé par un programme en cours, Tomcat était encore actif quand tu as tenté de supprimer "log4J.jar", donc normal.
 

sonia5 a écrit :

Et au niveau de mon console:
[cpp]GRAVE: Error reading tld listeners java.lang.NullPointerException
.....................................
Est ce que vous avez une idèe??


 
Ben là en fait c'est que je t'avais dit une bêtise à l'insu de mon plein gré, en fait le bon fichier c'est "log4J.jar", c'est celui qui DOIT être utilisé, donc une fois supprimé ça se vautre de partout, normal.
 
Evidemment je ne pouvais pas deviner, le "log4j-1.2.11.jar" avait l'air d'être le bon puisqu'il semblait coller d'après son numéro de version avec "slf4j-log4j12-1.5.5.jar" qu'Hibernate utilise, mais en réalité quand tu décompiles les classes "Logger" de ces 2 bibliothèques tu te rends comptes que celui qui ne possède pas la fameuse méthode "isTraceEnabled()" c'est "log4j-1.2.11.jar", alors que "log4j.jar" la possède.
 
En très bref tout ce que je t'ai dit semble parfaitement correct à la nuance près que c'est "log4j-1.2.11.jar" qu'il faut virer et "log4j.jar" qu'il faut garder, donc le contraire de ce que je t'ai dit  :o  .
 
J'ai bien pu reproduire ton erreur "méthode isTraceEnabled() manquante" grâce à ce que tu m'as envoyé, j'ai viré "log4j-1.2.11.jar" mais gardé "log4j.jar", et maintenant ça passe.
 
En fait j'ai maintenant l'erreur "java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)" mais c'est normal puisque la base de données n'existe pas donc évidemment ça ne peut pas marcher, mais tous les problèmes antérieurs de Log4J ont disparu. Donc c'était bien ça.
 
Bonne continuation.
 
@++

Reply

Marsh Posté le 05-09-2009 à 02:43:59    

Bonsoir
Vous avez raison ,ça marche chez moi
Merci pour vos aides

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed