2014-09-11 69 views
0

我在Vysper上玩了一點點,將它嵌入到TomEE的Java EE web應用程序中。 Vysper是基於Apache Mina的XMPP服務器的alpha/beta版本,可以輕鬆嵌入到Java應用程序中。我可以成功實例化一個Vysper實例到@Startup/@Singleton範圍的bean中。到現在爲止還挺好。當我在日蝕裏面的一個香草TomEE實例中運行它時,它似乎工作正常。Java EE容器中的嵌入式XMPP服務器是否會因爲線程而受到危害?

但是,我記得Java EE應用程序不應該使用線程(請參閱堆棧溢出此答案 - Why is spawning threads in Java EE container discouraged?)。如果我沒記錯的話,當有人需要從Java EE應用程序內部運行這樣的事情時,甚至有線程的包裝器。我知道TomEE +使用Quartz和ActiveMQ作爲後端來實現幾個Java EE服務,但它們是容器的一部分,而不是Web應用程序的一部分。

我敢打賭,Mina和Vysper在內部使用線程,所以我不知道在此上下文中將Vysper直接嵌入到Java EE Web應用程序中並不是一個好主意。當然,我可以在容器外運行XMPP服務器作爲系統的另一個組件,這在集羣部署中也更有意義。

但假設我運行在獨立部署(單個TomEE)中,將嵌入式Vysper運行到Java EE Web應用程序中可能會有害,因爲它依賴於線程?如果不是,爲什麼?

回答

1

有些東西是被禁止的,但是它越來越不嚴格,而且tomee(和大多數EE服務器)不會強加它,否則你幾乎什麼都不會做。

只有你可以得到的驚喜是期望被管理(安全,CDI,...),因爲這不是容器線程,那麼你就不是。如果你接受這個遊戲規則,那麼沒有問題。

PS:不要忘記正確關機你的線程