我有一个GWT应用程序,显示由JFreeChart呈现的一些图表.每隔几分钟,页面刷新一次,这会导致应用程序生成新图表.(换句话说,整个图表生成过程由客户端请求引导.)问题是多个客户端命中同一个服务器会导致生成图表的多个请求,但由于所有用户的图表相同,真的没有理由这样做.我想在后台线程中预先渲染图表,这将在应用程序启动时启动,然后根据请求将已呈现的图表提供给客户端.
我没有在GWT中看到任何"认可"的方式来在服务器启动时执行您自己的代码.我能想到的唯一方法是创建一个servlet,它在应用程序容器启动时加载,并在init()方法中启动图表生成线程.
有更优选的方法吗?
注意:假设这是真的,"不"是一个完全可以接受的答案.
回答你的问题:不.GWT是一种前端技术,穿过这条线的唯一GWT就是RPC机制.您可以执行的唯一"GWT"类型方法是在用户第一次请求时检查图表文件是否存在,如果不这样做则生成图表文件.这意味着使用文件系统作为您是否已创建的检查.
更好的方法是按照你说的去做,例如:配置你的web项目,以便在启动时开始上课.您可以在web.xml中执行此操作,如下所述:
http://wiki.metawerx.net/wiki/Web.xml.LoadOnStartup
这是Stripes如何做到的一个例子:
StripesDispatcher net.sourceforge.stripes.controller.DispatcherServlet 1 StripesDispatcher *.action