Контент ориентированное программирование JSR-170,JSR-283
Содержание Вступление Концепция Контент Ориентированного Программирования Реализация Java Content Repository Использование
Концепция Откуда появилась Основные принципы Логическое разделение содержимого Динамическое связывание данных Независимость реализации компонентов системы
Приложения и хранилища данных
Java Community Process Open Software Standards Organization Организация основана SUN
Что такое JCR?
Индустриальный стандарт
Мотивация создания спецификации JCR? Много независимых хранилищ данных API для взаимодействия определяется поставщиком Необходимость в стандартном API Стандартный API должен быть: Независимым от архитектуры, источников данных или протоколов Легко использовать Относительно легко реализовать производителям
Узлы и свойства Узлы организуют данные Свойства хранят данные Любой узел может содержать свойства
Все данные иерархические
Типы узлов Узел может быть построен на NodeType или MixinType Определяет структуру Определяет свойства
Типы узлов Существует множество стандартных типов узлов Все наследуются от базового (nt:base) nt:unstructured наиболее гибкий тип Наиболее используемые MixinTypes mix:lockable поддержка блокировок mix:referenceable поддержка UUID mix:versionable поддержка версионности
13 Иерархия типов Иерархия контента nt:hierarchyNode nt:folder nt:file nt:linkedFile nt:resource Иерархия типов узлов и контента
Первый уровень реализации JCR Уровень соответствия 1 (Только чтение) Доступ к данным использую три способа Обход узлов Прямой доступ Используя язык запросов XPath Используется упорядоченная структура содержимого Может быть экспортирован весь репозиторий в XML
Приложения первого уровня Типичный приложения Уровня-1 СМС - шаблоны, Доставка контента Отображающие портреты Экспорт репозитория Приложения для создания отчетов
Ситуация сегодня
Унификация
Второй уровень реализации JCR Уровень соответствия 2 (Чтение - запись) Включает все возможности 1 уровня Импорт из XML Добавление/изменение/удаление данных Использование нестандартных типов данных Обработка структурированной и неструктурированной информации Ссылочная связанность
Синхронизация
Консолидация
Опциональные возможности JCR Блокировки Управление транзакциями Наблюдение Слушателю приходит сообщения об изменениях в репозитории Версионность Возможность получить доступ к предыдущим ревизиям данных Запросы используя адаптированный SQL и XPath
Обзор АPI JCR API определено в javax.jcr пакете 15 интерфейсов 2 класса 14 исключений
Сессии javax.jcr.Session Предоставляет доступ к содержимому репозитория Предоставляет доступ к корневому узлу Дает возможность доступа к узлу по UUID
Контроль доступа Аутентификация используя такие методы Repository.login(Credentials cred) Pluggable системы аутентификации JAAS - реализация наиболее распространенная Управление контролем доступа зависимо от реализации
Как начать работу? Сконфигурировать репозиторий Запустить или создать репозиторий Пройти аутентификацию Получить сессию Работа с данными (добавление/редактирование/удаление) Выйти из сессии Остановить репозиторий
Сконфигурировать репозиторий Запустить или создать репозиторий Пройти аутентификацию Получить сессию Работа с данными (добавление/редактирование/удаление) Выйти из сессии Остановить репозиторий
Использование JCR: Запуск репозитория Для первого использования необходимо, для начала создать репозиторий Вы можете запустить существующий репозиторий
Сконфигурировать репозиторий Запустить или создать репозиторий Пройти аутентификацию Получить сессию Работа с данными (добавление/редактирование/удаление) Выйти из сессии Остановить репозиторий
Использование JCR: Аутентификация, доступ к Сессии Пройти аутентификацию воспользовавшись Repository.login(Credentials cred) SimpleCredentials определен в API Получить объект типа Session
Сконфигурировать репозиторий Запустить или создать репозиторий Пройти аутентификацию Получить сессию Работа с данными (добавление/редактирование/удаление) Выйти из сессии Остановить репозиторий
Использование JCR: Добавление данных
Использование JCR: Доступ к данным Данные содержатся в свойствах Что бы получить свойство, нужно получить узел Три способа доступа к узлу Прямой доступ Последовательно от другого узла Как результат запроса
Последовательный доступ к данным
Прямой доступ к данным
XPath запросы
SQL запросы
Изменение данных
Удаление данных
Известные JСR приложения
eXo JСR приложения
Дополнительная информация JCR 170 (Оригинал спецификации JCR) JCR 283 сайт посвященный разработке JCR eXo Platform (Open Source JCR) eXo Platform Wiki
Вопросы