2017-05-04 54 views
0

我使用JavaFX8 GUI開發了一個Java應用程序。程序連續運行(長時間)收集數據,處理數據並寫入數據庫等。配置和程序的監督都是通過GUI進行的。將現有的獨立Java應用程序轉換爲Web服務

我希望能夠通過瀏覽器從任何計算機上查看/控制應用程序。 Vaadin會是一個很好的方式來做到這一點(任何替代品都更容易?)? 我已經嘗試了一些適應Vaadin的一些例子,並且無法讓我的程序持續運行,無論用戶連接/斷開連接到Web服務? 它取決於哪個服務器運行Vaadin?我目前使用的碼頭(與Vaadin插件蝕)

我已經在Java中一直在寫代碼了幾年,但在服務器 - 客戶端代碼的經驗非常少

謝謝

+3

這取決於。如果您的GUI應用程序設計有圖層,分隔(等),轉換是可能的。但是,當這是針對GUI事件的'spagetti代碼'時,並非如此簡單 –

+0

它還取決於您對應用程序體系結構的原始想法,以及「控制應用程序」和「連續運行,收集數據,處理」的含義。此外,您應該在這裏區分兩個概念:Web應用程序(aka UI),它會爲每個訪問它的用戶_instance_和應用程序的收集器端(您可能希望成爲_singleton_)服務的集合或任何可以被任何用戶重新配置但不會影響網絡應用程序的任何可以停止,啓動和重新配置的服務。 – Morfic

回答

0

我認爲Vaadin對你來說是一個很好的選擇。我已經用這個框架開發了一些應用程序,用於在SmartTV的Web瀏覽器上顯示一些實時圖表。

由於不活動,您的會話很有可能會超時。這在Vaadin中默認實現,但在這些類型的應用程序中可能很煩人。

與下面的代碼段(應該躺在你的UI)當會話過期的web應用程序會自動重新加載:

@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註釋來運行一些後臺任務和處理。

相關問題