簡體   English   中英

Java EE新手; 服務/守護進程的架構建議?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM