IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Spring Java Discussion :

Log dans les stack traces


Sujet :

Spring Java

  1. #1
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 226
    Points : 78
    Points
    78
    Par défaut Log dans les stack traces
    Bonjour,

    Je suis à la recherche de la configuration à effectués afin que dans la stack trace les erreurs SQL soit remontés.

    J'ai ecrit un test unitaire, en mettant une valeur nulle dans un champ obligatoire en BDD. Dans la stack trace du JUnit je vois à un moment un message :
    impossible d'inserer NULL dans ("GENO_PROP"."GNM_IHM_PARAM"."VALEUR")
    (cf fichier joint)

    Ca c'est super car dans le cas de mes tests unitaire je suis capable de comprendre d'où vient l'erreur.


    Maintenant dans mon application WEB, j'ai créé un bouton qui fait appel à la même méthode serveur. J'ai également forcé le champ obligatoire à la valeur nulle.
    Cette fois la stack trace dans mon log est la suivante :

    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
     
    Hibernate: insert into GNM_IHM_PARAM (DATE_CREATION, DATE_MODIFICATION, DATE_SUPPRESSION, ETAT_OBJET, USER_CREATION, USER_MODIFICATION, USER_SUPPRESSION, CLEF, GROUPE, VALEUR, ID) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
    31/01/14 11:28:32 ERROR EchangeEnergiesRemoteServiceImpl:381 - 
    org.springframework.transaction.UnexpectedRollbackException: JTA transaction unexpectedly rolled back (maybe due to a timeout); nested exception is javax.transaction.RollbackException
    	at org.springframework.transaction.jta.JtaTransactionManager.doCommit(JtaTransactionManager.java:1031)
    	at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:732)
    	at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:701)
    	at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:321)
    	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:116)
    	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
    	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
    	at $Proxy33.enregistrer(Unknown Source)
    	at com.es.genome.server.rpc.impl.EchangeEnergiesRemoteServiceImpl.enregistrerParam(EchangeEnergiesRemoteServiceImpl.java:379)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    	at java.lang.reflect.Method.invoke(Method.java:597)
    	at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:562)
    	at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:188)
    	at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:224)
    	at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
    	at com.es.fwk.server.rpc.GwtController.handleRequest(GwtController.java:41)
    	at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
    	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875)
    	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:807)
    	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571)
    	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:511)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    	at com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:129)
    	at com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:77)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:378)
    	at org.springframework.security.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
    	at org.springframework.security.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
    	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
    	at org.springframework.security.ui.ExceptionTranslationFilter.doFilterHttp(ExceptionTranslationFilter.java:101)
    	at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
    	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
    	at org.springframework.security.providers.anonymous.AnonymousProcessingFilter.doFilterHttp(AnonymousProcessingFilter.java:105)
    	at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
    	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
    	at org.springframework.security.ui.rememberme.RememberMeProcessingFilter.doFilterHttp(RememberMeProcessingFilter.java:116)
    	at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
    	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
    	at org.springframework.security.wrapper.SecurityContextHolderAwareRequestFilter.doFilterHttp(SecurityContextHolderAwareRequestFilter.java:91)
    	at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
    	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
    	at org.springframework.security.ui.basicauth.BasicProcessingFilter.doFilterHttp(BasicProcessingFilter.java:174)
    	at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
    	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
    	at org.springframework.security.ui.AbstractProcessingFilter.doFilterHttp(AbstractProcessingFilter.java:277)
    	at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
    	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
    	at org.springframework.security.ui.logout.LogoutFilter.doFilterHttp(LogoutFilter.java:89)
    	at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
    	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
    	at org.springframework.security.context.HttpSessionContextIntegrationFilter.doFilterHttp(HttpSessionContextIntegrationFilter.java:235)
    	at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
    	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
    	at org.springframework.security.util.FilterChainProxy.doFilter(FilterChainProxy.java:175)
    	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:236)
    	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
    	at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
    	at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)
    	at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:769)
    	at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:698)
    	at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:891)
    	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
    	at java.lang.Thread.run(Thread.java:619)
    Caused by: javax.transaction.RollbackException
    	at org.objectweb.jotm.TransactionImpl.commit(TransactionImpl.java:329)
    	at org.objectweb.jotm.Current.commit(Current.java:485)
    	at org.springframework.transaction.jta.JtaTransactionManager.doCommit(JtaTransactionManager.java:1028)
    	... 76 more
    Elle n'a rien a voir avec la première et les deux sont généré par la même erreur. Je souhaiterai savoir se que je dois faire afin que dans le cas de mon application je puisse avoir la réel erreur (soit la stack trace obtenue dans mon test unitaire) dans mon fichier de log.

    Techno de l'application web : spring, Gxt, hibernate

    Je vous remercie pour votre aide.
    Images attachées Images attachées  

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	at com.es.genome.server.rpc.impl.EchangeEnergiesRemoteServiceImpl.enregistrerParam(EchangeEnergiesRemoteServiceImpl.java:379)
    Tu as quoi dans ton code à cette ligne? Parce que l'erreur que tu nous montre a lieu bien après l'erreur d'insertion. Il n'y a aucun moyen à ce moment là de récupérer l'erreur précédente. C'est lors de l'erreur précédente qu'il faut capter le message qui t'intéresse. En gros tu fait ça:

    insertion -> erreur champ null blablabla -> marquer la transaction comme annulée
    confirmer la transaction -> erreur la transaction a été annulée.

  3. #3
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 226
    Points : 78
    Points
    78
    Par défaut
    Bonjour,

    Après pas mal de recherche j'ai réussit à trouver comment afficher l'erreur que je voyais dans mes tests unitaires dans les logs de mon application.

    Mon problème n'etait pas un souci de récupération de l'exception dans mon code.

    Il s'agit de l'utilisation d'hibernate. Cette librairie génére une exception pour des logs slf. Il faut donc dans vos projets ajouter la librairie slf4j-log4j12 et la libbrairie slf-api afin de rediriger les logs hibernate dans votre log4j.


    En espérant que ca aidera d'autre personne.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur Exim pas de réelles traces dans les logs
    Par motmar dans le forum Debian
    Réponses: 0
    Dernier message: 16/02/2012, 10h56
  2. Problème de log dans les Webservices
    Par marccollin dans le forum Services Web
    Réponses: 1
    Dernier message: 19/02/2010, 17h26
  3. [ASE]Trace dans les logs
    Par arona dans le forum Sybase
    Réponses: 2
    Dernier message: 15/03/2007, 15h59
  4. ne pas ecrire dans les fichier log
    Par HULK dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 07/04/2006, 08h22
  5. [httpd] Erreur surprenante dans les logs
    Par joseph_p dans le forum Apache
    Réponses: 3
    Dernier message: 17/02/2006, 12h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo