将现有的独立Java应用程序转换为Web服务

时间:2017-05-04 11:21:49

标签: java vaadin

我使用JavaFX8 GUI开发了一个java应用程序。程序连续运行(长时间)收集数据,处理数据并写入数据库等。程序的配置和监督都是通过GUI进行的。

我希望能够通过浏览器从任何计算机上查看/控制应用程序。 Vaadin是一个很好的方法(任何更容易的替代方案?)? 我已经尝试了一些调整一些Vaadin示例,并且无论用户连接/断开连接到Web服务,都无法使我的程序连续运行? 它取决于运行Vaadin的服务器是什么?我目前正在使用Jetty(在使用Vaadin插件的eclipse中)

我已经在java中编写代码几年了,但在服务器客户端代码方面经验很少

谢谢

1 个答案:

答案 0 :(得分:0)

我认为Vaadin对你来说是个不错的选择。我用这个框架开发了一些应用程序来在SmartTV的Web浏览器上显示一些实时图表。

由于不活动,您的会话很可能会超时。这是默认在Vaadin上实现的,但在这些类型的应用程序中可能很烦人。

使用下面的代码段(应该位于您的用户界面中),当会话到期时,webapp会自动重新加载:

@WebServlet(urlPatterns = "/*", name = "MyUIServlet", asyncSupported = true)
@VaadinServletConfiguration(ui = MyUI.class, productionMode = false)
public static class MyUIServlet extends VaadinServlet implements Serializable {

    @Override
    protected void servletInitialized() throws ServletException {
        super.servletInitialized();
        getService().setSystemMessagesProvider((systemMessagesInfo) -> {
            CustomizedSystemMessages messages
                    = new CustomizedSystemMessages();

            messages.setSessionExpiredNotificationEnabled(false);

            return messages;
        });

    }
}

另外,请参阅此问题:  Setting Vaadin session-timeout parameter

我建议您使用Spring集成,它允许您轻松连接所有依赖项,使用Spring Data以简单的方式访问数据库,以及@Scheduled注释,这对于运行一些后台任务和处理