Partage
  • Partager sur Facebook
  • Partager sur Twitter

DWR Ajax JSP

    14 février 2012 à 9:06:34

    Bonjour,

    ne réussissant toujours pas à implémenter ajax (via RichFace entre autre), j'essaie de tester DWR... mais je rencontre de nouveaux problèmes... voici mes fichiers:

    web.xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" 
        xmlns="http://java.sun.com/xml/ns/javaee" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
        <servlet>
            <servlet-name>dwr-invoker</servlet-name>
            <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
            <init-param>
                <param-name>debug</param-name>
                <param-value>true</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
            <servlet-name>dwr-invoker</servlet-name>
            <url-pattern>/dwr/*</url-pattern>
        </servlet-mapping>
        <session-config>
            <session-timeout>
                30
            </session-timeout>
        </session-config>
        <welcome-file-list>
            <welcome-file>index.jsp</welcome-file>
        </welcome-file-list>
    </web-app>
    


    dwr.xml :

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN"
    "http://getahead.ltd.uk/dwr/dwr20.dtd">
    <dwr>
        <allow>
            <create creator="new" javascript="classdwr">      
                <param name="class" value="packdwr.classdwr"/>        
            </create>
        </allow>
    </dwr>
    


    index.jsp :

    <%@page contentType="text/html" pageEncoding="UTF-8"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
            <title>DWR test</title>
     
            <%-- This files are created in the runtime --%>
            <script type='text/javascript' src='/stocksdemo/dwr/util.js'></script>
            <script type='text/javascript' src='/stocksdemo/dwr/interface/classdwr.js'></script>
            <script type='text/javascript' src='/stocksdemo/dwr/engine.js'></script>   
     
            <script type="text/javascript">
                function update() 
                    {
                    var name = dwr.util.getValue("demoName");
                    alert(name);
                    classdwr.sayHello(name, function(data) 
                        {dwr.util.setValue("demoReply", data);});
                    }
            </script>  
        </head>
     
        <body onload="dwr.engine.setActiveReverseAjax(true);">
     
        <p>
        Name:
        <input type="text" id="demoName"/>
        <input value="Send" type="button" onclick="update()"/>
        <br/>
        Reply: <span id="demoReply"></span>
        </p>
     
        </body>
    </html>
    


    ma class java de test:

    package packdwr;
     
    import java.util.Collection;
    import org.directwebremoting.WebContext;
    import org.directwebremoting.WebContextFactory;
    import org.directwebremoting.proxy.dwr.Util;
     
    public class classdwr 
        {
     
        public classdwr()
            {
     
            }
     
        public String sayHello(String name) {
            return "Hello, " + name;
        }
        }
    


    lorsque je test via cette adresse : http://localhost:8084/testdwr/index.jsp , j'obtient bien ma page mais rien ne se passe... (si je clique sur le bouton je n'ai même pas mon alert()...)

    si j'essaie avec cette url : http://localhost:8084/testdwr/dwr/ j’obtiens:

    Etat HTTP 500 -
     
    type Rapport d''exception
     
    message
     
    description Le serveur a rencontré une erreur interne () qui l'a empêché de satisfaire la requête.
     
    exception
     
    javax.servlet.ServletException: "Servlet.init()" pour la servlet dwr-invoker a généré une exception
            org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
            org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
            org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
            org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405)
            org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:964)
            org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515)
            org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302)
            java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
            java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
            java.lang.Thread.run(Thread.java:722)
     
    cause mère
     
    java.lang.NoClassDefFoundError: Could not initialize class org.directwebremoting.servlet.PlainPollHandler
            java.lang.Class.forName0(Native Method)
            java.lang.Class.forName(Class.java:186)
            org.directwebremoting.impl.ContainerUtil.class$(ContainerUtil.java:97)
            org.directwebremoting.impl.ContainerUtil.setupDefaults(ContainerUtil.java:150)
            org.directwebremoting.impl.ContainerUtil.setupDefaultContainer(ContainerUtil.java:125)
            org.directwebremoting.servlet.DwrServlet.init(DwrServlet.java:73)
            org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
            org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
            org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
            org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405)
            org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:964)
            org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515)
            org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302)
            java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
            java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
            java.lang.Thread.run(Thread.java:722)
     
    note La trace complète de la cause mère de cette erreur est disponible dans les fichiers journaux de Apache Tomcat/7.0.22.


    et tomcat retourne dans ses logs ceci :

    févr. 12, 2012 5:34:43 PM org.apache.catalina.core.StandardWrapperValve invoke
    Grave: Exception lors de l'allocation pour la servlet dwr-invoker
    java.lang.NoClassDefFoundError: Could not initialize class org.directwebremoting.servlet.PlainPollHandler
            at java.lang.Class.forName0(Native Method)
            at java.lang.Class.forName(Class.java:186)


    La librairie DWR est bien ajoutée à mon classpath...

    je désespère un jour de pouvoir utiliser ajax .... si quelqu'un peut m'aider à comprendre j'en serais très heureux
    • Partager sur Facebook
    • Partager sur Twitter
      14 février 2012 à 9:17:02

      Salut,

      Pourquoi tu utilises une librairie pour communiquer via Ajax ?
      De la lecture (en anglais) très intéressante et complète sur le sujet :
      => http://balusc.blogspot.com/search/label/Ajax
      • Partager sur Facebook
      • Partager sur Twitter
        14 février 2012 à 21:31:28

        Merci pour ce lien, il y a en effet une info très intéressante pour moi (la réupération de l'id d'un élément jsf...) et qui répond à ce que j'avais essayé il y a peu...

        mais j'aimerais tout de même comprendre ce qui se passe avec ces bibliothèques, j'ai testé sous netbeans d'utiliser RichFace avec le plugin natif de netbeans mais rien a faire...
        • Partager sur Facebook
        • Partager sur Twitter

        DWR Ajax JSP

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown