К основному контенту

Сообщения

Сообщения за июль, 2013

REST сервис как Linux служба

В этом посте я собираюсь рассказать как превратить REST сервис, написанный на Java, в Linux службу, устанавливаемую пакетным менеджером. Итак, первым делом забудьте о тяжеловесных серверах приложений вроде JBoss AS или Oracle WebLogic. Выбираем какой-нибудь легковесный встраиваемый сервер. Это может быть Jetty , Grizzly или даже Simple . Логи предпочтительнее писать в syslog. И Log4j и Logback позволяют это сделать. Для написания сервиса я выбираю Dropwizard (готовая связка Jetty + Jersey + Logback + Metrics), но это совсем необязательно. При сборке нужно положить зависимости в отдельную внешнюю папку или запаковать внутрь jar рядом c вашим кодом (maven-assembly-plugin или maven-shade-plugin в помощь). Для простоты демонстрации я выбрал второй вариант. Теперь всё готово для превращения. Для запуска службы будем использовать systemd - современную систему инициализации и менеджер служб для Linux. Нам понадобится простой shell скрипт и service файл. Выглядеть это будет примерно так:

Тестируем отправку почты. Wiser vs Dumbster

Тестируете ли вы отправку почты вашим приложением? Надеюсь, что да. Но делаете это вы, скорее всего, при помощи функциональных тестов. А разве можно иначе? Можно, и даже оправдано, если в вашем приложении много правил или они не совсем простые и очевидные. В этом случае вам понадобится много тестов. Если все они будут функциональные, вы рискуете заспамить свой почтовый ящик и временем обратной связи вряд ли останетесь довольны. Я бы предпочёл протестировать функциональными тестами основные сценарии, а различные граничные условия и исключения из правил проверять модульными тестами. Вот для этого и предназначены Wiser с Dumbster'ом. Начнём с того, что обе библиотеки легковесные, легко подключаются и просты в использовании. Итак, добавляем в pom.xml и пишем примерно вот такой тест или с использованием Dumbster такой Вам выбирать какую из этих библиотек использовать. Лично я отдал предпочтение Wiser, т.к. полученное сообщение — это стандартный javax.mail.internet.MimeMessage ,