2011-08-03 72 views
0

我有一個在Tomcat上運行的Java EE應用程序,它需要連接到在JBoss上運行的另一個Java EE應用程序(主機系統),該應用程序使用套接字接受客戶端連接。連接到接受套接字連接的Java EE應用程序

連接到此係統以發送和接收消息的最佳方式是什麼?

我目前使用套接字發送和接收消息到Java EE應用程序(主機系統)。但是我在Java EE規範中發現,在Java EE應用程序中使用套接字是一種不好的做法。由於主機系統通過特定端口上的套接字監聽客戶機,因此如何從我的Java Web應用程序連接到此係統?

+0

建立套接字連接.... – duffymo

+0

'但是我在J2EE規範中發現,在J2EE應用程序中使用套接字是一種不好的做法。「這取決於您如何閱讀該語句。如果你盲目地閱讀它並虔誠地遵守它,你就不得編寫任何servlet和EJB,並避免使用數據庫,因爲它們涉及某種形式的套接字通信。如果你已經正確地理解了它,那麼你不應該創建不能被容器管理的套接字。 –

回答

0

這聽起來像你想使用Java消息服務(JMS)。

1

沒有關於如何與主機系統進行通信的更多細節,我只是假設它使用專有的基於套接字的二進制協議,並且純粹是客戶機 - 服務器(即,不是全雙工,您需要偵聽器在客戶端)。

關閉我的頭頂,我能想到幾個選項:

  1. 使用原始套接字。只要確保不要打開它們太長時間並正確關閉它們。它確實聽起來像主機系統本身並不遵循Java EE對信函的建議 - 那麼爲什麼你呢?

  2. 編寫JCA resource adapter Java EE'首選'處理自定義/遺留資源或消息的方式。實質上,這將主機系統轉變爲可通過Common Client Interface訪問的資源,並允許容器管理套接字/線程的生命週期。

然而,在簡單和不超過工程的利益,我說,如果原始套接字爲你工作,那麼就使用它們,直到被迫不算。

除非您看到通過JCA提供自定義服務的價值,否則很難證明這一點。

您甚至可以使用ESB平臺在一端公開Web服務,並通過另一端的套接字與服務器通信 - 但對我而言,這更加「偶然」的複雜性。