[英]New to Java EE; architecture suggestions for a service/daemon?
我是Java EE世界的新手。 作為嘗試熟悉Java EE的練習,我正在嘗試創建一個分層的網絡應用程序,但是我有點擔心在后台啟動服務的最佳方法是什么。
服務參數:
因此,想法是用戶按下網頁上的按鈕,並在服務器上的某個位置打開套接字連接。 對於剩余的用戶會話(或者直到用戶按下某種斷開按鈕),套接字保持打開狀態並將接收的信息推送到某種集中式存儲,servlet可以通過AJAX查詢並返回給用戶。
是否有Java EE類型的方法來處理這種情況? 當然,我想要做的就是編寫一個Java應用程序來監聽servlet可以連接的端口並生成打開這些套接字的新線程,但這對我來說似乎非常特別。
(PS:我也是Stack Overflow的新手,所以請原諒我,如果我需要一些時間來計算網站!)
Java EE堆棧中有三個主要容器:Web容器,EJB容器和JCA容器。 JCA旨在提供與第三方系統的入站和出站連接,例如數據庫,JMS代理或其他。
從EJB或Web應用程序創建到Telnet服務器的連接的“正確”方法是使用JCA連接器。
[client] <-|-> [web] <--> [ejb] <--> [jca] <-|-> [telnet server]
管道| 表示遠程邊界。 假設EJB是本地人,但無論如何它們都是可選的; 您也可以使用Web層中的JCA連接器。
我建議您調查是否存在實施。 一個快速的谷歌給了我這個結果: 用於Telnet客戶端的JCA連接器 。
另一種方法(但不符合規范)是從ServletContextListener
啟動偵聽套接字的線程。 該線程將在Web層中運行,您可以根據需要管理與Telnet服務器的連接。
我建議你看看另外這個問題: 偵聽套接字的Java EE應用程序 。
在這兩種情況下,您可能需要弄清楚如何臨時存儲Telnet服務器(您提到的集中式存儲)收到的信息,這些信息稍后將顯示在Web界面中。 這對Java EE來說也是個問題,因為規范禁止使用全局狀態。 例如,您不應該在理論上使用static
字段。 但實際情況是,如果您只有一個應用程序實例在運行。
這只是一個粗略的草圖,但我希望它有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.