Wprowadzenie do specyfikacji portletu, część 1

Wraz z pojawieniem się coraz większej liczby portali korporacyjnych różni dostawcy stworzyli różne interfejsy API dla komponentów portalu, zwane portletami. Ta różnorodność niekompatybilnych interfejsów powoduje problemy dla dostawców aplikacji, klientów portalu i dostawców serwerów portalu. Aby rozwiązać te problemy, uruchomiono JSR (Java Specification Request) 168, specyfikację portletów, aby zapewnić współdziałanie między portletami i portalami.

JSR 168 definiuje portlety jako komponenty WWW oparte na języku Java, zarządzane przez kontener portletów, które przetwarzają żądania i generują treść dynamiczną. Portlety używają portletów jako podłączanych komponentów interfejsu użytkownika, które zapewniają warstwę prezentacji dla systemów informacyjnych.

Cele JSR 168 są następujące:

  • Zdefiniuj środowisko wykonawcze lub kontener portletów dla portletów
  • Zdefiniuj interfejs API między kontenerem portletów a portletami
  • Zapewnij mechanizmy do przechowywania przejściowych i trwałych danych dla portletów
  • Zapewnij mechanizm, który umożliwia portletom dołączanie serwletów i stron JSP (JavaServer Pages)
  • Zdefiniuj opakowanie portletów, aby umożliwić łatwe wdrażanie
  • Zezwalaj na przenośność portletów binarnych między portalami JSR 168
  • Uruchamiaj portlety JSR 168 jako portlety zdalne przy użyciu protokołu usług WWW dla portletów zdalnych (WSRP)

Branża IT szeroko zaakceptowała JSR 168. Wszystkie główne firmy w przestrzeni portalu należą do grupy ekspertów JSR 168: Apache, ATG, BEA, Boeing, Borland, Broadvision, Citrix, EDS, Fujitsu, Hitachi, IBM, Novell, Oracle , SAP, SAS Institute, Sun Microsystems, Sybase, TIBCO i Vignette. Lista oficjalnych zwolenników jest jeszcze dłuższa.

Obecnie JSR 168 znajduje się w publicznej recenzji, a ostateczna wersja jest planowana na wrzesień 2003 roku.

W tym artykule najpierw definiujemy portale i portlety, a następnie wyjaśniamy pojęcia, które wprowadza JSR 168, w tym podstawowe obiekty API. Następnie zagłębimy się w bardziej zaawansowane funkcje JSR, takie jak informacje o użytkowniku, lokalizacja i buforowanie. Następnie omówimy punkty rozszerzeń, które pozwalają dostawcom portalu rozszerzyć aktualnie zdefiniowaną funkcjonalność w specyfikacji portletu. Artykuł kończy się opisem pakowania i wdrażania aplikacji portletowej.

Przeczytaj całą serię na temat specyfikacji portletu:

  • Część 1: Zanurz stopy w pojęciach i pojęciach specyfikacji
  • Część 2: Implementacja referencyjna interfejsu API portletów ujawnia swoje sekrety

Podstawowe definicje

W tej sekcji wyjaśnimy podstawowe definicje używane w specyfikacji portletu, w tym podstawową architekturę portalu, kontener portletów i stronę portalu.

Portal

Portal to aplikacja internetowa, która zapewnia personalizację, single sign-on i agregacji treści z różnych źródeł, a gospodarze warstwa prezentacji systemów informacyjnych. Agregacja to proces integracji treści z różnych źródeł na stronie internetowej. Portal może mieć zaawansowane funkcje personalizacji, które zapewniają użytkownikom dostosowaną zawartość. Strony portalu mogą mieć różne zestawy portletów tworzących treść dla różnych użytkowników.

Rysunek 1 przedstawia podstawową architekturę portalu. Aplikacja WWW portalu przetwarza żądanie klienta, pobiera portlety z bieżącej strony użytkownika, a następnie wywołuje kontener portletów w celu pobrania treści każdego portletu. Kontener portletów zapewnia środowisko wykonawcze dla portletów i wywołuje portlety za pośrednictwem interfejsu API portletów. Kontener portletów jest wywoływany z portalu za pośrednictwem interfejsu API Portlet Invoker; kontener pobiera informacje o portalu przy użyciu interfejsu SPI dostawcy portletów (Service Provider Interface).

Strona

Rysunek 2 przedstawia podstawowe komponenty strony portalu. Sama strona portalu przedstawia kompletny dokument znaczników i agreguje kilka okien portletów. Oprócz portletów strona może również zawierać obszary nawigacji i banery. Okno portletu składa się z paska tytułu z tytułem portletu, dekoracjami i treścią utworzoną przez portlet. Dekoracje mogą obejmować przyciski do zmiany stanu i trybu okna portletu (wyjaśnimy te pojęcia później).

Portlet

Jak wspomniano powyżej, portlet to oparty na języku Java komponent WWW, który przetwarza żądania i generuje dynamiczną zawartość. Treść generowana przez portlet nazywana jest fragmentem, fragmentem znacznika (np. HTML, XHTML lub WML (Wireless Markup Language)), który jest zgodny z określonymi regułami. Fragment można połączyć z innymi fragmentami w celu utworzenia pełnego dokumentu, jak pokazano na rysunku 3. Treść portletu zwykle agreguje się z treścią innych portletów, tworząc stronę portalu. Kontener portletów zarządza cyklem życia portletu.

Klienci WWW współpracują z portletami za pośrednictwem paradygmatu żądanie / odpowiedź zaimplementowanego w portalu. Zwykle użytkownicy wchodzą w interakcję z treścią tworzoną przez portlety, na przykład podążając za odsyłaczami lub przesyłając formularze, co skutkuje odebraniem przez portal akcji portletu, które następnie przekierowują do portletów, na które są skierowane interakcje użytkownika.

Treść generowana przez portlet może się różnić w zależności od użytkownika w zależności od konfiguracji użytkownika portletu.

Kontener portletów

Pojemnik portlet uruchamia portletów i zapewnia im wymaganego środowiska wykonawczego. Kontener portletów zawiera portlety i zarządza ich cyklami życia. Zapewnia również trwałe mechanizmy przechowywania preferencji portletów. Kontener portletów odbiera z portalu żądania wykonania żądań w udostępnianych przez niego portletach. Kontener portletów nie jest odpowiedzialny za agregowanie treści tworzonej przez portlety; sam portal obsługuje agregację.

Portal i kontener portletów można zbudować razem jako pojedynczy komponent pakietu aplikacji lub jako dwa oddzielne komponenty aplikacji portalu.

Koncepcje

W tej sekcji opisano podstawowe pojęcia programistyczne w JSR 168, takie jak cykl życia portletu, interfejs, tryby i stany okien, a także dostęp do sesji, dostęp do pamięci trwałej oraz sposób dołączania serwletów i stron JSP.

Cykl życia portletu

Podstawowy cykl życia portletu JSR 168 to:

  • Init: zainicjuj portlet i uruchom go
  • Obsługuj żądania: przetwarzaj różne rodzaje żądań akcji i renderowania
  • Zniszcz: wyłącz portlet z usługi

Kontener portletów zarządza cyklem życia portletu i wywołuje odpowiednie metody w interfejsie portletu.

Interfejs portletu

Każdy portlet musi implementować interfejs portletu lub rozszerzać klasę, która implementuje interfejs portletu. Interfejs portletu składa się z następujących metod:

  • init(PortletConfig config):aby zainicjować portlet. Ta metoda jest wywoływana tylko raz po utworzeniu instancji portletu. Ta metoda może służyć do tworzenia kosztownych obiektów / zasobów używanych przez portlet.
  • processAction(ActionRequest request, ActionResponse response):aby powiadomić portlet, że użytkownik wyzwolił akcję w tym portlecie. Wyzwalane jest tylko jedno działanie na żądanie klienta. W akcji portlet może wydać przekierowanie, zmienić tryb portletu lub stan okna, zmodyfikować swój trwały stan lub ustawić parametry wyświetlania.
  • render(RenderRequest request, RenderResponse response):do generowania znaczników. Dla każdego portletu na bieżącej stronie wywoływana jest metoda renderowania, a portlet może generować znaczniki, które mogą zależeć od trybu portletu lub stanu okna, parametrów wyświetlania, atrybutów żądania, stanu trwałego, danych sesji lub danych zaplecza.
  • destroy():aby wskazać portletowi koniec cyklu życia. Ta metoda umożliwia portletowi zwolnienie zasobów i zaktualizowanie wszelkich trwałych danych należących do tego portletu.

Tryby portletów

Tryb portletu wskazuje funkcję wykonywaną przez portlet. Zazwyczaj portlety wykonują różne zadania i tworzą różną treść w zależności od aktualnie pełnionych funkcji. Tryb portletu informuje portlet, jakie zadanie ma wykonać i jaką treść powinien wygenerować. Podczas wywoływania portletu kontener portletów udostępnia portletowi bieżący tryb portletu. Portlety mogą programowo zmieniać swój tryb podczas przetwarzania żądania działania.

JSR 168 dzieli tryby portletów na trzy kategorie:

  1. Wymagane tryby: każdy portal musi obsługiwać tryby Edycja, Pomoc i Widok. Portlet musi przynajmniej obsługiwać tryb widoku używany do renderowania znaczników dla strony. Tryb edycji służy do zmiany ustawień użytkownika w celu dostosowania znaczników portletu, a tryb pomocy służy do wyświetlania ekranu pomocy.
  2. Opcjonalne tryby niestandardowe: są to tryby obsługiwane przez portal; w trybie opcjonalnym portlet może nie zostać wywołany. Opcjonalne tryby obejmują tryb Informacje, który wyświetla komunikat „o”; tryb Konfiguracja, aby umożliwić administratorom konfigurowanie portletu; Tryb Edit_defaults, aby umożliwić administratorowi ustawienie wartości trybu edycji; tryb podglądu, aby wyświetlić podgląd portletu; oraz tryb drukowania, aby renderować widok, który można łatwo wydrukować.
  3. Tryby specyficzne dla dostawcy portalu: tryby te nie są zdefiniowane w specyfikacji i dlatego są specyficzne dla dostawcy.

Stany okna

Stan okna wskazuje ilość miejsca na stronie portalu, która zostanie przypisana do treści generowanej przez portlet. Podczas wywoływania portletu kontener portletów dostarcza portletowi bieżący stan okna. Portlet może używać stanu okna do decydowania, ile informacji ma wyświetlić. Portlety mogą programowo zmieniać stan okna podczas przetwarzania żądania działania.

JSR 168 definiuje następujące stany okna:

  • Normalny: wskazuje, że portlet może współużytkować stronę z innymi portletami. To jest domyślny stan okna.
  • Zmaksymalizowany: wskazuje, że portlet może być jedynym portletem na stronie portalu lub że portlet ma więcej miejsca w porównaniu z innymi portletami na stronie portalu, a zatem może generować bogatszą treść niż w normalnym stanie okna.
  • Zminimalizowane: wskazuje, że portlet powinien wyświetlać tylko minimalne dane wyjściowe lub nie wyświetlać ich wcale.

Oprócz tych stanów okien JSR 168 umożliwia portalowi definiowanie stanów okien specyficznych dla dostawcy.

Portlet można wywołać w dowolnym z tych trzech stanów okna, ale może on tworzyć takie same znaczniki dla wszystkich trzech stanów.

Stały sklep

Portlet może przechowywać trwałe dane określonego użytkownika przy użyciu tego PortletPreferencesobiektu. Preferencje można odczytywać i zapisywać w fazie akcji oraz odczytywać w fazie renderowania. Preferowanym trybem zapisu preferencji jest tryb edycji, który zapewnia użytkownikowi ekran dostosowywania. Preferencje mogą być ciągami lub wartościami tablicy ciągów skojarzonymi z kluczem typu string. W preferencjach można wstępnie ustawić wartości domyślne w deskryptorze wdrażania.

Preferencje i definicja portletu w deskryptorze wdrażania razem definiują portlet, czasami nazywany jednostką portletu.

Sesje

Koncepcja sesji JSR 168 jest oparta na HttpSessiondefinicji dla aplikacji internetowych. Ponieważ aplikacje portletowe są aplikacjami WWW, używają one tej samej sesji co serwlety. Aby umożliwić portletom przechowywanie tymczasowych danych prywatnych dla portletu, domyślnym zakresem sesji jest zasięg portletu . W tym zakresie portlet może przechowywać informacje potrzebne w żądaniach użytkowników i specyficzne dla jednostki portletu. Atrybuty przechowywane w tym zakresie są prefiksowane w sesji przez kontener portletów, aby uniknąć nadpisywania ustawień przez dwa portlety (lub dwie jednostki z tej samej definicji portletu).

Oprócz zakresu sesji portletu, JSR 168 obsługuje zakres sesji aplikacji WWW . W tym zakresie każdy składnik aplikacji internetowej może uzyskać dostęp do informacji. Informacje mogą służyć do współużytkowania stanu przejściowego między różnymi komponentami tej samej aplikacji WWW (np. Między portletami lub między portletem a serwletem).

W tym serwlety / strony JSP

Aby obsługiwać wzorzec Model-View-Controller, portlet musi mieć możliwość dołączania treści wygenerowanej z serwletów i stron JSP. W ten sposób portlet może działać jako kontroler, wypełniać komponent bean danymi i dołączać stronę JSP do renderowania danych wyjściowych.

W JSR 168 mechanizm dołączania serwletów i stron JSP jest taki sam, jak w przypadku interfejsu API serwletów. Poprzez kontekst portletu pobierany jest moduł wysyłający żądania dla danej ścieżki; include()metoda nazywana jest wtedy na to żądanie-dyspozytor obiektu:

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

Dopasowanie do WSRP

WSRP agreguje treść utworzoną przez portlety działające na zdalnych maszynach, które używają różnych środowisk programistycznych, takich jak J2EE (Java 2 Platform, Enterprise Edition) i .Net. Usługi WSRP to zorientowane na prezentacje usługi WWW przeznaczone dla użytkowników, które są podłączane do portali lub innych aplikacji. Pozwalają firmom dostarczać treści lub aplikacje bez konieczności ręcznego dostosowywania treści lub aplikacji poprzez korzystanie z portali; portale mogą łatwo agregować usługi WSRP bez wysiłku programistycznego.

Grupa ekspertów JSR 168 dokładnie dostosowała koncepcje między JSR 168 i WSRP. Poniższa lista zawiera przegląd, w jakim stopniu główne koncepcje zostały ujednolicone w obu standardach: