JWebHelp (JWH) — это движок и набор утилит для создания веб-аппликаций.

Основные приоритеты движка: минималистичность и высокая скорость работы.

Главная цель — позволить разработчику создавать аппликации быстро, без утомительных настроек и большого набора внешних библиотек.

Движок состоит из трех основных частей:

  • HTTP-движок

    • обслуживание запросов по path-части запроса,

    • обслуживание ограничения доступа,

    • разделенное кэширование ответов,

    • (де-)сериализация POJO объектов в JSON/XML;

  • ORM

    • сохранение и загрузка POJO-объектов в/из БД,

    • обслуживание структуры таблиц БД,

    • raw SQL;

  • логгинг.

JWH содержит один сервлет, который является точкой входа всех запросов, загружается в процессе запуска аппликации.

В процессе старта движок сканирует все доступные классы аппликации в поисках рабочих объектов. Рабочие объекты — это классы, помеченные аннотацией @WebWorker. Каждый такой класс в свою очередь сканируется на предмет методов, аннотированных @WebPath: данные методы будут служить обработчиками входящих запросов, согласно пути, указанному в аннотации.

  • Пути подразумеваются уникальными в пространстве аппликации.

  • Путь может быть:

    • константой,

    • регулярным выражением.

      • Применяются по очереди в порядке размерности: самый длинный первым, самый короткий — последним.

Каждый WebWorker может быть либо динамическим, либо статическим (синглтон).

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

Динамический WebWorker рождается на каждый входящий запрос, удовлетворяющий методам класса.

Каждый метод, аннотированный WebPath, должен удовлетворять условиям:

  • тип возврата — любой, включая void;

  • имя метода любое;

  • параметризация аргументов: любой набор из [<T extends IUser>, <T extends HttpServletRequest (WHRequestFacet)>, <T extends HttpServletResponse>], включая отустствие аргументов.