JSF i RichFaces – pierwsze starcie

Za namową Darka Ludery postanowiłem troszeczkę jeszcze pogrzebać przy samym wyborze JSF. To, że jest to framework wręcz stworzony do rozszerzania o inne funkcjonalności już dowiedziałem się wcześniej. Zresztą w książce o JSF piszą o Apache Tiles, Strutsie i trochę o AJAXie. Darek w komentarzu do poprzedniego mojego wpisu zasugerował RichFaces. Zajrzałem, popatrzyłem i jest fajnie – JQuery UI dla Javy, ale tak na oko 6,5 raza lepszy.

No ale dość gadania. Wypadałoby zabrać się do jakieś roboty. Próbowałem stworzyć projekt na swoim starym dobrym NetBeansie w wersji 6.5, ale cosik mi się popieprzyło (nagle uruchomienie Tomcata wywalało błąd, że kompilator nie może odnaleźć klasy Object, wtf?). Przeinstalowałem zatem temat i na pokładzie mam ślicznego NetBeansa w wersji 6.5.1, GlassFisha w wersji jeszcze 2 (rozwojowa wersja 3 mnie póki co nie interesuje), no i przeinstalowałem Tomcata. Nie wiem czy zapamiętano wszystkie pluginy, które wcześniej miałem poinstalowane czy co, ale kwestia jest taka, że po upgradzie dalej sypało mi błędami. Jednakże może wpierw proces tworzenia projektu:

Tworzymy nowy projekt. File->New Project->Java Web->Web Application.

jsf_new_step1

Wybieramy nazwę dla projektu, lokalizację i takie tam:

jsf_new_step2

Środowisko uruchomieniowe:

jsf_new_step3

No i na końcu dorzucamy sobie biblioteki, które chcemy wykorzystać. Dla przypomnienia – Hibernate, JSF, RichFaces.

jsf_new_step4

Klikając na kolejne elementy listy na dole pojawiają się opcje konfiguracyjne. Ja tam ustawiłem wersję dla JSF (1.2), a także wybrałem połączenie MySQL. Zainstalowałem sobie lokalnie PostgreSQL. Jeśli na moim hostingu dałoby się toto również zainstalować, wówczas cała aplikacja będzie powstawała z tym systemem bazodanowym. Zawsze coś innego niż do tej pory (z PostgreSQL pracowałem ze dwa miesiące może w poprzedniej firmie). Pozostaje też pytanie o mój hosting. Podobnie jak z HowToJava byłoby dobrze móc pokazywać efekty swojej pracy szerokiej publice – jeśli da radę zainstalować na serwerze PostgreSQL to będzie w ogóle miło.

Na sam koniec wypada pokazać jak wygląda nasz nowo utworzony projekt:

jsf_new_step5

Wygląda niby ciekawie, ale jak już wspomniałem wcześniej – takie coś się nie uruchomi! (przynajmniej u mnie nie chciało). Przeorałem net i w końcu postanowiłem iść metodą drobnych kroczków.
Sypała błędami deklaracja taglibów w pliku JSP:

<%@taglib uri="http://richfaces.org/a4j" prefix="a4j"%>

Po usunięciu z kodu wszystko działa ślicznie pięknie, idzie deploy, Tomcat odpala się aż miło. Generalnie na necie znalazłem opis podobnego przypadku, ale kolesiowi wyrzucało problemy, gdyż dodatkowo miał wrzucony do WEB-INF/lib plik jar z biblioteką ajax4jsf. Ja nie miałem i w myśl tego tutoriala (oficjalnego) mieć nie powinienem. Jedyną zadeklarowaną biblioteką znaczników powinna być:

<%@taglib uri="http://richfaces.org/rich" prefix="rich"%>

Tylko to dotyczy tylko i wyłącznie RichFaces. No a gdzie AJAX mój kochany? Postanowiłem nie dać za wygraną i opdrążyć temat głębiej. Dlaczego bowiem domyślne odpalenie projektu skutkuje błędami? Aż taki bug? Rozumiem, że wsparcie dla RichFaces jest pluginem, no ale bez przesady. Wspomniana biblioteka ajax4jsf została zintegrowana z RichFaces już jakiś czas temu. Dziwne toto.

Zrobiłem tak. Usunąłem z libraries wpisy dotyczące RichFaces. Po czym ściągnąłem najnowszą wersję tego frameworka, rozpakowałem 3 jary do WEB-INF/lib i dodałem je do projektu. Run i… DZIAŁA! Jednakże w logu uruchomienia Tomcata dalej znajduję takie coś:

2009-06-13 01:53:06 org.apache.catalina.loader.WebappClassLoader loadClass
INFO: Illegal access: this web application instance has been stopped already.
Could not load java.lang.Object.
The eventual following stack trace is caused by an error thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access, and has no functional impact.
java.lang.IllegalStateException

No ja rozumiem, debugging purposes, ale dlaczego wszystko poza tym działa? Wpisuję w okienko tekst, a on się automatycznie wyświetla poniżej (czyli a4j zaskoczył). Totalnie nie mam pojęcia o co w tym chodzi. Obiecywałem sobie, że w Javie będę grzecznie orientował się na wiedzę, a nie osiągnięte cele, a tutaj mam zagwozdkę – cel osiągnięty, wiedzy do końca to nie ma. No ale może mądrzejsi po przeczytaniu tego postu podsuną jakieś rozwiązanie. Na pożegnanie screen z “HelloWorld” konglomeratu JSF+RichFaces

jsf_new_step6

Advertisements

4 thoughts on “JSF i RichFaces – pierwsze starcie

  1. Jacek Laskowski

    “nagle uruchomienie Tomcata wywalało błąd, że kompilator nie może odnaleźć klasy Object, wtf?” – mam wrażenie, że ten błąd pojawia się wtedy, kiedy w projekcie nie masz zdefiniowanego JRE, bo wskazuje na nieistniejący katalog. Rekomendowane jest JDK. Nie przeinstalowałeś JRE/JDK w międzyczasie? A może NB albo JRE/JDK są w ścieżce ze spacjami? Pozbądź się ich, bo nawet jeśli nie teraz, to w przyszłości możesz mieć niepotrzebne przestoje na rozwiązywanie problemów, które ostatniecznie okażą się właśnie spowodowane “dziurawymi” ścieżkami.

    “Nie wiem czy zapamiętano wszystkie pluginy” – nie zapamiętał, bo wtyczki/rozszerzenia są w katalogu domowym..niestety.

    “po upgradzie dalej sypało mi błędami” – bo informacja o konfiguracji projektu jest w…projekcie. Zaskoczony? 🙂

    Koniecznie napisz rozwiązanie, jeśli je znajdziesz. Udostępnij projekt netbeansowy, a może wtedy innym się uda odtworzyć problem i go jeszcze rozwiązać.

  2. chlebik Post author

    Czy przeinstalowywałem JRE/JDK nie pamiętam – ostatnio robiłem to na 3 innych komputerach i już sam nie wiem czy czasem nie zmieniałem czegoś u siebie na desktopie. Ale o dziwo – dzisiaj po uruchomieniu projektu 0 błędów w ogóle.

    Co do pluginów to masz rację – musiałem poczyścić trochę partycję systemową bo krzyczał, że mało miejsca na dysku.

    Konfiguracji projektu nie było bo projekt za każdym razem tworzyłem od nowa, coby nie było nieporozumień i konfliktów. Grunt to fakt, że obecnie wszystko działa i bez błędów, będę mógł się do jakiejś roboty konkretniejszej wkrótce zabrać.

  3. chlebik Post author

    2.0.0 RC (18 August 2009)

    To tyle jesli chodzi o wersje – zreszta mi chodzi o zapoznanie sie ogolne ze sposobem programowania z uzyciem tego FW – jesli bede musial go uzywac na co dzien to z cala pewnoscia przysiade faldow by poznac go doglebnie w najnowszej wersji.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s