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

标签 java web-services rest tomcat vaadin

我正在尝试构建一个带有 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/

相关文章:

java - 如何获取通过 Hibernate 连接的数据库名称?

java - org.springframework.web.bind.MethodArgumentNotValidException

php - 其余 API 更新

android - 在android中使用android volley库调用带有参数的dotnet asmx webservice

java - 保护 JavaScript 前端/REST 后端架构网站的最佳方式?

java - Mongodb 读取查询使用 Spring Data 非常慢,而使用 Morphia 则速度很快

java - 我想要这个..在一帧中对我的多个标记进行 map 缩放。现在我的 map 缩放显示国家/地区的中心位置

java - 从 GAE 应用程序内部写入 PDF

web-services - 现实生活中的交易API

java - 无法获取Web服务的输出