如何在服务器端自动执行功能

时间:2011-08-19 09:15:40

标签: java jsp

最近我正在创建一个拍卖网站。我想让它像用户出价项目一样,有一个AI竞标者来提高用户价格。对于用户在5秒后对item1的出价,AI出价者也将自动出价item1。知道如何在5秒后自动执行它?

4 个答案:

答案 0 :(得分:0)

一个简单而有效的解决方案可能是将所有未来的出价与“截止日期”存储在一起,并将所有信息存储在列表中。然后,每隔5秒左右,您就可以遍历列表,并在所有出价到期时进行。该系统是可扩展的,可用于大量出价。当然,理想情况下,这将在不同的主题中运行。

这有点像在servlet中重新实现“类似cron”的作业管理,但我看不到任何符合您需求的解决方案。

我不确定我是否回答了你的问题,希望如此。

此致  斯特凡

答案 1 :(得分:0)

取决于您实际使用的技术,您可以使用EJB计时器,例如,在新的出价发生时启动计时器ejb,在计时器超时(一段时间后)方法执行并更新出价。

答案 2 :(得分:0)

标准servlet解决方案

  1. 创建Filter,将其映射到出价servlet的网址格式。
  2. 在你的doFilter()中,在你的filterChain.doFilter()调用之后(即,在servlet / JSP处理了请求之后),将来安排一个5秒的动作(你可以使用标准的java { {3}})
  3. 在您安排的Runnable实施(您的任务)中,放置AI出价。

答案 3 :(得分:0)

在我看来:

  1. 如果用户出价,并且在5秒后,它将请求发送到服务器,我更喜欢 JS setTimeout()。 (当然它需要浏览器的JS - 在W3School中阅读更多内容)。
  2. 否则,您可以使用一个数组(或类似的smt)充当队列(在服务器端),每隔5秒后,它会锁定队列(同步),并检查5秒前插入的是什么,并处理它(或每次事件请求服务器时使用Thread)。基本上,你可以使用一个线程来做这个技巧? (你是说这个吗?)