Представяне на спецификацията на портлета, част 1

С появата на все по-голям брой корпоративни портали, различни доставчици създадоха различни API за компоненти на портала, наречени портлети. Това разнообразие от несъвместими интерфейси създава проблеми за доставчиците на приложения, клиентите на портала и доставчиците на портални сървъри. За да се преодолеят тези проблеми, JSR (заявка за спецификация на Java) 168, спецификацията на портлета, беше стартирана, за да осигури оперативна съвместимост между портлети и портали.

JSR 168 определя портлетите като базирани на Java уеб компоненти, управлявани от контейнер за портлети, които обработват заявки и генерират динамично съдържание. Порталите използват портлети като компоненти на потребителския интерфейс с възможност за включване, които осигуряват презентационен слой на информационните системи.

Целите на JSR 168 са следните:

  • Дефинирайте средата на изпълнение или контейнера за портлети за портлети
  • Дефинирайте API между контейнер за портлети и портлети
  • Осигурете механизми за съхраняване на преходни и постоянни данни за портлети
  • Осигурете механизъм, който позволява на портлетите да включват сървлети и JSP (JavaServer Pages)
  • Определете опаковка на портлети, за да позволите лесното им внедряване
  • Позволява преносимост на двоичен портлет между портали JSR 168
  • Стартирайте портлети JSR 168 като отдалечени портлети, използвайки протокола Web Services for Remote Portlets (WSRP)

ИТ индустрията широко прие JSR 168. Всички големи компании в пространството на портала са част от експертната група JSR 168: Apache, ATG, BEA, Boeing, Borland, Broadvision, Citrix, EDS, Fujitsu, Hitachi, IBM, Novell, Oracle , SAP, SAS Institute, Sun Microsystems, Sybase, TIBCO и Vignette. Списъкът на официалните поддръжници е още по-дълъг.

В момента JSR 168 е в публичен преглед и окончателната версия е планирана за септември 2003 г.

В тази статия първо дефинираме портали и портлети, след което обясняваме концепциите, които JSR 168 въвежда, включително основните обекти на API. След това се впускаме в по-разширените функции на JSR, като потребителска информация, локализация и кеширане. След това обхващаме точките за разширение, които позволяват на доставчиците на портала да разширят дефинираната в момента функционалност в спецификацията на портлета. Статията завършва с описанието на пакетирането и внедряването на приложения на портлети.

Прочетете цялата поредица в спецификацията на портлета:

  • Част 1: Намокрете краката си с основните термини и концепции на спецификацията
  • Част 2: Референтната реализация на API на Portlet разкрива своите тайни

Основни определения

В този раздел обясняваме основните дефиниции, използвани в спецификацията на портлета, включително основната архитектура на портала, контейнера на портлета и страницата на портала.

Портал

А портал е уеб-базирано приложение, което осигурява персонализация, единен вход и агрегиране на съдържание от различни източници, както и домакини на слоя представяне на информационни системи. Агрегирането е процес на интегриране на съдържание от различни източници в рамките на уеб страница. Порталът може да има усъвършенствани функции за персонализиране, за да предоставя персонализирано съдържание на потребителите. Страниците на портала могат да имат различни набори портлети, създаващи съдържание за различни потребители.

Фигура 1 изобразява основната архитектура на портала. Уеб приложението на портала обработва заявката на клиента, извлича портлетите на текущата страница на потребителя и след това извиква контейнера на портлета, за да извлече съдържанието на всеки портлет. Контейнерът на портлета осигурява среда за изпълнение на портлетите и извиква портлетите чрез API на портлета. Контейнерът на портлета се извиква от портала чрез API на портлета Invoker; контейнерът извлича информация за портала с помощта на SPI на доставчика на портлети (интерфейс на доставчика на услуги).

Страница

Фигура 2 изобразява основните компоненти на порталната страница. Страницата на портала представлява пълен документ за маркиране и обединява няколко прозореца на портлета. В допълнение към портлетите, страницата може да се състои и от зони за навигация и банери. Прозорецът на портлета се състои от заглавна лента със заглавието на портлета, декорациите и съдържанието, създадено от портлета. Декорациите могат да включват бутони за промяна на състоянието и режима на прозореца на портлета (ние обясняваме тези концепции по-късно).

Портлет

Както бе споменато по-горе, портлетът е базиран на Java уеб компонент, който обработва заявки и генерира динамично съдържание. Съдържанието, генерирано от портлет, се нарича фрагмент, част от маркирането (например HTML, XHTML или WML (безжичен език за маркиране)), придържащ се към определени правила. Фрагмент може да се агрегира с други фрагменти, за да образува пълен документ, както е показано на Фигура 3. Съдържанието на портлета обикновено се агрегира със съдържанието на други портлети, за да формира страницата на портала. Контейнерът на портлет управлява жизнения цикъл на портлета.

Уеб клиентите взаимодействат с портлетите чрез парадигма за заявка / отговор, внедрена от портала. Обикновено потребителите взаимодействат със съдържание, създадено от портлети, например следвайки връзки или изпращайки формуляри, което води до получаване на действия от портлета от портала, които след това препращат към портлетите, насочени от взаимодействията на потребителя.

Съдържанието, генерирано от портлет, може да варира при различните потребители в зависимост от потребителската конфигурация на портлета.

Контейнер за портлети

А контейнер Портлет работи портлети и им осигурява необходимото време на работа околната среда. Контейнер за портлети съдържа портлети и управлява жизнения им цикъл. Той също така осигурява постоянни механизми за съхранение на предпочитанията на портлета. Контейнерът на портлет получава заявки от портала за изпълнение на заявки за портлетите, хоствани от него. Контейнерът на портлет не е отговорен за обобщаването на съдържанието, създадено от портлетите; самият портал обработва агрегирането.

Порталът и контейнерът на портлетите могат да бъдат изградени заедно като единичен компонент на пакет от приложения или като два отделни компонента на портално приложение.

Концепции

Този раздел обяснява основните концепции за програмиране в JSR 168, като жизнения цикъл на портлета, интерфейса и режимите и състоянията на прозореца, както и достъп до сесия, постоянен достъп до съхранение и как да включите сървлети и JSP страници.

Жизнен цикъл на портлета

Основният жизнен цикъл на портлета на JSR 168 е:

  • Init: инициализирайте портлета и го въведете в експлоатация
  • Обработвайте заявки: обработвайте различни видове заявки за действие и визуализация
  • Унищожи: извадете портлета от употреба

Контейнерът на портлета управлява жизнения цикъл на портлета и извиква съответните методи в интерфейса на портлета.

Интерфейс на портлета

Всеки портлет трябва да реализира интерфейса на портлета или да разшири клас, който реализира интерфейса на портлета. Интерфейсът на портлета се състои от следните методи:

  • init(PortletConfig config):за инициализиране на портлета. Този метод се извиква само веднъж след инстанциране на портлета. Този метод може да се използва за създаване на скъпи обекти / ресурси, използвани от портлета.
  • processAction(ActionRequest request, ActionResponse response):за да уведоми портлета, че потребителят е задействал действие върху този портлет. Задейства се само едно действие на клиентска заявка. В действие портлетът може да издаде пренасочване, да промени режима на портлета или състоянието на прозореца, да промени постоянното си състояние или да зададе параметри на изобразяване.
  • render(RenderRequest request, RenderResponse response):за генериране на маркиране. За всеки портлет на текущата страница се извиква методът за изобразяване и портлетът може да създаде маркиране, което може да зависи от режима на портлета или състоянието на прозореца, параметрите на изобразяване, атрибутите на заявките, постоянното състояние, данните за сесията или бекенд данните.
  • destroy():за да посочи на портлета края на жизнения цикъл. Този метод позволява на портлета да освободи ресурси и да актуализира всички постоянни данни, които принадлежат към този портлет.

Режими на портлети

Режим на портлет показва функцията, която изпълнява портлет. Обикновено портлетите изпълняват различни задачи и създават различно съдържание в зависимост от функциите, които изпълняват в момента. Режим на портлет съветва портлета каква задача трябва да изпълнява и какво съдържание трябва да генерира. Когато извиквате портлет, контейнерът на портлета осигурява текущия режим на портлет на портлета. Портлетите могат програмно да променят режима си, когато обработват заявка за действие.

JSR 168 разделя режимите на портлети в три категории:

  1. Необходими режими: Всеки портал трябва да поддържа режимите Редактиране, Помощ и Преглед. Портлетът трябва да поддържа поне режима на изглед, използван за изобразяване на маркиране за страница. Режимът за редактиране се използва за промяна на настройките за всеки потребител, за да персонализирате маркирането на портлета, а режимът за помощ се използва за показване на екран за помощ.
  2. Незадължителни персонализирани режими: Това са режими, които порталът може да поддържа; докато е в незадължителен режим, може да не се извика портлет. Допълнителните режими включват режим About, за да се покаже съобщение „about“; режимът за конфигуриране, за да позволи на администраторите да конфигурират портлета; Режим Edit_defaults, за да позволи на администратора да зададе предварително стойностите на режима за редактиране; режимът за предварителен преглед, за да се покаже визуализацията на портлета; и режим Печат, за да изобразите изглед, който може лесно да отпечата.
  3. Режими, специфични за доставчика на портала: Тези режими не са дефинирани в спецификацията и следователно са специфични за доставчика.

Състояния на прозореца

Състоянието на прозореца показва размера на пространството на страницата на портала, което ще бъде присвоено на съдържанието, генерирано от портлет. Когато извиквате портлет, контейнерът на портлета предоставя текущото състояние на прозореца на портлета. Портлетът може да използва състоянието на прозореца, за да реши колко информация трябва да предостави. Портлетите могат програмно да променят състоянието на прозореца си при обработка на заявка за действие.

JSR 168 дефинира следните състояния на прозореца:

  • Нормално: Показва, че портлетът може да споделя страницата с други портлети. Това е състоянието на прозореца по подразбиране.
  • Максимално: Показва, че портлетът може да е единственият портлет на страницата на портала или че портлетът има повече място в сравнение с други портлети на страницата на портала и следователно може да създаде по-богато съдържание, отколкото в нормално състояние на прозореца.
  • Сведено до минимум: Показва, че портлетът трябва да извежда само минимален изход или изобщо да няма изход.

В допълнение към тези състояния на прозорци, JSR 168 позволява на портала да дефинира специфични за производителя състояния на прозорци.

Портлет може да бъде извикан във всяко от тези три състояния на прозореца, но е свободен да създава една и съща маркировка и за трите състояния.

Постоянен магазин

Портлетът може да съхранява постоянни данни за конкретен потребител, като използва PortletPreferencesобекта. Предпочитанията могат да се четат и записват във фазата на действие и да се четат във фазата на рендиране. Предпочитаният режим за предпочитания за писане е режимът Редактиране, който предоставя на потребителя екран за персонализиране. Предпочитанията могат да бъдат или низове, или стойности на масив от низове, свързани с ключ от тип string. Предпочитанията могат да бъдат предварително зададени със стойности по подразбиране в дескриптора за внедряване.

Предпочитанията и дефиницията на портлета в дескриптора за разполагане заедно дефинират портлет, понякога наричан обект на портлета.

Сесии

Концепцията на сесията на JSR 168 се основава на HttpSessionдефинираното за уеб приложения. Тъй като приложенията за портлети са уеб приложения, те използват същата сесия като сървлетите. За да позволи на портлетите да съхраняват временни данни, частни за портлета, обхватът на сесията по подразбиране е обхватът на портлета . В този обхват портлетът може да съхранява информация, необходима за потребителски заявки и специфична за обект на портлет. Атрибутите, съхранени с този обхват, се префиксират в сесията от контейнера на портлета, за да се избегнат два портлета (или две обекти от една и съща дефиниция на портлета), които да презапишат настройките на другия.

В допълнение към обхвата на сесията на портлета, JSR 168 поддържа обхвата на сесията на уеб приложението . В този обхват всеки компонент на уеб приложението има достъп до информацията. Информацията може да се използва за споделяне на преходно състояние между различни компоненти на едно и също уеб приложение (например между портлети или между портлет и сървлет).

Включително сървлети / JSP страници

За да поддържа модела Model-View-Controller, портлетът трябва да може да включва съдържание, генерирано от сървлети и JSP страници. По този начин портлетът може да действа като контролер, да запълни боб с данни и да включи JSP страница, за да изобрази изхода.

В JSR 168 механизмът за включване за сървлети и JSP страници е еднакъв за API на Servlet. Чрез контекста на портлета се извлича диспечер на заявки за даден път; на include()метода, след това се нарича по това искане-диспечер обект:

PortletRequestDispatcher rd = getPortletContext (). GetRequestDispatcher (editJSP); rd.include (portletRequest, portletResponse);

Привеждане в съответствие с WSRP

WSRP обединява съдържанието, произведено от портлети, работещи на отдалечени машини, които използват различни програмни среди, като J2EE (Java 2 Platform, Enterprise Edition) и .Net. WSRP услугите са ориентирани към презентации, ориентирани към потребителите уеб услуги, които се включват и играят с портали или други приложения. Те позволяват на фирмите да предоставят съдържание или приложения, без да изискват ръчно адаптиране на съдържание или специфично приложение чрез консумация на портали; порталите могат лесно да обединяват услугите на WSRP, без усилие за програмиране.

Експертната група JSR 168 внимателно подреди концепциите между JSR 168 и WSRP. Следният списък прави преглед доколко основните концепции са приведени в съответствие между двата стандарта: