应用程序的体系结构:请求处理

我有以下问题:

我正在编写一个带有servlet和JSP的Web应用程序,它应该查询单独的服务。 但是查询需要花费很多时间 – 大约30秒。

我的应用程序的结构很简单 – Filter-> Controller-> jsp。 我在想如果在filter中我将请求发送到一个单独的线程中以便在控制器继续执行其作业时进行处理。 为了使查询过程和控制器处理同时进行,我该怎么办? +我需要每5分钟更新一次查询(以便用户确实拥有相关信息)。 这样做的最佳方式是什么?

使用ServletContextListener在Web应用程序启动时启动一个线程。

线程应该将数据写入ServletContext(例如通过setAttribute())。

ServletContextListener应该在应用程序停止时终止线程。

Servlet应该根据需要从ServletContext中读取数据。