Подтвердить что ты не робот

Является ли хостинг Netty Server внутри Tomcat выполнимым/желательным?

Мы строим службу на основе Netty/NIO, и я рассматриваю развертывание этого сервиса в нашей производственной среде. Наш стандартный способ развертывания сервисов - это WARs, который будет развернут внутри Tomcats.

Когда я предложил тот же подход здесь, у меня появились крики и жалобы, что "это не должно быть сделано", потому что и Netty и Tomcat являются серверами, и "не имеет смысла размещать один сервер в другом".

Для меня это имеет прекрасный смысл, потому что он полностью решает проблему моего развертывания, а также избавляет меня от написания другого кода. Почему это такое большое "нет нет"?

4b9b3361

Ответ 1

Динамическое развертывание и развертывание WAR, предоставляемое Tomcat, предназначено для веб-приложений. Приложение Netty, которое вы пытаетесь развернуть в Tomcat, не является веб-приложением, а просто отдельным сервером, который использует только память VM. Это означает, что Tomcat был переназначен в универсальное микроядро, такое как OSGi.

Однако, я не думаю, что это большая проблема. Поскольку ваша компания использует WAR как стандартный механизм развертывания, может быть хорошей идеей повторного использования. Вам даже не нужно писать некоторые функции управления, такие как удаленное завершение работы, поскольку Tomcat уже предоставляет их. Все, что вам нужно сделать, это убедиться, что все ресурсы освобождены, когда они не развернуты.

Некоторым людям может не понравиться этот подход. В идеале должна существовать общая инфраструктура для развертывания и управления любым приложением (например, микроядром), где даже Tomcat развертывается в виде модуля, а микроядро управляет WAR напрямую, а Tomcat. Но это долгий путь.

Ответ 2

Это потрясающий смысл. Фактически мы запускаем почтовый сервер Java в Tomcat.

Tomcat обладает огромными преимуществами для размещения приложения:

  • Скрипты демона уже написаны для вас
  • Tomcat позволяет горячее развертывание (пока вы не используете спящий режим:))
  • В какой-то момент вам может потребоваться либо интерфейс администратора, либо API-интерфейс Admin
  • Множество и множество инструментов для мониторинга Tomcat, что означает бесплатный мониторинг вашего приложения.

Теперь, когда Netty, Mina или любая сетевая технология, управляемая событиями, вы не сможете использовать большинство инфраструктур MVC. На самом деле вы не сможете использовать большинство инфраструктур для предприятий Java, потому что многие вещи полагаются на поток на запрос (транзакции, безопасность и т.д.).

Ответ 3

Не начинайте ничего в Tomcat, это очень неудобно, и у этого есть много проблем с болью. Просто вставьте Tomcat (или Jetty) внутри приложения и запустите приложение как простой Java-процесс.