如何在没有页面请求的情况下自动调用servlet / class /方法?

时间:2012-07-17 05:03:52

标签: java java-ee servlets

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

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

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

2 个答案:

答案 0 :(得分:2)

创建一个读取外部网页的计划任务(使用Jsoup以便于访问)并将数据读入synchronized Map,然后从Servlet中读取该应用程序中的Map范围

getServletContext().getAttribute("dataMap");

并从中读取数据

答案 1 :(得分:1)

您必须创建一个计划任务才能完成此任务,此计划任务的间隔时间为1分钟。