Spring在定义的时间段后销毁临时对象

时间:2014-09-19 08:56:15

标签: spring-mvc

我有一个使用kaptcha的spring mvc表单,以证明用户是人而不是机器。输入所请求的信息后,将生成一个随机值,该值必须在servlet上下文中可用120秒。用户可以获取该值并将其作为另一个应用程序(附加组件)的密钥输入,以完成注册过程。这就是为什么该随机值必须具有全局范围而不是会话范围的原因。如果在120​​秒内没有其他应用程序收到请求,我想销毁该随机字符串/对象。我在这里寻找最佳实践,即我能想到的一种方式是在Spring中实现的以下示例是一个示例。

1)创建一个可以容纳该随机值类型的多个对象的集合

2)将radom值保存在应用程序上下文中(不是会话)

3)使用global-session范围

定义那些对象

4)当请求进来时,获取HttpServletRequest提取用户发送的值

5)迭代麻烦的应用程序上下文,如果发现这样的值,则进一步继续,如果不立即结束该过程。

现在理论上可行,但如果在定义的类型周期内没有请求对象,即120秒,我如何确保在120秒后销毁我在步骤1中生成的值。我想确保释放内存。

在Spring中实现此类构造的最佳实践是什么?我使用TaskScheduler或其他什么?是存储应用程序上下文的随机值的最佳位置吗?

0 个答案:

没有答案