Статьи

Взгляд внутрь JBoss Portal — платформа портала с открытым исходным кодом

JBoss Portal всегда фокусировался на аспектах инфраструктуры порталов, он не ставит целью предоставить готовое решение для порталов, а состоит из основных элементов и API, которые предоставляют сервисы для создания полностью надежного настраиваемого портала.

Цель состоит в том, чтобы ускорить развертывание индивидуального решения. Нет ничего более расстраивающего, чем структура, ограничивающая себя, поэтому цель JBoss Portal — быть максимально настраиваемой и предлагать API низкого уровня.

Эта статья является частью серии статей о портале JBoss, первая была « Так что же такое корпоративные порталы? «В следующей статье будет рассказано о том, как взять готовый портал, чтобы начать его настройку.

В этой статье мы сначала перечислим некоторые из предлагаемых услуг, а затем более подробно рассмотрим важный аспект текущей внутренней архитектуры.

Компоненты

JBoss Portal поставляется с готовыми к использованию компонентами и услугами. Вот список основных.

Контейнер портлетов Контейнер
портлетов является реализацией спецификации JSR-286. Этот компонент является частью JBoss Portal 2.7 (и платформы корпоративного портала 4.3) и также доступен как отдельный проект без других сервисов. Отдельный проект поставляется с базовой библиотекой тегов для тем и может использоваться для создания прототипов или разработки. Этот компонент позволяет портлетам запускаться на портале. Портлеты в основном предназначены для обеспечения модульного подхода к порталам, где компоненты страницы не могут сталкиваться, но все же обмениваются информацией, на основе чего можно создавать каркасы веб-приложений.

Идентификация (аутентификация / SSO)
Большинство порталов частично ограничены для некоторых пользователей и требуют аутентификации. Инфраструктура портала гарантирует, что вы можете интегрироваться с существующим сервером удостоверений, который уже установлен, или позволить вам настроить новый без обязательного применения определенной схемы.

JBoss Portal сможет хранить или извлекать пользователей из баз данных, поддерживаемых Hibernate, Red Hat Directory Server, OpenDS, OpenLDAP, Microsoft Active Directory … Но предоставляет SPI для поддержки собственных серверов идентификации.

Механизм аутентификации основан на JAAS, и можно использовать существующие модули идентификации JBoss Application Server, что дает целый ряд готовых решений для различных сценариев. Одним из основных преимуществ является то, что аутентификация портала использует модули, основанные на механизме безопасности JBoss AS. (Например, проверка подлинности Windows Desktop или Kerberos через JBoss Negotiation, которая все еще требует тестирования).

Что касается единого входа, то не только все приложения, интегрированные в портал, не должны требовать дополнительной аутентификации, но сам портал должен быть в состоянии быть частью инфраструктуры единого входа, а JBoss Portal был протестирован на CAS, OpenSSO, JOSSO, но опять же на SPI. доступно для подключения к любому решению.

CMS (и GUI)
Базовая CMS / ECM / WCM / DMS (как мы ее сегодня называем) доступна как часть JBoss Portal, реализация основана на шаблоне команд и может напрямую использоваться через предоставляемые сервисы. GUI также доступен с поддержкой рабочего процесса и редактором Wysiwyg. Интеграция с поставщиками ECM также возможна (но требует некоторой работы) для замены базовой CMS на полноценный ECM, такой как Alfresco.

WSRP (и GUI)
Реализация веб-служб для удаленного портлета версии 1.0 встроена в портал JBoss. Он позволяет порталу создавать контент для агрегирования в других структурах портала или решениях, таких как IBM Websphere Portal, BEA / Oracle Portals, Microsoft Sharepoint … Возможен и другой способ, контент, предоставляемый этими продуктами, может найти свое место в портале JBoss. В упрощенном режиме можно потерять спецификацию для лучшей совместимости с другими поставщиками.

Управление объектами портала
Администратору портала или компании, предоставляющей решение портала, придется управлять объектами портала. Объектами портала являются окна (которые могут содержать портлет), страницы (составленные из окон) и экземпляры порталов (составленные из страниц). Эти объекты имеют свойства, которые будут определять способ отображения страницы для конечного пользователя. Из коробки JBoss Portal предлагает способ заполнения этих объектов с помощью файлов XML, а также через портал администрирования для создания / удаления / изменения объектов во время выполнения.

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

Безопасность
Объявляя правила безопасности, объекты портала могут быть защищены, чтобы быть доступными только некоторым пользователям, это способ настроить взаимодействие с пользователем на портале. Среда обработки ошибок позволяет вам настроить тип ответа, который вы хотите дать пользователю на объекте с ограниченной безопасностью (скрыть окно? Показать сообщение об ошибке? …)

Тема и макет
Портал JBoss помогает организовать контент на странице, а также делегировать визуальный аспект другой команде, добавляя скины на страницы. Темы и макет могут быть развернуты отдельно от самого портала и могут быть быстро развернуты для ускорения процесса разработки.


Механизм агрегации Страница построена из набора свойств и контекста. Спецификация портлета гарантирует, что ни одна часть страницы не столкнется с какой-либо другой частью, так что приложение, отвечающее за создание фрагмента страницы, может вести себя так, как будто это единственный компонент страницы.

Внутренняя архитектура для расширенной настройки

Когда это возможно, JBoss Portal не обеспечивает никакого поведения, есть поведение по умолчанию, которое можно легко заменить для конкретных нужд. Архитектура зарекомендовала себя во время поддержки для обработки многих сценариев, о которых не думали во время первоначального проектирования.

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

 

HTTP-запрос, отправленный клиентом, достигает Контроллера через перехватчики Сервера, это лучшее место, чтобы определять вещи на основе типа самого запроса, например, что делать дальше, определять, какую локаль использовать или тип контента, например.

Ниже приведена упрощенная версия перехватчика по умолчанию для определения языкового стандарта. По умолчанию портал «из коробки» определяет языковой стандарт для пользователя на основе его пользовательских настроек (заданных в самом портале) и возвращается к предпочтениям веб-браузера. ,

package org.jboss.portal.core.aspects.server;

[import ...]

public class LocaleInterceptor extends ServerInterceptor
{
protected void invoke(ServerInvocation invocation) throws Exception, InvocationException
{
// Get the user profile
Map profile = (Map)invocation.getAttribute(ServerInvocation.PRINCIPAL_SCOPE, UserInterceptor.PROFILE_KEY);

// Get the locale preference from the user profile
Locale preferredLocale = (Locale) profile.get(User.INFO_USER_LOCALE);

// Get the locale from the web browser preference
Locale browserPreferredLocale = invocation.getServerContext().getClientRequest().getLocale();

// Default locale
Locale locale = Locale.ENGLISH;

if (preferredLocale != null) {
locale = preferredLocale;
} else if (browserPreferredLocale != null) {
locale = browserPreferredLocale;
}

// Set the locale for the request
req.setLocales(new Locale[] { locale});

// Invoke the rest of the interceptor stack
invocation.invokeNext();
}
}

По сути, нам просто нужно было расширить класс ServerInterceptor и переопределить метод invoke. Мы не должны забывать в какой-то момент вызывать следующий перехватчик в стеке, выполняя «invocation.invokeNext ()». Обратите внимание, что вы можете выполнить код до или после вызова команды, в зависимости от того, находится ли код перед или после вызова следующего перехватчика.

Как только конвейер Контроллера завершен, запросу на визуализацию портала может предшествовать фаза действия, и каждая фаза имеет разные стеки перехватчиков. В этих перехватчиках мы можем обеспечить безопасность доступа на некоторых узлах (например, путем прохождения оставшейся части фазы действия) или инициировать события, когда узел, например, отображается или выполняется действие.

Этап действия в конечном итоге будет вызван запуском одного портлета (если только перехватчик не остановил вызов), тогда как на этапе рендеринга обычно выполняется рендеринг нескольких портлетов. На этом этапе мы можем применить перехватчики портлетов, некоторые функции спецификации портлета реализованы таким образом.

Вывод

Мы только коснулись поверхности JBoss Portal, в следующей статье мы увидим, как создать настроенный портал, используя настраиваемую тему, локализацию, декларативную безопасность, персонализированный портлет, настраиваемый перехватчик, документ CMS …