2010-01-28 55 views
9

我想構建一個不僅提供Web服務(WAR)或直接JMS請求(EJB)的Java EE應用程序(EAR),但是我也希望接受套接字請求(例如UDP數據包)。一個偵聽套接字請求的EAR(Java EE)應用程序

我已經嘗試用java.net.DatagramSocket編寫一個監聽器,讓它作爲單獨的進程運行,並將請求重定向到我的EAR應用程序。

問題是...... 我該如何在我的Java EE(EAR)應用程序中無縫地構建這樣的套接字偵聽器?

謝謝。

回答

11

方法是創建一個JCA適配器爲。 JCA適配器可用於出站入站連接。您可以啓動線程或安排JCA adpater的工作。從JCA適配器到EJB的連接入站使用自定義消息驅動bean完成。

  • 適配器啓動一個套接字收聽器和管理來自遠程客戶端的連接
  • 當接收到分組時,一個消息被傳遞到自定義MDB
  • 的MDB可以然後委託的處理進行到其他EJB

您甚至可以從JCA連接器啓動事務,以便將消息/數據包傳送到EJB。 JCA是Java EE規範的一部分,並受所有應用程序服務器的支持。

另一種方法(但不符合規範)是啓動從ServletContextListener偵聽套接字的線程。該線程將運行在Web層中,並且可以照常調用EJB。依賴注入不起作用,但JNDI查找仍然可以。

1

就我所知它不符合規範。

4

一切都應該由容器控制,因爲這是使用Java EE來擴展應用程序的唯一方法。

有幾個選項: