Развертывание сервисов Dropwizard на вашем старом сервере JEE

Автор: | 26.07.2026

Многие согласятся, что Dropwizard — один из лучших новых фреймворков для Java-сервисов, и инженеры Twilio определенно с этим согласны. Большая часть мира Java уже отказалась от Java Enterprise Edition (JEE), но что, если вам *нужно* развернуть приложение на сервере JEE? Останетесь ли вы привязаны к старому JEE?

Коду Хейлу стало бы тошно от этого, но мы решили, что можем и рыбку съесть, и на елку влезть. Мы создали WizToWar — простую библиотеку-утилиту, которая позволяет вам наслаждаться всеми преимуществами Dropwizard, создавая при этом развертываемые WAR-файлы для сервера JEE.

Но зачем вообще разворачивать на сервере JEE? После того как вы привыкли к простоте и управляемости сервисов Dropwizard, возвращение к серверу JEE может свести с ума. (Именно в этот момент сторонники JEE 6/7 начнут яростно возражать). Наши сервисы также должны поддерживать SIP-подключения, и мы пришли к выводу, что API SIP Servlets (JSR-289) — наиболее подходящий API для этого. Если у вас аллергия на JEE, именно здесь появится сыпь — JSR-289 поддерживается только в средах JEE, интегрированных с серверами приложений JEE, такими как Websphere, JBoss, Weblogic и Tomcat. И, к сожалению, пока не существует контейнера SIP Servlets, интегрированного с Dropwizard.

Наша потребность и любовь к SIP, к сожалению, заводят нас в кроличью нору JEE. Для других это могут быть корпоративные политики, устаревшие среды или просто требования к интеграции.

Что вообще такое Dropwizard? С одной стороны, Dropwizard — это «JEE, только хорошие части», поскольку он грамотно переиспользует open-source реализации ключевых спецификаций JEE, включая HTTP Servlets (Jetty), JAX-RS (Jersey) и Java Bean Validation (Hibernate Validator).

Однако то, что отличает Dropwizard от JEE, — это то, как он позволяет одному автономному Java-приложению предоставлять стандартизированное управление жизненным циклом, метрики, мониторинг и проверки работоспособности без использования отдельного сервера. Приложения Dropwizard подключаются к собственным API Dropwizard для конфигурации, управления жизненным циклом и мониторинга.

Так что Dropwizard — это более молодой на 15 лет, стройный и красивый кузен JEE с собственным мнением. Если бы они встретились на улице, Dropwizard сделал бы вид, что не знает JEE.

Если вы просто измените упаковку вашего приложения Dropwizard на «war» и попытаетесь развернуть получившийся WAR, к сожалению, ничего не произойдет.

WizToWar исправляет это, выступая в роли клея, который подключается к жизненному циклу WAR, инициализирует и передает сервису Dropwizard его конфигурацию, а также регистрирует его сервисы (сервлеты, ресурсы Jersey и проверки работоспособности) в окружающем сервере JEE.

WizToWar по сути эмулирует то, что происходит при запуске команды «server» для приложения Dropwizard, и транслирует это на сервер JEE.

С помощью WizToWar вы можете создать обычный сервис Dropwizard и WAR из одного исходного кода — в одной сборке.

Вам нужно лишь добавить класс-адаптер, файл конфигурации (web.xml) и некоторые дополнительные инструкции сборки (чтобы также сгенерировать WAR). Подробные инструкции по началу работы можно найти на GitHub, где мы размещаем этот open-source проект.

WizToWar позволяет нам продолжать стандартизировать модель программирования Dropwizard даже для сервисов, требующих SIP-подключений, и в процессе оптимизировать то, как мы управляем, настраиваем и разрабатываем как SIP, так и HTTP-сервисы.