sobota, 20 marca 2010

Seam - pierwsze kroki.

Biorąc pod uwagę swoje własne lenistwo, oraz to, że po prostu lubię jak mi ktoś pewne rzeczy wytłumaczy łopatologicznie, postanowiłem, że napisze krótki tutorial jak uruchomić przykładowe aplikacje z seam'a (mimo wcześniejszego posta, w którym w sumie napisałem gdzie najlepiej szukać pomocy). Tutorial obejmuje 2 rodzaje serwerów Tomcat i JBoss, ale możemy wybrać jeden z nich. Dla wszystkim miłośników Tomcat'a (sam do nich należę) polecałbym jednak spróbowanie JBoss'a.

Co potrzebujemy?
1. Seam w wersji 2.0.2.SP1: link
2. Tomcat w wersji 6.x: link
3. lub JBoss w wersji 4.2.3: link
4. Ant w wersji 1.8: link

Przygotowanie:
należy ściągnąć wyżej wymienione oprogramowanie i rozpakować. Oczywiście zakładamy, że mamy zainstalowane JDK w wersji minimum 5. oraz ustawione są zmienne środowiskowe JRE_HOME i JAVA_HOME w zależności od tego gdzie zainstalowaliśmy Javę. Jak to zrobić można przeczytać m.in. tu. Aby sprawdzić czy zmienna jest prawidłowo ustawiona możemy ją wyświetlić używając komendy set:

C:\Documents and Settings\andrzej>set JRE_HOME
JRE_HOME=C:\Program Files\Java\jre6
Po ustawieniu zmiennej, bardzo często trzeba uruchomić ponownie konsolę, żeby było ją widać - nie mam pojęcia dlaczego.

Przygotowanie Ant'a:
po ściągnięciu Ant'a i rozpakowaniu musimy ustawić zmienną środowiskową ANT_HOME na katalog w którym mamy Ant'a (%ANT_HOME%\bin\ant.bat), w moim przypadku:
C:\Documents and Settings\andrzej>set ant
ANT_HOME=C:\apache-ant-1.8.0
Musimy również dodać do zmiennej PATH (oczywiście po średniku) "%ANT_HOME%\bin", czyli w moim przypadku: "C:\apache-ant-1.8.0\bin".

Przygotowanie Tomcat'a:
Tomcat sam w sobie nie wymaga wielu przygotowań, oprócz prawidłowej instalacji Javy, aczkolwiek jeśli chcemy przetestować przykłady korzystające z EJB, musimy zainstalować Embedded JBoss, bardzo dobrą instrukcję jak to zrobić, możemy znaleźć tutaj. Dla tych którzy mają u siebie Java EE 6, należy nie zapomnieć o dodaniu jednej linii na początku pliku catalina.bat:
set JAVA_OPTS=%JAVA_OPTS% -Dsun.lang.ClassLoader.allowArraySyntax=true
Przygotowanie JBoss'a:
none

Odpalanie przykładowych aplikacji Seam:
1. Przechodzimy do katalogu głównego seam (nie pomylić plików!, ponieważ pliki build są praktycznie w każdym pod katalogu) i edytujemy plik: build.properties dodając w nim wspomniane wcześniej) ścieżki do katalogów głównych JBoss'a i Tomcat'a, w moim przypadku:
jboss.home=C:\\jboss-4.2.3.GA
tomcat.home=C:\\apache-tomcat-6.0.24
2. Przechodzimy do folderu "examples" i wybieramy jeden z przykładów, standardowo niech to będzie: "registration", przychodzimy do folderu wybranego przykładu z poziomu linii komend wykonujemy:

2.A.1. W przypadku JBoss'a polecenie ant explode:
C:\Andrzej\seam\jboss-seam-2.0.2.SP1\examples\registration>ant explode
2.A.2. Następnie uruchamiany JBossa z linii komend:
C:\jboss-4.2.3.GA\bin>run.bat
2.A.3. Odpalamy przeglądarkę i uruchamiamy nasz przykład:
http://localhost:8080/seam-registration/
2.B.1. W przypadku Tomcat'a (jeśli wczęśniej uruchamialiśmy przykład na JBoss'ie to musimy zatrzymać serwer oraz w katalogu przykładu wykonać ant clean):
C:\Andrzej\seam\jboss-seam-2.0.2.SP1\examples\registration>ant tomcat.deploy
2.B.2. Uruchamiamy Tomcat'a:
C:\apache-tomcat-6.0.24\bin>startup.bat
2.B.3. Odpalamy przeglądarkę i uruchamiamy nasz przykład (link jest trochę inny niż w przypadku JBoss'a, należy pamiętać o przedrostku "jboss-"):
http://localhost:8080/jboss-seam-registration/
I to by było na tyle, aby odpalić inne przykłady postępujemy analogicznie, zmieniając odpowiednio nazwę przykładu, tam gdzie jest to potrzebne.
W następnym poście postaram się napisać coś o seam-gen - bardzo przydatne narzędzie.
Tymczasem pozdrawiam.

4 komentarze:

  1. aby wyświetlić ustawioną zmienną środowiskową wystarczy zrestartować cmd a nie cały komputer, lecz też nie wiem dlaczego :P

    OdpowiedzUsuń
  2. Witam, krok po kroku, wszystko ok... ale deploy stworzonego war-u kończy się błędami

    SEVERE: Exception sending context initialized event to listener instance of class org.jboss.seam.servlet.SeamListener
    java.lang.NoClassDefFoundError: javassist/bytecode/ClassFile
    ...
    Caused by: java.lang.ClassNotFoundException: javassist.bytecode.ClassFile
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1516)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1361)
    ... 27 more

    SEVERE: Exception sending context destroyed event to listener instance of class org.jboss.seam.servlet.SeamListener
    java.lang.NoClassDefFoundError: javassist/util/proxy/MethodFilter
    ...
    Caused by: java.lang.ClassNotFoundException: javassist.util.proxy.MethodFilter
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1516)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1361)
    ... 31 more

    Moja specyfikacja to:
    - Seam w wersji 2.0.2.SP1
    - Tomcat w wersji 6.0.26
    - Ant w wersji 1.8.1
    - JVM 1.6.0_20-b02
    - Windows XP

    Próbowałem dodawać po kolei brakujące jar-y (javassist.jar, dom4j-1.6.1.jar, hibernate-validator.jar, javax.persistence.jar, jta-1.0.1B.jar) jednak bez skutku pojawiały się inne...

    Co robię nie tak lub czego mi brakuje?

    OdpowiedzUsuń
  3. Generalnie może jest coś nie tak z samym tomcatem... jesteś pewien, że zainstalowałeś poprawnie Embedded JBoss? Bo widzę właśnie, że link, który kiedyś dałem nie działa, może to ci coś pomoże:
    http://community.jboss.org/wiki/EmbeddedAndTomcat

    OdpowiedzUsuń