Introduction to the Java Portlet Specification


By David DeWolf September 8, 2005

Перевод - Lazebniy Andrei


Java Portlet Specification (изначально созданная с использованием JSR-168) предоставляет стандартные возможности для разработки портальных компонентов при помощи языка программирования Java. Эта спецификация, выпущенная в октябре 2003 г., становится все более популярной не только в качестве стандарат для традиционных порталов, но также основы для использования «плагинов» для стандартных веб-приложений. Это введение в Java Portlet Specification разъяснит основы порталов и портлетов. Она поможет понять, что такое Java Portlet API и начать разрабатывать удобные портлеты.



Порталы, портлеты и Java Portlet Specification


Портал представляет собой веб-приложение, которое отображает содержание многих ресурсов. Портлетами являются веб-компоненты, которые генерируют фрагменты контента (обычно части разметки, такие как HTML, XML или WML). Путем объединения контента, сгенерированного различными портлетами портал способен генерировать интрефейс одиночного пользователя, который интегрирует множество отдельных ресурсов. В дополнение к сервисам объединения корпоративные порталы часто предоставляют дополнительные возможности, такие как персонализация отдельного входа в систему, однако доступность и способ применения подобных сервисом различны.


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


Портал использует портлет-контейнер для управления жизненным циклом портлетов. Портлет-контейнер отвечает за использование, обработку запросов и удаление портлетов. Java Portlet Specification обеспечивает объединение совместимого портлет-контейнера и портлетов. Этот тип стандартизации обеспечивает портабельность портлетов.


По своему дизайну Java Portlet Specification очень сходна с Java Servlet Specification. По существу, Java Portlet Specification построена над Java Servlet Specification 2.3 и Java Server Pages version 1.2 и заимствует свои объекты везде, где возможно. Поскольку портлет-контейнер должен выполняться внутри совместимого сервлет-контейнера (или использовать все функции, предоставленные совместимым контейнером), портлеты способны пересылать запросы сервлетам, JSP и прочим стандартным веб-ресурсам. Портлеты, севрлеты, JSP и прочие веб-ресурсы упакованы в специальное веб-приложение, называемое портлет-приложением.



Основы портлета


Основы создания портлетов очень схожи с основами создания сервлетов. Вдобавок к обеспечению того, что все портлеты выполняются в стандартной сервлетной среде, API портлетной спецификации моделируются по принципу сервлета. Интерфейсы Portlet, PortletConfig, PortletRequest и PortletResponse очень похожи на их сервлет-двойников. Как и в случае с сервлетами, портлет будет обеспечивать множественные запросы клиентов (часто одноверменно) во время работы. По этой причине портлеты имеют проблемы с одновременным доступом из многих потоков и не должны использовать члены экземпляров классов.


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