Vaadin - 等待Vaadin事件的后端程序

时间:2016-10-14 15:35:40

标签: java multithreading vaadin

这个Q要求资源/方向而不是具体答案。我们希望了解以下问题的Vaadin架构。

我们的应用程序是事件驱动的,事件这里是服务器端事件。 当我们的应用程序从服务器上的另一个独立应用程序中听到时,它会询问前端(人类)用户 填写表格,等到用户做,然后根据用户说的话继续。

我们的后端流程,例如processB正在调用Vaadin布局上的方法来做事。那个方法,比如说methodA() 应该

  1. 将表单推送到前端
  2. 等到用户输入数据并点击" OK"按钮
  3. 处理&返回用户输入的内容。
  4. (1)工作正常。但是,该方法在处理前端表单之前返回。我们在这里观察到的这个和其他一些东西表明Vaadin正在运行 methodA()的两个不同主题。所以,当我们调用

    ourUI.methodA();
    

    启动并运行2个不同的线程来执行它。

    这可能是真的吗? Vaadin的逻辑是什么? 不是来自应用程序的上一次运行的线程仍然保留在服务器上 - 我仔细检查了

    让进程等待Vaadin事件的最佳方法是什么?有没有办法建立一个独立的线程,即一个不受Vaadin UI控制的线程,等待Vaadin事件?

    我们可以processB加入methodA(),以便它等到methodA()返回。但我不认为这是最好的方式。并且我不知道如何抓住Vaadin线程到join()它。而且,那些(看似)2 methodA()个线程正在破坏它。

    我们可以为methodA()返回的内容保留一个令牌,并让processB密切关注它,等待值写入其中。仍然 - 必须有更好的方法。

    我们将processB合并到Vaadin UI(尚未开发的早期阶段),以便在UI终止之前一直运行。它不再在ourUI之外。这如何简化事情?

    注意:我们只为一个会话/用户提供了一个用户界面 - 不允许按规格显示多个标签,并在一个用户界面/用户上设置一个后端进程

    我们在Java 1.7和Tomcat 8上使用Vaadin 7.7

    // -------------------------

    编辑:

    我们的后端流程processB本身就是Runnable并控制着整个逻辑。它必须等待前端线程返回并传递值。我正在寻找的是如何触发这一点 - 在前端事件返回时获取值。 processB不会继续,直到从中获取此值前端。

0 个答案:

没有答案