Débogage, optimisation et validation

  • Objectif

    Présenter quelques techniques courantes pour déboger, optimiser et valider une application réalisée avec eXist-DB

Débogage

  • En cas de message d'erreur dans le navigateur web bien faire attention d'identifier l'origine

    • conteneur de servlet (Jetty)
    • controller.xql
    • script XQuery
    • module XQuery importé
    • script XSLT
  • Si page blanche se tourner vers les logs (ou message pas assez informatif)

    Ils sont sur le disque dans le répertoire

    {EXIST-HOME}/webapp/WEB-INF/logs

    • exist.log
    • urlrewrite.log
    • etc.

Exemple fichier log

  • 2013-11-24 09:30:33,709 [http-bio-8080-exec-126] ERROR (XQueryURLRewrite.java [doFilter]:373) 
    - String index out of range: -1 
    java.lang.StringIndexOutOfBoundsException: String index out of range: -1
    	at java.lang.String.substring(String.java:1875)
    	at org.exist.http.urlrewrite.XQueryURLRewrite$RequestWrapper.removePathPrefix(XQueryURLRewrite.java:1088)
    	at org.exist.http.urlrewrite.URLRewrite.updateRequest(URLRewrite.java:86)
    	at org.exist.http.urlrewrite.ControllerForward.updateRequest(ControllerForward.java:68)
    	at org.exist.http.urlrewrite.XQueryURLRewrite.doFilter(XQueryURLRewrite.java:219)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001)
    	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)
    	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    	at java.lang.Thread.run(Thread.java:744)
  • Exemple tiré de urlrewrite.log

À suivre....

  • Ce module se poursuit avec les transparents suivants :

  • Débogage Ajax

  • Recherche d'erreur avec Firebug

  • Utiliser curl pour le débogage

  • Traçage

  • Optimisation

  • Profilage du code XQuery

  • Indexation

  • Configuration d'un index

  • Exercice pas à pas

  • Validation Implicite

  • Validation explicite

  • Limitation