【问题标题】:How to notify user on job completed如何在作业完成时通知用户
【发布时间】:2018-07-21 08:34:20
【问题描述】:

我想在作业完成时显示一个弹出窗口。

我有 servlet,它使用 executor 来执行长作业。任务可能需要 20 分钟,当作业完成时,如何在用户正确的任何 jsp 视图中显示弹出窗口(会话)?

例如用户在 servlet 作业中提交表单被提交给执行器,servlet 发送一些响应并重定向到 /view1 用户正在使用 web 的另一个模块(/view2 /view3 等),当作业完成并且用户在 /viewX他在页面中间弹出“您的任务 SUPER TASK 已完成”。

我知道这是可能的,因为这种机制是在 Jira atlasian 中实现的 提前谢谢你

【问题讨论】:

  • 你能粘贴几行你是如何在执行器中开始工作的吗?特别是,如果您使用的是 atlassian 的 executor API?还是创建自己的执行器?
  • 首先我从 java.util.concurrent.Executor 创建 Executor; ExecutorService executorService = Executors.newFixedThreadPool(10);在应用启动时,然后提交任务:executorService.submit(()->{}

标签: jsp servlets jakarta-ee


【解决方案1】:

此功能不应该在 JSP 或 servlet 中完成,您可以编写几行 javascript 来定期向服务器询问作业的状态。工作完成后,它应该显示弹出窗口。 如果出于某种原因您更喜欢在 JSP 中执行此操作,那么用户只有在刷新页面时才会看到弹出窗口。

【讨论】:

  • 我认为这是最好的方法。谢谢
【解决方案2】:

您可以尝试使用 JS 使用 Promise。 发送新的承诺,它作为异步请求,当作业完成时,如果出现问题,你会得到一个结果或错误。

请查看https://codeburst.io/javascript-learn-promises-f1eaa00c5461(或只需输入“js promise”)

【讨论】:

    猜你喜欢
    • 2018-12-07
    • 1970-01-01
    • 1970-01-01
    • 2019-09-06
    • 2016-11-26
    • 1970-01-01
    • 1970-01-01
    • 2021-03-20
    • 2012-07-31
    相关资源
    最近更新 更多