Tuesday, December 30, 2008

Пример Java-приложения, построенного на Open Source решениях

Не смог придумать лучшего названия :)

Эту презентацию я готовил для девятой встречи JUG во Владимире, которая состоялась 25 декабря 2008. Запись презентации будет доступна чуть позже на сайте JUG, а пока я решил выложить слайды.

Рассматриваемое приложение - один из заказных проектов KeyIntegrity. Его особенность в том, что он полностью реализован на Java OpenSource-решениях. Вот лишь некоторые из них:

В презентации дается обзор архитектуры готового решения и разбирается дизайн проекта. В частности: общий дизайн web-приложения, подсистема доступа к данным, генератор отчетов и так далее. Кстати, предыдущий пост "Single Sign-On в интеграционных проектах IIS и Java" также относится к этому проекту.

В презентации также приводится несколько метрик проекта: сроки, количество занятых в разработке людей, метрики по коду и так далее.

Я бы отнес этот проект к категории "маленьких", но, несмотря на его размер, он оказался очень интересным в плане реализации.

Как обычно не обошлось без тонкостей использования OpenSource-решений в production. Например:
  • реализации JPA могут работать не стабильно если используется pool соединений (то есть почти всегда) и с приложением не работают более 8 часов (настройки MySQL по умолчанию), например, ночью когда нет активных пользователей;
  • использование AJP13 в Tomcat с настройками по-умолчанию через некоторое время приводит к отказу работы системы;
  • и другие.
Самое интересное, что в открытых источниках я не нашел решений этих проблем. Часть ответов я привожу в презентации (в слайдах или в записи). Но, к сожалению, большинство, все-таки, остается за кадром.

Часть вопросов по доступу к данным закрылось библиотекой keyintegrity-orm-jpa (небольшая обертка для JPA), которую пришлось написать для этого проекта. О ней также есть информация в слайдах. Скорее всего удастся выпустить эту библиотечку под Apache License v2, но это уже только в следующем году (обязательно напишу про это отдельную новость).

В общем я очень доволен как себя показала Tapestry5 с её встроенной поддержкой IoC. Всем рекомендую посмотреть этот Web Framework, тем более, что недавно вышел финальный релиз.

Также остались только хорошие впечатления от BIRT - в очередной раз удалось реализовать все, что нужно, включая русскую локализацию для Web Viewer'а.