1

我们有一个页面每分钟调用一个 servlet。这个 servlet 连接到另一个网站以获取一些数据,处理这些数据,然后通过 response.getWriter() 方法发送响应。

如果有两个不同的用户同时访问该页面,则会向同一个 servlet 发出两个请求。虽然仍然只有一个 servlet 实例,但会有两个进程(可能在两个不同的线程上)会尝试连接到另一个网站。

我们想要的是有另一个类/方法/servlet 可以连接到另一个网站,处理数据,然后将其保存到缓存/会话。必须每分钟调用/调用此类/方法/servlet,以便从页面调用第一个 servlet 时,它只会从缓存/会话中获取数据,而不会尝试连接到网站。我们如何实现这一点?(问题是如何每分钟自动调用/调用新的类/方法/servlet,而无需从页面发出请求)

4

2 回答 2

2

创建一个读取外部网页的计划任务(使用Jsoup更容​​易访问)并将数据读取到一个synchronized Map和从 Servlet 中,您可以从应用程序范围读取该 Map

getServletContext().getAttribute("dataMap");

并从中读取数据

于 2012-07-17T05:06:48.793 回答
1

您必须创建一个计划任务来完成此操作,此计划任务的间隔为 1 分钟。

于 2012-07-17T05:24:03.977 回答