How to use Timer on Vaadin

Hi!, Im new kind of new on Vaadin and GWT, in fact I dont know much about GWT, I have problem with a simple application that Im doing on Vaadin, and the class Timer, Im just trying to reload a table every 5 minutes. I saw on some messages on the forums that Timer class from GWT can be used on vaadin but Im gettint this error:

Code:

private Timer t = new Timer() {
public void run() {
getWindow().showNotification(“Reload!”);
}
};



botonReload= new Button(“Reload”);
botonRecarga.addListener(new Button.ClickListener() {

	@Override
	public void buttonClick(ClickEvent event) {
		// TODO Auto-generated method stub
		 
		   // t.scheduleRepeating(5000);
		    // Schedule the timer to run once in 5 seconds.
		    t.schedule(5000);

	}
});

Error:


com.vaadin.event.ListenerMethod$MethodException
Cause: java.lang.NoClassDefFoundError: com/google/gwt/user/client/Timer
at com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:507)
at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:161)
at com.vaadin.ui.AbstractComponent.fireEvent(AbstractComponent.java:1154)
at com.vaadin.ui.AbstractField.fireValueChange(AbstractField.java:895)
at com.vaadin.ui.AbstractField.setValue(AbstractField.java:535)
at com.vaadin.ui.AbstractSelect.setValue(AbstractSelect.java:665)
at com.vaadin.ui.AbstractSelect.changeVariables(AbstractSelect.java:474)
at com.vaadin.ui.Tree.changeVariables(Tree.java:446)
at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.handleVariables(AbstractCommunicationManager.java:1094)
at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.doHandleUidlRequest(AbstractCommunicationManager.java:590)
at com.vaadin.terminal.gwt.server.CommunicationManager.handleUidlRequest(CommunicationManager.java:266)
at com.vaadin.terminal.gwt.server.AbstractApplicationServlet.service(AbstractApplicationServlet.java:476)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:306)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:558)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:108)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:558)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:379)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:243)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:259)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:281)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NoClassDefFoundError: com/google/gwt/user/client/Timer
at com.icreativa.sbhebt.admin.app.SBHEBTApplication.valueChange(SBHEBTApplication.java:218)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:487)
… 28 more
Caused by: java.lang.ClassNotFoundException: com.google.gwt.user.client.Timer
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1671)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1516)
… 34 more

I am using it wrong?, How do this work?

Hi,

Vaadin is a server-side framework, so you cannot use GWT’s client-side classes on the server-side. If you want to use the Timer class, you have to create your own widget. Another option is to use a timer solution on the server-side and add a push or poll component to the application to update the UI when a timer event occurs.

Like Henri said, you need to have a server-side timer and then poll the server from the client side, for this you can use the
Refresher
addon. If you need to visualize the time in the UI, then take a look at the
Countdown clock
addon.