07 czerwca 2008

Pierwsze kroki z JBoss Seam i Apache Geronimo

Kilka dni temu pisałem o aplikacji opartej o JSF (JavaServer Faces), w której potrzebowałem skorzystać ze znaczników JSP projektu jpivot (notka java.io.File.toURI().toURL() oraz słów kilka o Ajaxie w Wicket). Właśnie przed konfiguracją mechanizmu utrwalania danych opartych o Spring Framework i JPA (Java Persistence API) myślałem o rozwiązaniu ala Ruby on Rails (RoR), w którym podałbym podstawowe dane aplikacji, a większość z niej utworzona byłaby automatycznie. Moja aplikacja nie będzie aplikacją CRUD (Create/Read/Update/Delete) , ale jej zręby przydałyby mi się na starcie. I tak sobie rozważałem, jakby tu ubrać temat w jakiś projekt (potencjalnie rozwijany przez społeczność polskich JUGów), aż tu przypomniałem sobie o...JBoss Seam! Nie wiem jak mogłem o nim zapomnieć! Skoro potrzebuję szkieletu ala RoR, JSF, JPA i biblioteki kontrolek JSF w postaci Apache MyFaces Trinidad czy podobnie, to właśnie JBoss Seam zdaje się być idealnym rozwiązaniem. To się nazywa znaleźć rozwiązanie na miarę wymagań. Nie należę do znawców tematu JBoss Seam, więc tym bardziej kręci mnie popróbowanie się z nim (pisałem o nim kilkakrotnie w kategorii jboss seam).

Lektura strony domowej projektu JBoss Seam - http://seamframework.org - nie pozostawia złudzeń wyboru szkieletu aplikacyjnego:

Seam is a powerful open source development platform for building rich Internet applications in Java. Seam integrates technologies such as Asynchronous JavaScript and XML (AJAX), JavaServer Faces (JSF), Java Persistence (JPA), Enterprise Java Beans (EJB 3.0) and Business Process Management (BPM) into a unified full-stack solution, complete with sophisticated tooling.

To jest dokładnie to, czego potrzebowałem do zbudowania mojej nowej aplikacji.

Początkowo próbowałem się z archetypem JSF+Facelets+Seam Archetype, ale już po chwili widać było, że nie tędy droga. Po poprawnym zestawieniu projektu z archetypem mavenowym softeu-archetype-seam:
 $ mvn archetype:create \
-DarchetypeArtifactId=softeu-archetype-seam \
-DremoteRepositories=http://maven.softeu.cz/ \
-DgroupId=pl.jaceklaskowski.seam \
-DartifactId=seam-facelets-witajswiecie
...
[INFO] ----------------------------------------------------------------------------
[INFO] Using following parameters for creating OldArchetype: softeu-archetype-seam:RELEASE
[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: groupId, Value: pl.jaceklaskowski.seam
[INFO] Parameter: packageName, Value: pl.jaceklaskowski.seam
[INFO] Parameter: basedir, Value: c:\projs\sandbox
[INFO] Parameter: package, Value: pl.jaceklaskowski.seam
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] Parameter: artifactId, Value: seam-facelets-witajswiecie
[INFO] ********************* End of debug info from resources from generated POM ***********************
[INFO] OldArchetype created in dir: c:\projs\sandbox\seam-facelets-witajswiecie
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
jego uruchomienie zakończyło się błędem.
 [INFO] Jetty server exiting.
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Failure

Embedded error: Could not create Component: org.jboss.seam.security.identity
No converter for type: org.drools.RuleBase
Tyle było z mojego wykorzystania Seama z pomocą archetypu softeu-archetype-seam. Kasuję projekt seam-facelets-witajswiecie.

Oparcie się o skrypt seam (aka seam-gen) szczęśliwie dało oczekiwany skutek - utworzenie aplikacji seamowej. Mimo konieczności wskazania katalogu domowego JBoss AS, którego nie miałem (i na chwilę obecną nie planuję mieć), uruchomienie projektu z Apache Geronimo sprowadziło się do pewnych zmian w dostępności bibliotek, utworzenia planu i instalacji modułu wspierającego pracę Hibernate z JTA w Geronimo i tyle. Moje doświadczenia spisałem w postaci kolejnego artykułu Pierwsze kroki z JBoss Seam i Apache Geronimo. Jutro popróbuję się z tworzeniem akcji z pomocą skryptu seam.

Ciekawym Twoich doświadczeń z JBoss Seam i zestawianiem środowiska do tworzenia aplikacji z nim. Każde uproszczenia mile widziane, więc jak masz jakieś, koniecznie pozwól mi je poznać.

Pytanie konkursowe: Jakie polecenie skryptu seam stworzy projekt seamowy?