2011-06-21 77 views
0

我的服務器應用程序,做以下工作:從正在通過串行接口尋址的測量裝置Java服務器應用到如Tomcat,GlassFish應用服務器的集成等

  1. 讀取數據( javax.comm,RXTX)或套接字。
  2. 使用套接字與另一個服務器應用程序交換數據(讀取和寫入)。
  3. 使用JDBC將(1)和(2)中的數據插入到數據庫中。
  4. 將步驟(1)至(3)中的數據提供給基於JavaScript的Web應用程序。

我目前的原型是一個獨立的Java應用程序,通過將數據寫入正在通過Web服務器(Apache)傳遞給客戶端的XML文件來實現任務(4),但我認爲這是是一個黑客,而不是一個乾淨的解決方案。

此服務器應用程序需要啓動並且在沒有任何Web客戶端存在的情況下工作。

我想將此服務器應用程序集成到Java應用程序服務器中,但我對這些技術沒有太多經驗,也不知道從哪裏開始。我已經嘗試過TomCat和GlassFish的一些簡單例子,但是這並沒有帶來任何進一步的結果,因爲它們都是圍繞着同步服務Web請求而建立的,並且停止了它對我來說會變得有趣的地方。

  • 這是可能在TomCat或GlassFish中運行這樣的應用程序嗎?

  • 如果是的話,哪裏會是一個好的開始點(例子,哪些基類,...)?

  • 分離應用程序和實現只有任務(4)在一個servlet中,其餘在一個普通的應用程序,通過套接字通信等等是否有意義?

  • 其他服務器(例如JBoss)會是更好的選擇嗎?如果是,爲什麼?

編輯:
我想使用Java EE容器的原因是:

  • 我想有步驟清潔外部接口(4)。

  • 從長遠來看,應用程序將需要擴展到大量的併發客戶端(至少幾個10.000),因此需要標準的可伸縮性和應用程序管理方式。

回答

1

我會鬆散耦合的解決方案,而不是試圖做的Java EE/Servlet容器作爲交換使用套接字(由應用程序本身管理)數據對一切都不是你通常想要做的事從Java EE/Servlet容器。

在Java EE容器上運行它也可能是過量的,因爲這聽起來不像一個典型的企業應用程序,其中諸如安全和事務管理之類的東西非常重要,應用程序可以受益於Java EE/Servlet容器提供的服務。

+0

謝謝。但是如果自己在JEE容器內進行套接字I/O並不是一個好主意,那麼如何將我的測量數據存入JEE容器?出於效率的原因,應用程序使用專有的二進制協議,我想堅持這一點。 –

+0

有不同的方法可以將數據導入JEE容器。你可以在你的UI上公開一個REST接口,你可以公開一個遠程EJB,你可以讓容器中的代碼從文件系統位置獲得它,.... – ddewaele

1

通常,在一個servlet容器(如Tomcat)中實現所有這些並不是一個好主意。

servlet容器被設計爲服務來自客戶端的請求。這聽起來像你有一個將始終運行或至少定期運行的進程。你可以在Tomcat中做到這一點,但在外面做它可能更容易。讓Tomcat盡其所能,爲瀏覽器提供服務。當請求短暫時,它是最快樂的。

所以我會按照你的建議去做,只有容器中有第4步。您可以輕鬆詢問在第3步中填充的數據庫,因此不需要創建Web服務來填充Servlet容器。

對於第4步,您需要通過Tomcat公開一些服務,無論您是否喜歡,可以通過休息,肥皂等。 JavaScript客戶端然後可以詢問這些服務。這全部都可以通過Tomcat完成。

對於可伸縮性,使用Tomcat應該沒有問題。如果它所做的只是將數據從數據庫中抽取到客戶端,那麼可能沒有理由選擇J2EE容器。如果您不需要複雜的事務管理或安全性,請嘗試使用開源代碼。這聽起來像你可以從Tomcat得到你想要的東西(如果需要,彈簧安全性可以是& hibernate &)。如果您開始出現性能問題,那麼修復將可能與JBoss & Tomcat相同:您需要更多的服務器。

我的建議:堅持簡單的開放源碼解決方案,只有在您認爲必要時才轉移到應用服務器。

相關問題