Является ли хостинг Netty Server внутри Tomcat осуществимым / желательным? - PullRequest
13 голосов
/ 07 июля 2010

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

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

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

Ответы [ 3 ]

17 голосов
/ 08 июля 2010

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

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

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

7 голосов
/ 17 января 2012

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

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

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

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

1 голос
/ 07 мая 2011

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

...