Pessoal,
estou aprendendo a usar o reverse ajax com DWR. Copiei (mais ou menos) o código do exemplo Clock, do proprio DWR, mas o navegador não atualiza no tempo certo, que a thread em java manda (de um em um segundo) mas sim de 60 em 60 segundos, por causa do meu web.xml que segue abaixo. Se eu mudo o parametro de 60000 para 1000 aí ele atualiza de segundo em segundo, no navegador.
Em síntese, meu comet ou pooling (sei lá) não funciona… já tentei no tomcat e no glassfish e já li as 5 primeiras páginas do goole para tudo relacionado a “slow call script dwr” e variantes…
peço ajuda ae!
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 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_3_0.xsd">
<servlet>
<display-name>DWR Servlet</display-name>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
<init-param>
<param-name>activeReverseAjaxEnabled</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>maxWaitAfterWrite</param-name>
<param-value>1</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>org.directwebremoting.extend.ServerLoadMonitor</param-name>
<param-value>org.directwebremoting.impl.PollingServerLoadMonitor</param-value>
</init-param>
<init-param>
<param-name>disconnectedTime</param-name>
<param-value>60000</param-value>
</init-param>
<init-param>
<param-name>pollAndCometEnabled</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
</web-app>
[code]public class Clock extends Thread{
public Clock()
{
ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(1, new DaemonThreadFactory());
executor.scheduleAtFixedRate(this, 1, 50, TimeUnit.MILLISECONDS);
}
public void run(){
try{
while(true){
LocalDateTime l = new LocalDateTime();
String hora = l.toString("dd/MM/yyyy - hh:mm:ss");
setClockDisplay(hora);
System.out.println("Clock:"+hora);
Thread.sleep(1000);
}
}catch(Exception e){
excecao.TratarExcecao.tratar(e);
}
}
public void setClockDisplay(final String output)
{
Browser.withAllSessions(new Runnable()
{
public void run()
{
Util.setValue("clockDisplay", output);
}
});
}
}
[/code]