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

Сообщения

Сообщения за 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 ,

JEEConf 2013

Этот пост посвящён конференции JEEConf, проходившей в Киеве 24-25 мая. Это мероприятие организовывается уже не первый год и с каждым разом собирает все больше и больше Java-разработчиков. В этот раз и докладов было больше и самих докладчиков, в т.ч. и зарубежных. Из тех докладов, на которых я побывал в первый день, хочется отметить доклад Олега Шелаева про Java-агенты и доклад Антона Кекса «Как вернуть Java былую славу?». Первый познакомил с интересными инструментами вроде Chronon и Byteman и породил интересные идеи применения агентов. А второй из выделенных мною докладов оставил особо яркие впечатления. Антон — отличный докладчик. Он с особым удовольствием поиздевался над трехбуквенными аббревиатурами из Ынтерпрайз мира и стилем разработки resume driven development. Конечно же, были рекомендации как нужно делать. Не все из них можно просто вот так взять и применить (все-таки работа в аутсорсе и распределённых командах накладывает определённые ограничения), но общее направление, к