Документация                        Jahia v6                        Обзор архитектуры                        Jahia – перво...
Jahia – обзор архитектурыВ документе представлен высокоуровневый обзор архитектуры корпоративного портала Jahia.Обзор приз...
ОглавлениеJahia – обзор архитектуры..........................................................................................
Общая картинаJahia имеет в своем составе богатый арсенал разнообразных функций и подсистем. Основнаяидея работы портала за...
аутентификацию контейнера JEE, и т.д. Подсистема является подключаемой с помощью    механизма конвейеров (pipeline mechani...
•   Базы данных (Database): Jahia поддерживает все основные СУБД, включая и СУБД с    открытым исходным кодом (MySQL, Post...
Компоненты пользовательского интерфейсаНа данном рисунке приведены различные компоненты пользовательского интерфейса, кото...
Поверх перечисленных компонентов в Jahia имеется полный набор элементов пользовательскогоинтерфейса: от компонентов управл...
Аутентификация и авторизацияJahia позволяет использовать следующие механизмы аутентификации: •   CAS SSO (Single Sign-On c...
•   списки контроля доступа для объектов содержимого; •   разрешения на все действия пользователя; •   подключаемые службы...
Шаблоны оформленияОт системы шаблонов Jahia зависит то, как информация будет отображаться на странице.Шаблоны оформления г...
•   Библиотеки тегов: в целях облегчения поддержки и обновления шаблонов в Jahia решили    максимально отказаться от испол...
КэшированиеДля высокопроизводительных веб-систем наподобие Jahia кэширование необходимо дляизбежания повторной генерации д...
Для оптимизации производительности доставки веб-страниц Jahia использует несколько уровнейкэша: •   кэш браузера, •   кэш ...
перегружать скрипты, которые не менялись. Jahia корректно работает с кэшем тех страниц,которые были изменены и контролируе...
КЭШ БАЗЫ ДАННЫХПоследний уровень кэша – уровень базы данных, обеспечивающий минимализацию запросов кБД. Он очень важен. Пр...
Объекты содержимогоПеречень объектов содержимого в Jahia: •   страницы (pages), включая страницы контента, внутренние и вн...
•   доступ к ним может регламентироваться с помощью списков контроля доступа (ACL); •   они описываются с помощью файлов о...
ПорталВ состав Jahia включен сервер порталов, основанный на Apache Pluto – эталонной реализацииспецификации Java портлетов...
Этот механизм получил название Мэшап — концепции построения веб-приложений путемкомбинирования функциональности различных ...
Мэшап-серверВ последних версиях Jahia в системе стали чаще использовать Javascript, поэтому длявозможности определять и по...
обыкновенные Java-портлеты) или просто повторно использовать уже существующие портлеты,если они удовлетворяют нуждам (напр...
Файловое хранилищеФайловое хранилище Jahia было полностью переписано в версии 6. В Jahia 5 хранилище былоосновано на испол...
Jahia. Вместе с хранилищем могут функционировать дополнительные службы портала: Rulesengine – для задания правил и прав до...
Инструменты и средства (движки)Инструменты и средства в Jahia принято называть движками (engines). Движки Jahia можносравн...
Наиболее важный движок – это движок ядра («Core engine»), отвечающий за генерированиестраницы содержимого, он вызывается к...
Подсистема поиска и индексированияПодсистема поиска и индексирования Jahia в данном документе будет представлена лишьобзор...
например, для загрузки последних пяти объектов содержимого с типа «Новость» при выводе настраницу последних пяти новостей....
АдминистрированиеИнтерфейс администрирования – это средство управления всеми различными подсистемамиJahia из одного места ...
Интеграция со SpringРазработчики Jahia любят Spring. Начиная с пятой версии системы Jahia была интегрирована соSpring Fram...
Слушатели событий и правилаДействия, выполняемые пользователями портала, порождают события, которые могутиспользоваться дл...
Еще один специфический слушатель – менеджер наблюдения JCR (JCR observation manager),который связует механизм событий Jahi...
Обработка запросов в JahiaВыше представлена схема обработки системой Jahia запроса от браузера. Схема можетиспользоваться ...
Во втором случае (WebDAV servlet) запрос будет перенаправлен в службу файлового хранилища,пройдет валидацию на право досту...
Конвейерыwww.jahia.com > The Company websitewww.jahia.org > The Community website   страница 35 из 40
Как было сказано в предыдущем разделе, Jahia использует конвейеры (pipelines) дляпредоставления настраиваемых цепочек обра...
Импорт и экспортПодсистема импорта и экспорта портала Jahia – это мощный механизм миграции контентаразличными способами ме...
КластеризацияРазвертывание системы Jahia на кластер – это эффективный путь уменьшения нагрузки нацентральный процессор и п...
УЗЛЫ АВТОРИЗАЦИИУзлы авторизации (Jahia «authoring» nodes) – это узлы кластера, использующиеся и припросмотре и при редакт...
9, route des Jeunes                                  CH-1227 Les acacias                                  Geneva, Switzerl...
Upcoming SlideShare
Loading in …5
×

Jahia 6 Overview (in russian)

1,073 views

Published on

Published in: Entertainment & Humor
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,073
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
7
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Jahia 6 Overview (in russian)

  1. 1. Документация Jahia v6 Обзор архитектуры Jahia – первое ПО интеграции веб-содержимого, объединяющее систему управления веб-содержанием (WCM) с управлением документами и функциями портала.Jahia9, route des JeunesCH-1227 Les acacias Январь 2010Geneva, Switzerlandwww.jahia.comThe Company websitewww.jahia.orgThe Community website
  2. 2. Jahia – обзор архитектурыВ документе представлен высокоуровневый обзор архитектуры корпоративного портала Jahia.Обзор призван помочь читателю разобраться с различными компонентами системы и связямимежду ними. Также данный обзор может послужить основой для понимания исходного кодасистемы, который является свободно доступным. Документ содержит много различных схем дляболее ясного освещения материала. Авторы пытались сделать их как можно более логичными ипонятными, не отрицая тот факт, что каждую подсистему портала можно рассматривать с разныхсторон и различными способами.Перевод с английского и редакция: Антон Щастный.www.jahia.com > The Company websitewww.jahia.org > The Community website страница 2 из 40
  3. 3. ОглавлениеJahia – обзор архитектуры...........................................................................................................2 Оглавление................................................................................................................................3 Общая картина..........................................................................................................................4 Компоненты пользовательского интерфейса.........................................................................7 Аутентификация и авторизация...............................................................................................9 Шаблоны оформления............................................................................................................11 Кэширование...........................................................................................................................13 Объекты содержимого............................................................................................................17 Портал......................................................................................................................................19 Мэшап-сервер..........................................................................................................................21 Файловое хранилище.............................................................................................................23 Инструменты и средства (движки).........................................................................................25 Подсистема поиска и индексирования..................................................................................27 Администрирование................................................................................................................29 Интеграция со Spring..............................................................................................................30 Слушатели событий и правила..............................................................................................31 Обработка запросов в Jahia...................................................................................................33 Конвейеры................................................................................................................................35 Импорт и экспорт.....................................................................................................................37 Кластеризация.........................................................................................................................38www.jahia.com > The Company websitewww.jahia.org > The Community website страница 3 из 40
  4. 4. Общая картинаJahia имеет в своем составе богатый арсенал разнообразных функций и подсистем. Основнаяидея работы портала заключается в их эффективной интеграции так, чтобы было удобнопользователям.Ниже на рисунке приведены основные подсистемы портала:Вкратце рассмотрим их сверху вниз: • Компоненты пользовательского интерфейса (UI Components): начиная с версии 6.0, Jahia стала использовать AJAX-фреймворк GWT (Google Web Toolkit), предоставляющий широкие возможности повторного использования компонентов интерфейса. Применение фреймворка облегчило разработчикам и интеграторам системы писать дружественные пользовательские интерфейсы, корректно работающие в основных браузерах. • Кэширование (Caching): для быстрой генерации страниц Jahia поддерживает многоуровневый кэш, начиная с уровня баз данных и до уровня html-страниц. Кэш является кластеро-совместимым и помогает делать систему масштабируемой и производительной. Реализации кэша являются подключаемыми. • Однократная регистрация (SSO) или технология единого входа: Jahia совместима со всеми основными реализациями механизма SSO (Single Sign-On), включая NTLM, CAS,www.jahia.com > The Company websitewww.jahia.org > The Community website страница 4 из 40
  5. 5. аутентификацию контейнера JEE, и т.д. Подсистема является подключаемой с помощью механизма конвейеров (pipeline mechanism), который будет описан позднее в этом документе.• Система управления содержимым (WCM): вначале Jahia разрабатывалась как система управления веб-содержимым (Web Content Management System) и поэтому этот компонент является наиболее зрелым. Начиная с версии 2.0 система управления содержимым обладает возможностями редактирования контента прямо на странице, имеет в своем составе типовые объекты содержимого и позволяет использовать портлеты.• Портал (Portal): Jahia не является портальным сервером в его строгом понимании, так как она предоставляет намного более настраиваемую среду, по сравнению с традиционными серверами. Бэк-энд системы полностью удовлетворяет стандарту JSR-286, поэтому есть возможность легко интегрировать портлеты на веб-страницы системы для их совместного использования с обычными объектами содержимого.• Файловое хранилище (File repository): Портал интегрирован с файловым хранилищем JCR (Java Content Repository), которое позволяет пользователям системы публиковать двоичные данные на веб-сайты и осуществлять доступ к хранилищу через различные интерфейсы (например WebDAV или Windows Shared Folders).• Списки контроля доступа (ACL, Access Control Lists): Jahia является модульной системой, широко использующей подсистему контроля доступа. Ее применение дает возможность эффективно разграничивать доступ пользователей к различным подсистемам и службам Jahia. Подсистема контроля доступа доступна по всему порталу.• Кластеризация (Clustering): Jahia допускает развертывание системы на кластере, таким образом обеспечивая резервирование и распределение нагрузки. В данном документе будет рассмотрена общая архитектура кластера Jahia.• Система поиска и индексирования (Search & Indexing): в списке основных возможностей большинства систем управления содержимым лежит поддержка поиска и индексирования. Jahia делает возможным поиск и индексирование не только по содержимому, но и во встроенном файловом хранилище. Портал позволяет производить поиск по конкретному семейству объектов содержимого, а также распределять задачи индексирования по нескольким серверам.• Администрировние (Administration): В системе представлены два отдельных интерфейса управления порталом: для администраторов сервера и администраторов сайта. Это разделение позволяет распределить задачи по поддержке портала по ролям. Интерфейсы дают пользователям возможность управлять всеми подсистемами Jahia, включая администрирование пользователей и груп, разрешений, загруженных шаблонов оформления, портлетов, категорий и так далее…Последующие низкоуровневые подсистемы не входят в состав портала, но их применениеобеспечивает хранение и доступ к информации, которую обрабатывает Jahia.www.jahia.com > The Company websitewww.jahia.org > The Community website страница 5 из 40
  6. 6. • Базы данных (Database): Jahia поддерживает все основные СУБД, включая и СУБД с открытым исходным кодом (MySQL, PostgreSQL). Архитектура портала не привязана к конкретной реализации СУБД так как Jahia использует технологию Hibernate ORM.• Файловая система (Filesystem): файловая система необходима для хранения поискового индекса, массива двоичных данных (BLOB) или массива символьных данных (CLOB). (По умолчанию портал хранит двоичные и символьные данные в БД). Файловая система должна быть распределенной, если планируется использовать кластер, при этом ответственность за корректную работу распределенных функций возлагается на саму файловую систему.• Облегчённый протокол доступа к каталогам (LDAP): Jahia не требует дополнительной настройки для работы с большинством LDAP-серверов (Lightweight Directory Access Protocol), включая OpenLDAP и ActiveDirectory. Вместе с технологией единого входа LDAP является основным средством для обеспечения комфортного доступа к содержимому конечным пользователям. Например, применив NTLM-аутентификацию и ActiveDirectory, Jahia сможет использовать аутентификацию в домене, которую проходят пользователи Windows при начале работы с компьютером.www.jahia.com > The Company websitewww.jahia.org > The Community website страница 6 из 40
  7. 7. Компоненты пользовательского интерфейсаНа данном рисунке приведены различные компоненты пользовательского интерфейса, которыепредоставляет Jahia.Начиная с Jahia 6.0 основой для всех компонентов является Google Web Toolkit. Используя GWT,разработчики могут быстро писать и отлаживать AJAX компоненты пользовательскогоинтерфейса. В своей основе Jahia использует библиотеку компонентов GXT с уже готовымикомпонентами для работы с таблицами, деревьями и другими стандартными элементамиинтерфейса.Компонент tri-panel – стандартный компонент пользовательского интерфейса Jahia,отображающий панель иерархических связей с выводом списка потомков и окном информации.Компонент панели инструментов используется для быстрого доступа к инструментам,переключения режимов навигации/редактирования содержимого. Панель иснтрументов похожа нате, что используются в стандартных настольных приложениях, кроме того, что инструменты наней отображаются в зависимости от контекста (прав просмотра и редактирования для текущегопользователя, текущего режима просмотра).www.jahia.com > The Company websitewww.jahia.org > The Community website страница 7 из 40
  8. 8. Поверх перечисленных компонентов в Jahia имеется полный набор элементов пользовательскогоинтерфейса: от компонентов управления файлами и до управления категориями, включаякомпоненты просмотра и навигации по содержимому типа «хлебных крошек» (breadcrumbs) изакладок.www.jahia.com > The Company websitewww.jahia.org > The Community website страница 8 из 40
  9. 9. Аутентификация и авторизацияJahia позволяет использовать следующие механизмы аутентификации: • CAS SSO (Single Sign-On c CAS, Central Authentication Service); • NTLM (NT LAN Manager от Microsoft для Windows NT); • аутентификация контейнера JEE; • подключаемый конвейер аутентификации, с помощью которого можно с легкостью добавить поддержку других технологий однократной регистрации.После того как однократно пользователь будет идентифицирован, работу продолжит системаразграничения прав. Состав системы разграничения прав:www.jahia.com > The Company websitewww.jahia.org > The Community website страница 9 из 40
  10. 10. • списки контроля доступа для объектов содержимого; • разрешения на все действия пользователя; • подключаемые службы для пользователей (user services); • подключаемые службы для групп (group services); • совместимость с LDAP; • хранилище базы пользователей в БД (в настройках по умолчанию).На рисунке выше показано, как различные уровни подсистемы (в том числе и подключаемыеинтерфейсы) взаимодействуют между собой. Служба маршрутизации позволяет использоватьединые интерфейсы доступа к БД и LDAP-хранилищу базы пользователей. Реализовавинтерфейсы поставщика сервисов вы сможете добавлять дополнительные службы.www.jahia.com > The Company websitewww.jahia.org > The Community website страница 10 из 40
  11. 11. Шаблоны оформленияОт системы шаблонов Jahia зависит то, как информация будет отображаться на странице.Шаблоны оформления группируют в набор. Набор шаблонов в последующем загружают насервер. Внешний вид сайта будет зависеть от того, какой набор шаблонов вы выбрали. Одиннабор может расширять другой, «наследуя» его.Состав набора шаблонов: • файлы описания содержания (content definition files, CND); • JSP страницы; • темы и оболочки оформления (skins); • дескриптор развертывания (deployment descriptor) для набора шаблонов (обязательно); • ресурсы (resource bundles); • Java-классы.При запуске Jahia определит все имеющиеся в системе шаблоны (папка WEB-INF/var/shared_templates) и развернет их на сервере. В режиме разработки (development mode)любые изменения в дескрипторе развертывания повлекут перезагрузку набора шаблонов, этимсамым позволив мнгновенно видеть изменения в оформлении на сервере.Как было выше показано на рисунке, для оформления портала в наборах шаблонов можноприменить достаточно много различных технологий:www.jahia.com > The Company websitewww.jahia.org > The Community website страница 11 из 40
  12. 12. • Библиотеки тегов: в целях облегчения поддержки и обновления шаблонов в Jahia решили максимально отказаться от использования скриплетов. Для этого в систему включили богатые библиотеки тегов, прекрасно работающие со стандартным набором тегов JSTL. Данные библиотеки предоставляют функции по работе с елементами пользовательского интерфейса (например работа с панелью инструментов), возможности делать запросы к объектам содержимого, механизмы подключения родительских шаблонов тегом Include (поддержка наследования). Подробная информация по библиотекам тегов приведена в Руководстве по разработке шаблонов (Template developer guide).• Механизм наследования: для облегчения разработки новых наборов в шаблонах можно использовать механизм наследования, подобный наследованию в языке Java. В случае разработки нового набора с использованием механизма наследования нужно переопределить только те шаблоны, в которых есть изменения, а остальные будут унаследованы от шаблона-родителя. Все это также применимо к файлам, которые включены тегом Include (просматривается шаблон-родитель на предмет наличия файла, который нужно подключить, если он не был переопределен локально). Механизм наследования позволит администраторам гарантировать согласованность оформления на большом количестве сайтов портала, при этом сохраняя возможность использовать совершенно различные наборы шаблонов на каждом конкретном сайте.• Развертывание: как было сказано ранее, наборы шаблонов могут быть развернуты в Jahia при запуске сервера. Поэтому необходимо просто добавлять новые наборы в инсталляцию Jahia. Однажды загрузив набор, вы его делаете доступным в системе. Ну и администраторы сайта в свою очередь уже будут определять наборы, которые будут использоваться на сайтах портала: либо это будут различные наборы шаблонов для каждого сайта, либо в системе будет один набор-родитель, от которого все остальные шаблоны будут наследовать оформление.• Темы и оболочки оформления (skins): темы используются для придания одному набору шаблонов разного вида. В качестве примера можно привести набор, в котором есть темы по временам года: зимняя тема, весенняя, летняя и осенняя темы. Тема может быть установлена администратором, либо предоставлена на выбор пользователю. Оболочки позволяют авторам контента по-разному оформлять объекты содержимого одного типа.• Описание контента (content definitions): Jahia использует стандартный формат описания содержимого JCR, который был расширен (интернационализацией, строгой типизацией элементов контента) для более мощной работы с содержимым.www.jahia.com > The Company websitewww.jahia.org > The Community website страница 12 из 40
  13. 13. КэшированиеДля высокопроизводительных веб-систем наподобие Jahia кэширование необходимо дляизбежания повторной генерации динамического содержимого при высоких нагрузках. На рисункепоказана архитектура подсистемы кэширования. Все высокоуровневые кэши базируются наслужбе кэширования (cache service), представляющей реализации кэша. Ниже этой службы могутиспользоваться различные реализации кэша, некоторые из них могут зависеть от других службJahia. Например кэш ссылок («Reference Cache») зависит от службы кластеров «Cluster service»,позволяющей обмениваться сообщениями в кластере Jahia.ТИПЫ КЭШАВсе типы высокоуровневых кэшей используют одну и ту же службу кэширования, котораяпредставляет реализации кэша. Начиная с Jahia 5.0SP4 в системе появилась возможностьприменять различные реализации кэша для различных типов кэша, делая систему гибкой дляконфигурирования. Например, можно использовать EHCache для кэша пользовательских html-страниц и использовать ReferenceCache для остальных типов кэшей. Это конфигурация по-умолчанию для Jahia 5.0SP4 и Jahia 6.0. Естественно также есть возможность инегрироватьдругие реализации кэша с помощью интерфейса поставщика служб (SPI, service providerinterface), который предоставляет Jahia.www.jahia.com > The Company websitewww.jahia.org > The Community website страница 13 из 40
  14. 14. Для оптимизации производительности доставки веб-страниц Jahia использует несколько уровнейкэша: • кэш браузера, • кэш пользовательских html-страниц (front-end HTML caches), • кэш объектов, • кэш базы данных.Каждый из этих уровней решает свою задачу, преследуя единую цель: чтобы значениявычислялись только один раз.КЭШ БРАУЗЕРАНесмотря на то, что данный кэш не входит в состав портала Jahia, а является частью браузера,именно он играет критическую роль в гарантировании хорошей производительности системы дляконечного пользователя. Например, использование в Jahia фреймворка GWT позволилоинтенсивно кэшировать AJAX-код в кэше браузера, тем самым избавив портал от необходимостиwww.jahia.com > The Company websitewww.jahia.org > The Community website страница 14 из 40
  15. 15. перегружать скрипты, которые не менялись. Jahia корректно работает с кэшем тех страниц,которые были изменены и контролирует время жизни страничного кэша, чтобы не обновлять безнадобности редко меняющееся содержимое.КЭШ ПОЛЬЗОВАТЕЛЬСКИХ HTML-СТРАНИЦИсторически сложилось так, что в Jahia имеется много реализаций для кэша html-страниц. Первойреализацией был полностраничный html-кэш (full-page HTML cache). Данный кэш оченьэффективен для простых страниц, если они уже есть в кэше; и он не очень подходит для страницс различающимися фрагментами (например отображающие информацию о пользователе настранице).В Jahia 5 мы представили сервер кэша ESI (ESI cache server), который добавил возможностькэшировать фрагменты html-страниц. Для эффективного использования данной технологиитребуется отдельный сервер кэша, который будет выполняться на отдельной виртуальноймашине. Являясь более эффективной технологией для генерации динамических страниц посравнению с полностраничным кэшем, система ESI страдает от проблем с внутрисервернымикоммуникациями, которые нужно очень хитро настраивать для нормальной работы. Такжеприменение кэша ESI требует от интеграторов хорошего знания модели фрагментарногокэширования (fragment caching model), что не всегда им нравится.Jahia 6 взяла от обоих подходов лучшее, комбинируя эффективность встроенногополностраничного кэша с поддержкой фрагментарного кэширования от ESI cache server. Этареализация кэша была названа «Кэш контейнера» («Container Cache»), она применяетфрагментарное кэширование на уровне контейнера, делая взаимодействие с шаблонами оченьпростым. Разработчикам шаблонов не придется добавлять специальную разметку для настройкикорректного фрагментарного кеширования. Даже если появится необходимость управлятьгенерированием фрагментов, то сделать это будет намного легче, чем в предыдущих версияхJahia.Каркасный кэш («Skeleton Cache») – еще одна реализация кэша html-страниц, кэширующая всеостальное (кроме фрагментов) содержимое. Группировкой двух данных подсистем кэшированияпо производительности можно получить эквивалент полностраничного html-кэша, но уже свозможностью кэшировать фрагменты.КЭШ ОБЪЕКТОВКэш объектов лежит ниже подсистемы кэша html-страниц. Этот уровень кэша обслуживает всеJava-сущности системы: объекты содержимого, объекты пользователей, групп, категорий,описания контента и т.д. Кэш объектов существует над кэшем базы данных для избежанияреконструирования объектов при каждом запросе к модели. Уровень является прозрачным дляразработчиков, взаимодействовать с ним через Jahia API придется только в том случае, еслиизменения объектов не влекут за собой автоматическое обновление кэша.www.jahia.com > The Company websitewww.jahia.org > The Community website страница 15 из 40
  16. 16. КЭШ БАЗЫ ДАННЫХПоследний уровень кэша – уровень базы данных, обеспечивающий минимализацию запросов кБД. Он очень важен. При работе с базой данных происходит сериализация/десериализацияобъектов, нагружающая сеть и ресурсы системы так, что накладные расходы на запросы к БДмогут оказаться весьма существенными. Этот уровень кэша полностью реализован средствамиHibernate ORM.www.jahia.com > The Company websitewww.jahia.org > The Community website страница 16 из 40
  17. 17. Объекты содержимогоПеречень объектов содержимого в Jahia: • страницы (pages), включая страницы контента, внутренние и внешние ссылки; • списки однотипных контейнеров (container lists); • контейнеры (содержат поля разных типов); • простые поля (fields) и поля метаданных (metadata fields, могут быть различного типа: SmallText, BigText, Integer, Date, File reference, и т.д.).Все эти объекты имеют общие черты: • их можно разбивать на категории;www.jahia.com > The Company websitewww.jahia.org > The Community website страница 17 из 40
  18. 18. • доступ к ним может регламентироваться с помощью списков контроля доступа (ACL); • они описываются с помощью файлов описания контента (content definitions files, cnd-файлов);Формат файлов описания удовлетворяет стандарту Java Content Repository (JCR) на файлы CNDс добавлением следующих возможностей: • мультиязычные значения полей; • более точный ввод типов полей (property types); • возможность указания ресурсов (resource bundle support); • списки выбора (choice lists); • многое другое …Объекты содержимого загружаются из базы данных и различных уровней кэша. Затем онипередаются в подсистему шаблонов, в которой интеграторы могут окончательно отрисоватьстраницу с использованием библиотек тегов Jahia.www.jahia.com > The Company websitewww.jahia.org > The Community website страница 18 из 40
  19. 19. ПорталВ состав Jahia включен сервер порталов, основанный на Apache Pluto – эталонной реализацииспецификации Java портлетов (JSR-286 Portlet API). Целью применения Apache Pluto являетсяпредоставление возможности интеграторам применять портлеты на страницах. Любой портлет,следующий стандартам, может быть с легкостью встроен в портал Jahia. На рисунке вышеприведены различные типы портлетов, которые могут использоваться в Jahia.Одно из полей объекта содержимого – поле приложения (application field), ссылающееся напортлет. Это поле позволяет интеграторам определить место в структурированном дереве веб-содержимого, где приложение может появиться. Портлеты также могут быть разбиты на категориии доступ к ним можно контролировать с помощью списков контроля доступа.Jahia 6 также использует портлеты внутренне. Внутренние портлеты могут включать в себяописания контента, использутся они для генерации различных слоёв объектов содержимого. Слоив портале используются в качестве функциональных блоков для построения веб-страниц. Ихможно использовать повторно на различных страницах.www.jahia.com > The Company websitewww.jahia.org > The Community website страница 19 из 40
  20. 20. Этот механизм получил название Мэшап — концепции построения веб-приложений путемкомбинирования функциональности различных программных интерфейсов и источников данных.Для построения блоков в портальном сервере Jahia используется мэшап-сервер (Mashup Server).www.jahia.com > The Company websitewww.jahia.org > The Community website страница 20 из 40
  21. 21. Мэшап-серверВ последних версиях Jahia в системе стали чаще использовать Javascript, поэтому длявозможности определять и повторно использовать мэшапы на веб-сайтах Jahia в состав порталавключили новый мэшап-сервер.Мэшап-сервер надстроен над сервером порталов, он позволяет с легкостью подключать новыеисточники данных (mashup types), просто загружая в систему новые портлеты. На рисунке вышемы показали различные источники данных – мэшапы: Google Gadgets, видео с YouTube,фрагменты html и Javascript. Эти источники фактически являются типами портлетоввключающими в себя описание контента. По описанию контента пользовательский интерфейсбудет автоматически настраивать и отрисовывать мэшап. Администраторы сайта смогут иметьвозможность строить мэшапы, разбивать их по категориям, ограничивать доступ с помощьюсписков контроля доступа и позволять авторам контента использовать их в своих разделах и вмерах своей компетенции в системе. Разработчкики могут группировать мэшапы в пакеты (какwww.jahia.com > The Company websitewww.jahia.org > The Community website страница 21 из 40
  22. 22. обыкновенные Java-портлеты) или просто повторно использовать уже существующие портлеты,если они удовлетворяют нуждам (например html-мэшап достаточно общий и может подойти вомножестве случаев). Мэшапы также можно импортировать в систему, используя функцииимпорта/экспорта Jahia.Для улучшения системы разработчики Jahia всегда с интересом смотрят на новые технологии.Стандарты для мэшапов сейчас еще только разрабатываются, так что Jahia будет ингегрироватьновые возможности данной технологии по мере ее развития.www.jahia.com > The Company websitewww.jahia.org > The Community website страница 22 из 40
  23. 23. Файловое хранилищеФайловое хранилище Jahia было полностью переписано в версии 6. В Jahia 5 хранилище былоосновано на использовании библиотеки Apache Slide library, которая на то время была де-фактостандартом файловых репозитариев с открытым исходным кодом.Но всвязи с бурным развитием и хорошим качеством Apache Jackrabbit – реализацииспецификации Java Content Repository, Jahia 6 стала использовать ее в качестве стандартногофайлового хранилища и строить поверх данной библиотеки свои сервисы. На самом делеархитектура Jackrabbit не предполагает тесной зависимости от ее использования, а используетстандартный JCR API для возможности предоставления доступа к различным репозитариям. ВJahia 6 стало возможным иметь доступ к файловым хранилищам CIFS/SMB. Некоторые другиеразвивающиеся реализации доступны в песочницах репозитариев (sandbox repositories), срединих коннекторы FTP, Alfresco, Exo Platform, Nuxeo.На рисунке выше вы можете отметить, что содержимое Jahia (Jahia Content) доступно в качествеJCR-провайдера, это тоже новая возможность Jahia 6. Пока что в данном направлении проведенатолько первоначальная работа по совместимости и интерфейс к данной реализации не можетпохвастаться высокой производительностью, но работы по его улучшению будут ведутсяпостоянно от версии к версии.Поверх службы файлового хранилища интерфейсы отдают контент с помощью различныхтехнологий: WebDAV, просмотр файлов в шаблонах и в пользовательском AJAX-интерфейсеwww.jahia.com > The Company websitewww.jahia.org > The Community website страница 23 из 40
  24. 24. Jahia. Вместе с хранилищем могут функционировать дополнительные службы портала: Rulesengine – для задания правил и прав доступа к файлам, Thumbnail management – длягенерирования миниатюр изображений (thumbnail), Content extractors – для извлеченияметаданных.www.jahia.com > The Company websitewww.jahia.org > The Community website страница 24 из 40
  25. 25. Инструменты и средства (движки)Инструменты и средства в Jahia принято называть движками (engines). Движки Jahia можносравнить с объектами Action в Struts. Это блоки логики приложения, каждый их которыхвыполняет конкретную задачу. Субдвижки (sub-engines) – еще более мелкие блоки,контролирующие взаимодействие с примитивами пользовательского интерфейса (напримерконтролирующие редактирование поля).www.jahia.com > The Company websitewww.jahia.org > The Community website страница 25 из 40
  26. 26. Наиболее важный движок – это движок ядра («Core engine»), отвечающий за генерированиестраницы содержимого, он вызывается каждый раз, когда портал должен отобразить страницу.Названия других движков говорят сами за себя: например движки Login и Logout отвечают заотрисовку пользовательского интерфейса входа и выхода из системы и обработку данных,введенных пользователем при этих действиях.Движки редактирования (обработки) контента интегрированы с фреймворком валидации(validation framework), что позволяет интеграторам задавать правила проверки введенныхпользователем данных.Движки также интегрированы с пользовательским AJAX интерфейсом. Цель применения AJAX –сделать пользовательский интерфейс современным, построенным на компонентах, которыеможно многократно повторно использовать. Интеграторы смогут применять уже существующиемногочисленные библиотеки компонентов при построении приложений. Работа в данномнаправлении начата в Jahia 6 применением компонентов GWT.Субсредства в Jahia используются для отображения интерфейсов редактирования контейнеров.Контейнер может содержать в себе поля разного типа. При редактировании поля какого-либо типадвижок редактирования контейнера (container edition engine) обращается к субдвижку,отвечающему за этот тип поля. Например, поле типа File, представляющее файл, будетпредоставлять UI-интерфейс, позволющий пользователю просматривать директории и выбиратьфайлы, в то время как, поле типа Small text просто будет отображать поле для ввода текста.Jahia обрабатывает запросы к движкам, используя параметр «/engineName» в URL. Еслипараметр без значения – запрос принимает движок ядра. Строковые значения, которыеиспользуются для именования движков, объявляются самими движками, а в классе JahiaEngine,метод getName() будет определять ключ для механизма разрешения параметра «/engineName».www.jahia.com > The Company websitewww.jahia.org > The Community website страница 26 из 40
  27. 27. Подсистема поиска и индексированияПодсистема поиска и индексирования Jahia в данном документе будет представлена лишьобзорно – это очень обширная подсистема. Выше на рисунке мы проиллюстрировали основныесоставляющие данной подсистемы.Новшеством Jahia 6 является интеграция стандарта OpenSearch. Jahia может играть роль какпотребителя, так и как генератора OpenSearch-запросов. Это значит, что пользователи могут,например, интегрировать Jahia в панель поиска своего браузера и напрямую делать поисковыезапросы из панели браузера. С другой стороны, Jahia может пользоваться услугами различныхOpenSearch-провайдеров и предоставлять на одной странице сведенные результаты для поискапо Jahia, Google, MSN и т.п.Что касается более традиционных решений веб-поиска, Jahia предлагает библиотеки тэгов дляпоиска по содержимому либо в простом формате полнотекстового поиска, либо используярасширенные поисковые запросы. Для облегчения формировния расширенных поисковыхзапросов в UI-компоненты Jahia встроены удобные селекторы параметров запросов. Этикомпоненты сделаны с использованием AJAX-фреймворка и являются подобными тем, которыеприменялись при введении данных в интерфейсе входа в систему.Другая альтернатива для запросов к объектам содержимого – напрямую встраивать запросы науровне шаблонов, а пользователи на экране будут видеть результат уже подготовленногозапроса. Это называется «Запросы контейнера» (Container queries) и использоваться они могут,www.jahia.com > The Company websitewww.jahia.org > The Community website страница 27 из 40
  28. 28. например, для загрузки последних пяти объектов содержимого с типа «Новость» при выводе настраницу последних пяти новостей.В основе всех этих технологий формирования пользовательских запросов лежат серверныесистемы, непосредственно выполняющие поиск и индексирование контента. Поисковый механизмпортала дает возможность осуществлять полнотекстовый поиск, поиск с уточняющими запросамикак по содержимому Jahia, так и по файловому содержимому.Основа подсистемы поиска и индексирования – opensource фреймворки Compass и ApacheLucene. Они хранят свой индекс, используя средства файловой системы, но также имеютсредства для хранения информации в базах данных или в распределенных файловых системах.Стандартная реализация подсистемы с использованием файловой системы на данный моментнаиболее еффективная и готовая к использованию (production-ready), так что Jahia поставляетсяв комплекте с этой реализацией.www.jahia.com > The Company websitewww.jahia.org > The Community website страница 28 из 40
  29. 29. АдминистрированиеИнтерфейс администрирования – это средство управления всеми различными подсистемамиJahia из одного места и для администраторов сайта, и для администраторов сервера. Интерфейсадминистрирования позволяет администратором выполнять все виды задач: • создавать, обновлять, удалять пользователей, группы, сайты и категории; • устанавливать глобальные разрешения; • устанавливать разрешения на шаблоны и портлеты, разбивать шаблоны и портлеты на категории; • просматривать статус внутреннего кэша и сбрасывать его; • устанавливать политику назначения паролей; • определять языки сайта; • настраивать возможность удаленной публикации содержимого; • выполнять другие функции, детально описанные в Руководстве администратора (Administrator’s guide).Интерфейс администрирования основан на сервлете-диспетчере и коллекции классов,контролирующих UI для различных настроек сервера. Также для удобства администраторовинтерфейс поддерживает компоненты пользовательского интерфейса на AJAX.www.jahia.com > The Company websitewww.jahia.org > The Community website страница 29 из 40
  30. 30. Интеграция со SpringРазработчики Jahia любят Spring. Начиная с пятой версии системы Jahia была интегрирована соSpring Framework для облегчения построения целостных, быстрых и гибких портальных решений.Для подключения подсистем Jahia к многочисленным сервисам, интеграторам теперь простоследует использовать хорошо известные механизмы настроек и внедрения зависимостей(dependency injection), которые предоставляет Spring.Рисунок выше поясняет настройки, используя которые с помощью Spring можноинициализировать все различные подсистемы Jahia. Внешние библиотеки портала: Apache Pluto,Hibernate, Apache Lucene – также работают со Spring, что делает возможным реализовыватьстройную архитектуру портала.Опыт интеграции Jahia со Spring был успешным и зависимостей системы от Spring практически непоявилось, что делает возможным в дальнейшем в случае необходимости свободно мигрироватьна другой фреймворк.www.jahia.com > The Company websitewww.jahia.org > The Community website страница 30 из 40
  31. 31. Слушатели событий и правилаДействия, выполняемые пользователями портала, порождают события, которые могутиспользоваться для выполнения определённых задач. Jahia позволяет интеграторамрегистрировать свои слушатели событий. На приведенном выше графике показано, как события,передаются по различным подсистемам и как они могут быть использованы разработчиками.Событие порождается при выполнении некоторого действия порталом. Это может быть командапользователя, действие по расписанию, фоновый процесс. Действие вызывает генераторсобытия (event generator) для создания объекта события. Данный объект далее будет передан вреестр слушателей (listeners registry), который зарегистрированным слушателям будет вызыватьнеобходимые классы. Некоторые из слушателей событий являются шлюзами к другимслушателям, использующим другие технологии. Есть возможность использовать слушательсобытий Groovy (Groovy event listener), позволяющий интегратором использовать язык Groovy вреализациях слушателей; слушатель событий JSP (JSP event listener), делающий то же для JSP-страниц.www.jahia.com > The Company websitewww.jahia.org > The Community website страница 31 из 40
  32. 32. Еще один специфический слушатель – менеджер наблюдения JCR (JCR observation manager),который связует механизм событий Jahia со стандартной моделью наблюдения JCR (JCRobservation). Под данной реализацией находится наблюдатель JBoss Rules (JBoss Rules observer),позволяющий интеграторам использовать правила (rules) для опработки событий.www.jahia.com > The Company websitewww.jahia.org > The Community website страница 32 из 40
  33. 33. Обработка запросов в JahiaВыше представлена схема обработки системой Jahia запроса от браузера. Схема можетиспользоваться разработчиками для определения подсистем портала, задействованных впроцессе обработки конкретного запроса.Запрос браузера может быть направлен либо на Jahia servlet, либо на WebDAV servlet (еслизапрашивается бинарный файл).www.jahia.com > The Company websitewww.jahia.org > The Community website страница 33 из 40
  34. 34. Во втором случае (WebDAV servlet) запрос будет перенаправлен в службу файлового хранилища,пройдет валидацию на право доступа к запрашиваемому ресурсу и потом результат будетвозвращен обратно в браузер.В первом случае будет вызван Jahia servlet. Jahia немедленно создаст объект контекста (contextobject) под названием «ParamBean». Данный будет содержать в себе всю информацию о запросе,включая такие вещи как запрошеная страница, текущий пользователь, язык просмотра и такдалее. Внутренне ParamBean использует механизм конвейерной обработки (pipeline mechanism)для разрешения пользователя. Механизм настраиваемый для интеграции других технологийразрешения пользователей, детали этого механизма описаны в разделе «Конвейеры».После создания объекта ParamBean, Jahia передает управление объекту OperationManager,который также использует конвейер. Конвейер действий описан далее в этом документе всоответствующем разделе. Конвейерные операции будут взаимодействовать со службами Jahiaдля выполнения желаемых действий, и результат будет зависеть от того какие движки быливызваны в конвейер.В случае использования движка ядра, конвейер действий создаст все необходимые объектысодержимого, дающие разработчику шаблонов тот контент, который он будет размещать на JSP-страницах. Поэтому после формирования объектов контента портал напрявляетпользовательский запрос к JSP-шаблону для отрисовки страницы.В заключение конечный результат отправляется обратно в браузер. Естественно, это оченьупрощенный пример работы портала, но он может послужить базой для понимания схемыобработки запросов в Jahia. Взаимодействие портала с кэшами было опущено для упрощенияописания процесса, но очевидно, что интеграторам придется брать их во внимание приразработке своих портальных решений.www.jahia.com > The Company websitewww.jahia.org > The Community website страница 34 из 40
  35. 35. Конвейерыwww.jahia.com > The Company websitewww.jahia.org > The Community website страница 35 из 40
  36. 36. Как было сказано в предыдущем разделе, Jahia использует конвейеры (pipelines) дляпредоставления настраиваемых цепочек обработки. Конвейер – это упорядоченый списокуровней (клапанов, valves), которые по очереди вызываются друг за другом. Что являетсяспецифическим для шаблона проектирования Конвейер (pipeline design pattern) – так это то, чтоответственностью каждого уровня является вызвать следующий. Другими словами, уровеньможет выбирать, передавать выполнение следующему, или нет.Конвейер аутентификации вызывается объектом ParamBean для определения пользователя,основываясь на текущем контексте. Пользователи могут быть определены с использованием всехметодов: это поиск информации в сохраненных сессиях, если они ранее уже были определены;или с помощью интегрированной системы единого входа типа CAS, или используяаутентификацию контейнера JEE. На рисунке выше нижний конвейер – конвейер аутентификации,в нем видны различные уровни для определения пользователей. Мы не будем углубляться вдетали каждого уровня, но стоит отметить, что данный механизм разрешения являетсянастраиваемым с помощью xml-файлов Spring, что облечает интеграторам применять ихсобственные уровни.Конвейер действий (верхняя часть рисунка) используется в Jahia для предоставленияподключаемых цепочек обработки запросов. Уровни конвейера могут принимать решениеостановить обработку запроса в любой точке, что особенно важно при работе с кэшем. Еслисодержимое можно прочитать из кэша, обработка запроса приостанавливается в этом месте, иэто освобождает сервер от выполнения ненужных операций, делая процесс обработки запросаочень еффективным. Уровень конвейера, ответственный за чтение из кэша на рисунке назван«Сборщик каркаса» («Skeleton aggregator»). Уровень конвейера «URL history» используется длязаписи всех урлов, запрошенных пользователем в целях построения навигационной цепочки(breadcrumbs).Интеграторы могут найти интересной возможность настраивать конвейер действий длярасширения функционала, задействованного при обработке пользовательских запросов. Следуетотметить, что порядок размещения уровней в конвейере очень важен, и что не рекомендуетсяэтот порядок менять без глубокого понимания принципов работы портала Jahia.www.jahia.com > The Company websitewww.jahia.org > The Community website страница 36 из 40
  37. 37. Импорт и экспортПодсистема импорта и экспорта портала Jahia – это мощный механизм миграции контентаразличными способами между веб-сайтами Jahia или даже между различными инсталляциямисистемы.Для экспорта контента система использует xml-формат хранения данных JSR-170 (или JCR),вместе с другими специфическими файлами (типа файловых иерархий для экспорта двоичныхданных). Все эти файлы сжимаются в zip-архив, который можно будеть использовать вподсистеме импорта.Стандартизованный механизм импорта и экспорта делает возможным экспортировать полнуюинсталляцию Jahia, набор сайтов, одиночный сат или даже один раздел сайта; перемещатьконтент между сайтами и разделами сайтов Jahia; экспортировать и импортировать его в не-Jahiaсистемы.Jahia также использует технологию импорта и экспорта для возможности удаленной публикациисодержимого. В данном случае обычно импорт (экспорт) содержимого вызываетсяпланировщиком задач. Технология импорта и экспорта умеет распознавать, когда содержимоебыло изменено, и в таком случае просто обновляет объект содержимого вместо создания нового.ОТНОШЕНИЕ К COPY/PASTEХоть это и не очевидно, но функция copy/paste тоже использует систему импорта и экспорта.Данный факт проясняет, почему содержимое можно копировать и вставлять только междусовместимыми описаниями контента, так как Jahia должна знать, как преобразовывать контентмежду источником и приемником контента.Связанные копии (Linked copies) также используют систему систему импорта и экспорта приотправке содержимого получателю (приемнику).www.jahia.com > The Company websitewww.jahia.org > The Community website страница 37 из 40
  38. 38. КластеризацияРазвертывание системы Jahia на кластер – это эффективный путь уменьшения нагрузки нацентральный процессор и память для обеспечения работы высоконагруженых сайтов.Типичная установка Jahia на кластер показана на рисунке выше. Узлы Jahia обмениваютсянапрямую друг с другом (direct messaging) и имеют доступ к разделяемым ресурсам: файловойсистеме и базе данных. Файловая система используется для хранения поискового индекса и дляхранения двоичных данных (если сервер настроен на хранение двоичных данных в файловойсистеме, настройка по умолчанию – хранение в БД). В базе данных хранится все остальное.Поэтому очень важно иметь высокопроизводительную инсталляцию базы данных дляобеспечения хорошей масштабируемости всей системы.Jahia также может различать узлы по типам в кластере для обеспечения болееспециализированной обработки. Рассмотрим вкратце различные типы узлов.УЗЛЫ ПРОСМОТРАУзлы просмотра (Jahia «browsing» nodes) – это специализированные узлы Jahia, которыефункционируют как узлы публикации содержимого. Также они взаимодействуют с портлетами дляотрисовки страниц. Использование данного типа узла позволяет отделить нагрузку на системувыдачи контента от нагрузки на систему авторизации и систему фоновой обработки запросов.www.jahia.com > The Company websitewww.jahia.org > The Community website страница 38 из 40
  39. 39. УЗЛЫ АВТОРИЗАЦИИУзлы авторизации (Jahia «authoring» nodes) – это узлы кластера, использующиеся и припросмотре и при редактировании содержимого портала. Это наиболее часто используемый типузла в кластере Jahia, поэтому нужно иметь несколько экземпляров таких узлов с тем, чтобыраспределить нагрузку.УЗЛЫ ОБРАБОТКИВ Jahia длительно выполняющиеся задачи (это действия по валидации документов (workflowvalidation operations), copy/paste-операции, импорт и индексирования содержимого) выполняютсякак фоновые процессы. Таким образом при выполнении этих длительных операций другие узлыпо-прежнему могут обрабатывать запросы по просмотру и редактированию содержимого.СЕРВЕР ИНДЕКСИРОВАНИЯИндексирование содержимого и файлов может оказаться очень дорогой операцией поиспользованию центрального процессора и по нагрузке на оперативную память сервера.Например, для индексирования pdf-файла сервер должен выполнить скрипты, которыесодержатся в файле для того, чтобы извлечь текстовое содержимое. Это требует выполненияинструкций Postscript-подобного языка, включая управление памятью и обработку инструкций,просто для того, чтобы извлечь контент. Индексирование больших файлов также требует памяти,которая не может быть освобождена до момента завершения открытия файла.Индексирование обычно относят к операции, которая не требует выполнения в режиме реальноговремени, поэтому она выполняется в фоне. Для того, чтобы понизить нагрузку на сервера Jahia,выполняющие обработку текущих запросов пользователей, настоятельно рекомендуетсяустановить отдельный сервер индексирования содержимого.Можно даже установить в системе несколько узлов сервера индексирования для обеспечениябесперебойного выполнения данной операции.www.jahia.com > The Company websitewww.jahia.org > The Community website страница 39 из 40
  40. 40. 9, route des Jeunes CH-1227 Les acacias Geneva, Switzerland www.jahia.com The Company website www.jahia.org The Community websitewww.jahia.com > The Company websitewww.jahia.org > The Community website страница 40 из 40

×