2012-09-03 33 views
3

我在WebLogic 10.3.5上編寫了我的第一個Java EE 5應用程序。並需要一些建築建議。Java EE Servlet作爲XMPP連接器的容器

當應用程序啓動時,我需要打開持續連接到XMPP服務器以發送即時消息。消息將不斷從表中拉出,該表將由應用程序的另一部分填充。

正如我所看到的那樣,我無法使用容器管理的對象,比如EJB,因爲我不能控制對象和套接字連接的生命週期。

Servlet是否是適用於以應用程序開始並擁有持久套接字連接的進程的候選人?

+0

可以使用servlet建立持久連接(有時稱爲保持活動連接),以下是我使用的一些資源:http://docs.oracle.com/javase/6/docs/technotes/guides/net/http -keepalive.html,我希望它有幫助。 – berkay

+0

爲什麼不使用具有'@ PostConstruct'的'@ Singleton'' @ Startup' EJB來打開連接和'@ PreDestroy'來關閉它? – Tair

+0

對不起,你是在JEE5 - 所以上面並不完全正確 – Tair

回答

1

我通過創建實例化的ServletContextListener和EJB 3.0無狀態會話bean來解決此問題。

會話bean然後使用@PostConstruct方法實例化XMPP連接,並使用@PreDestroy方法關閉連接。

我讓會話bean使用EJB 3.0 Timer來每隔幾分鐘輪詢一次消息隊列表。

2

看起來您將使用Markus Eisele在其blogpost中列出的選項之一。對於應用程序生命週期監聽器,提到了特定於Weblogic的機制(但不是純Java EE)。

+0

謝謝塔爾。我剛剛發現了ServletContextListener,而且這似乎正在工作。 – retrodev