gpt4 book ai didi

java - Vaadin + Tomcat webapp 可以用来连续运行一个线程吗?

转载 作者:行者123 更新时间:2023-11-28 22:37:28 25 4
gpt4 key购买 nike

我正在尝试构建一个带有 Vaadin 前端的网络应用程序,它允许用户在我们的服务器上上传和处理数据。该过程非常复杂,并且是一个多线程应用程序(我们称其为“核心”)。在设计这个应用程序时,我认为我可以将所有东西都放在 tomcat 服务器上,但我的一位同事告诉我,Vaadin 本身是 RESTful,因此不会连续运行业务流程,因为该应用程序是无状态的。他声称tomcat JVM在运行请求后会简单地进入 hibernate 状态,不会完成线程进程。因此,他建议我使用 RMI 将数据发送到同一台服务器上的另一个进程,然后在那里进行处理。

我有几个问题:

  1. 他所说的都是真的吗?有一些我不知道的在 Tomcat 上实现 Vaadin 的复杂性?
  2. 更有可能我认为我误解了他,他实际上是在解释为什么最好将表示和业务组件分开(我完全同意)。但是从纯理论的角度来看,是否有可能将多线程核心与运行 Vaadin 的服务器实例粘贴到同一个 tomcat 服务器实例上?

最佳答案

据我所知,Vaadin 不使用 REST 服务进行客户端-服务器通信。它是有状态的并使用某种支持 bean。

关于您的线程问题,如果您直接从 Vaadin 组件调用长时间运行的任务,它将阻止线程处理您的请求,直到任务完成。从浏览器的角度来看,您必须等待并看到旋转指示器,直到该过程完成(或由于请求超时而引发异常)。

您可以做的是在单独的线程中运行长时间运行的任务。如果你想让新线程运行在同一个 JVM 上,你不需要像 RMI 这样的东西。您可以通过以下任一方式完成:

请注意,您可能必须实现某种通知机制才能知道线程何时完成任务。

关于java - Vaadin + Tomcat webapp 可以用来连续运行一个线程吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25623875/

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