Springowe portlety JSR-168

Dzisiejszy dzień straciłem na przypominanie sobie rzeczy, które już kiedyś udało mi się zrobić ( zresztą sytuacja ta nie zdarzyła się pierwszy raz ). Jako że pamięć jest zawodna - naprawiam swój błąd - w kilku zdaniach postaram opisać się problemy jakie występują przy uruchamianiu portletów Spring-może jeszcze komuś się to przyda.

Pierwotnym źródłem moich wariacji na temat wykorzystania Springa do pisania portletów jest przykład upubliczniany na stronie projektu Spring Portlets MVC. W przypadku JBoss wykorzystałem jego wersję prekonfigurowaną, przystosowaną do uruchamiania w JBoss Portal.

Na początek przytoczę kilka zasad, które pochodzą z readme dołączanego do przykładów. Należy bezwzględnie zwrócić na nie uwagę - są one bardzo ważne i mają kluczowe znaczenie przy próbach uruchomienia portletów na różnych kontenerach.

  • Należy zwrócić szczególną uwagę na to, by nie doszło do konfliktu pomiędzy bibliotekami dołączanymi do projektu a tymi, które znajdują się w współdzielonych bibliotekach kontenera.
  • Przykłady oparte są na standardzie JSP 2.0 i JSTL 1.1. Nie będą poprawnie działać na kontenerach, które nie wspierają tych standardów. W przypadku podjęcia próby uruchomienia portletów na starszych kontenerach należy usunąć z pliku web.xml wszystkie wpisy dotyczące taglibów JSTL.
  • Bezpośrednie umieszczenie przykładów na serwerze jest niewystarczające. W zależności od rodzaju kontenera, aplikacja musi zostać odpowiednio uruchomiona (deploy). Kontenery nie zawsze wyposażone są w mechanizmy auto-deploy, dlatego często wymagane modyfikacje plików konfiguracyjnych należy przeprowadzić samemu. Najczęstsze zmiany to:
    1. Modyfikacje pliku web.xml. Należy przede wszystkim zamieścić informacje w jaki sposób kontener obsługuje kontekst portletów. Np. może to być jeden serwlet sterujący, bądź jeden serwlet dedykowany jednemu portletowi.

    2. Należy bezwzględnie pamiętać o dostarczeniu bibliotek zawierających zdefiniowane w standardzie JSR-168 tagi JSP, oraz klasy implementujące je. Implementacja tych tagów, jest zależna od rodzaju kontenera. Najczęściej są one zgrupowane w pliku portlet.tld (w przypadku przykładów umieszczony jest w katalogu /lib). Dla kontenerów realizujących specyfikację Servlet 2.4 biblioteki te mogą być udostępnione przez dołączenie ich do class-loadera (np /WEB-INF/lib), dla innych konterów powinny zostać dołączaone jako plik znajdujący się w podkatalogu /WEB-INF.

    3.Należy pamiętać, że czasami kontenery wymagają konfiguracji dodatkowej.
Jak do tej pory własne springowe portlety WSRP udało mi się uruchomić na dwóch kontenerach - JBoss(prekonfigurowany pod portal) i OC4J. Następnie udało mi się je zarejestrować w dwóch portalach JBoss Portal i Oracle Portal. Niestety nie było prosto bo dokumentacja jest mocno dziurawa i niekompletna - żeby uchronić się przed ulotnością wiedzy spróbuję to trochę opisać.

Wykorzystywane narzędzia:

Brak komentarzy: