Что нового в Java Portlet Specification V2.0 (JSR 286)?

FAQ

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

Портлеты могут рассматриваться как сервисы пользовательского графического интерфейса, который распространяют сервис-ориентированную архитектуру (SOA) на интерфейс для конечных пользователей.

Портлеты Java стали популярны после выхода первой версии Java Portlet Specification, JSR-168, выпущенной в 2003 сообществом Java Community Processes. С этого момента почти все вендоры, разрабатывающие порталы Java, как коммерческие, так и с открытым исходным кодом, реализовали этот стандарт, и разработчики стали писать портлеты, использующие Java Portlet API.

JSR 168, однако, остановилась на определении компонентной модели графического интерфейса и никак не определяла аспектов интеграции этих компонентов в приложения. Это ограничение, как и многие другие, не попавшие в версию 1.0 из-за нехватки времени, теперь преодолено в версию V2.0.

Работа над JSR 286 стартовала в январе 2006 года, финальная версия была закончена в феврале 2008. Экспертная группа JSR 286 включала всех значимых разработчиков порталов, как коммерческих, так и с открытым кодом, разработчиков средств интеграции портлетов и разработчиков сред разработки портлетов. Полный список членов экспертной группы можно посмотреть здесь.

Данная статья представляет собой обзор наиболее значимых новшеств JSR 286, а также включает некоторые примеры использования этих нововведений. Статья предполагает базовые знания программной модели портлетов, определенной в версии 1.0; вводная информация по JSR168 доступна здесь.

Создание составного приложения, использующего взаимодействие портлетов

Основные новинки версии 2.0 предоставляют возможность организации взаимодействия между различными портлетами, которые могут быть реализованы разными сторонами и упакованы в разные WAR-файлы. Координационные возможности JSR 286 основаны на модели слабой связи вида «публикатор-подписчик», которая не требует детальных знаний портлетов о реализации друг друга. Во время разработки вы просто определяете данные, которые понимает ваш портлет, а собственно соединения создаются во время развертывания или запуска. Пользуясь этими коммуникационными возможностями администраторы портала или бизнес-пользователи теперь могут строить более сложные и масштабные приложения из портлетов-компонентов без всякого программирования. Данная функциональность открывает возможности построения новой функциональности путем комбинирования существующих компонентов в комбинированные бизнес-приложения аналогично популярным приложениям Web 2.0 – даже таких, о которых авторы компонентов даже и не думали.

JSR 286 определяет два способа взаимодействия, предназначенных для разных случаев использования:
События. Поддерживают извещения портлетов о выполненении другим портлетом какого-то действия.
Публикуемые параметры отображения. Поддерживают использование общих параметров отображения различными портлетами.

Мы подробнее объясним оба способа ниже.

События

JSR 286 позволяет портлетам посылать и получать сообщения. Как упоминалось выше, используется модель слабой связи, в которой портальное приложение действует как брокер между различными портлетами и распределяет события.