gpt4 book ai didi

Java Web 应用程序 : Monitoring Progress

转载 作者:行者123 更新时间:2023-11-30 07:18:54 25 4
gpt4 key购买 nike

很多时候在 java web 应用程序中有一些由 http servlets 调用的长时间运行的进程。一个典型的例子是,将 100 个 mp3 文件转换为 flak 格式(只是一个随机的例子)。 http 连接仍然有效,但由于该过程需要很长时间,我们可以构建一些进度条显示在网页上(最好是 uisng ajax),指示任务的进度。这应该是什么设计模式?比如说,Servlet 的 post 方法将调用实际的长期流程,而 Servlet 的 get 方法将调用进度监听器?

最佳答案

在 Java EE 中,我会推荐以下结构:

  • Servlet 调用(例如 POST)将启动进程
  • POST 将使用 @Asynchronous EJB 调用来处理繁重的负载,这样就会开始执行耗时的过程
  • 它还会传递一个进度持有者对象,例如放入上下文/ session 中的 POJO(@Stateful EJB 也可以)
  • POST 返回,后台作业继续
  • 状态检查由 Ajax HTTP 调用执行,它们使用与启动器相同的 session
  • Ajax 调用从 session /上下文/@Stateful 获取进度持有者对象,读取状态并返回
  • 状态由后台线程持续更新(更新应该是同步的,除非你只使用 boolean、char、int 或 float 中的一个属性(最大 32 位原语))

请注意,@Asynchronous 从 EJB 3.1 开始可用。

关于Java Web 应用程序 : Monitoring Progress,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15003185/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com