我有一个GWT应用程序,该应用程序显示JFreeChart呈现的一些图表。每隔几分钟,页面就会刷新,这会使应用程序生成新的图表。 (换句话说,整个图表生成过程都是由客户端请求引导的。)这样做的问题是,多个客户端命中同一台服务器将导致产生多个请求来生成图表,但是由于所有用户的图表都是相同的,真的没有理由这样做。我想在后台线程中预渲染图表,该线程将在应用程序启动时启动,然后仅根据请求将已渲染的图表提供给客户端。

我没有看到GWT在服务器启动时执行您自己的代码的任何“批准”方式。我能想到的唯一方法是创建一个servlet,该servlet在启动时由应用程序容器加载,并在init()方法中启动图表生成线程。

有没有更喜欢的方式来做到这一点?

注意:假设是真的,“否”是一个完全可以接受的答案。

最佳答案

要回答您的问题:否。GWT是一种前端技术,而GWT跨过这条线的唯一途径是RPC机制。唯一可以使用的“GWT”类型方式是检查图表文件在用户首次请求时是否存在,如果不存在则生成它们。这将意味着使用文件系统作为您是否已创建文件的检查。

更好的方法是按照您说的做,例如:配置您的Web项目以在启动时启动类(class)。您可以按照以下说明在web.xml中执行此操作:

http://wiki.metawerx.net/wiki/Web.xml.LoadOnStartup

以下是Stripes如何执行此操作的示例:

<servlet>
        <servlet-name>StripesDispatcher</servlet-name>
        <servlet-class>net.sourceforge.stripes.controller.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>StripesDispatcher</servlet-name>
        <url-pattern>*.action</url-pattern>
    </servlet-mapping>

09-09 22:54
查看更多