Может ли встроенный сервер XMPP в контейнере Java EE быть вредным из-за потоков?

Я немного поиграл с Vysper, встроив его в веб-приложение Java EE в TomEE. Vysper - это альфа / бета-версия XMPP-сервера на основе Apache Mina, которую можно легко встроить в Java-приложения. Я мог бы успешно создать экземпляр Vysper в компоненте @Startup / @Singleton. Все идет нормально. Кажется, все работает нормально, когда я запускаю его в ванильном экземпляре TomEE из затмения.

Но потом я вспомнил, что приложения Java EE не должны использовать потоки (см. Этот ответ при переполнении стека. Почему не рекомендуется создавать потоки в контейнере Java EE?). Если я хорошо помню, есть даже обертки для потоков, когда кому-то нужно запустить такую ​​вещь из приложения Java EE.

Я знаю, что TomEE+ использует Quartz и ActiveMQ в качестве бэкэнда для реализации нескольких сервисов Java EE, но они являются частью контейнера, а не частью веб-приложения.

Могу поспорить, что Мина и Vysper используют потоки внутри себя, поэтому мне интересно, что не стоит встраивать Vysper непосредственно в веб-приложение Java EE в этом контексте. Конечно, я мог бы просто запустить сервер XMPP как другой компонент системы вне контейнера, что также имело бы больше смысла в кластерном развертывании.

Но предположим, что я работаю в автономном развертывании (один TomEE), запуск встроенного Vysper в веб-приложение Java EE может быть вредным, поскольку он опирается внутренне на потоки? Если это не так, почему?

1 ответ

Решение

Некоторые вещи запрещены, но они все менее и менее строги, и время (и большинство серверов EE) не навязывает это, иначе вы почти ничего не можете сделать.

Единственный сюрприз, который вы можете получить, - это ожидание управления (безопасность, CDI и т. Д.), И поскольку это не потоки контейнера, то и вы не являетесь. Если вы принимаете это правило игры, то никаких проблем.

PS: не забудьте правильно закрыть ваши темы

Другие вопросы по тегам