Posts filed under ‘Seam 2’
Comparativo entre arquétipos Maven usando Jboss Seam
Escolhendo o melhor arquétipo Maven para usar com Seam
Enquanto o Seam 3 final não é lançado, uma das melhores formas de construir projetos utilizando Jboss Seam e Maven é através de arquétipos já existentes. Esse artigo lista três arquétipos que considero excelentes e as principais diferenças entre os três.
1 . Arquétipo contendo um WAR simples para ser hotdployed no Jboss AS (De preferência o Jboss AS 5.1) – Use esse arquétipo aqui – http://code.google.com/p/ctpjava/wiki/JBossSeamMavenArchetype
Simples mas agressivo, esse arquétipo é um dos mais completos que já vi. Especialmente pra quem curte e pratica TDD, ele já vem com uma infra de testes muito boa! Deem uma olhada no POM pra ver o que ele contém em suas dependências:
<dependency> <groupId>org.jboss.seam.embedded</groupId> <artifactId>hibernate-all</artifactId> <version>${jboss.embedded.version}</version> <scope>provided</scope> </dependency></pre> <!-- *************** Test Dependencies *************** --> <dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>5.8</version> <classifier>jdk15</classifier> <scope>test</scope> </dependency> <dependency> <groupId>org.jboss.seam.embedded</groupId> <artifactId>jboss-embedded-all</artifactId> <version>${jboss.embedded.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.jboss.seam.embedded</groupId> <artifactId>jboss-embedded-api</artifactId> <version>${jboss.embedded.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.jboss.seam.embedded</groupId> <artifactId>thirdparty-all</artifactId> <version>${jboss.embedded.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>javax.faces</groupId> <artifactId>jsf-api</artifactId> <version>${javax.faces.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.faces</groupId> <artifactId>jsf-impl</artifactId> <version>${javax.faces.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.el</groupId> <artifactId>el-api</artifactId> <version>1.2</version> <scope>provided</scope> </dependency>
Ele já vem com o testeng (para testes de integração, especialmente) e é possível mockar o Seam de uma forma muito simples para realizar testes unitários!
Fora isso ele já vem com toda a estrutura pronta para hotdeploy, de forma que basta baixar o projeto e dar um mvn:package que a pastinha do projeto já aparece no diretório de deloy do jboss! =)
O projeto em si é extremamente bem feito, com um arquivo de properties para configuração de banco e testes. A configuração dos aspectos do Jboss se encontram no POM do arquivo principal. Bem simples:
<properties></pre> <java.source.version>1.5</java.source.version> <jboss.seam.version>2.2.0.GA</jboss.seam.version> <jboss.richfaces.version>3.3.2.SR1</jboss.richfaces.version> <jboss.jbpm-jpdl.version>3.2.3</jboss.jbpm-jpdl.version> <jboss.embedded.version>beta3.SP9</jboss.embedded.version> <drools.version>5.0.1</drools.version> <javax.faces.version>1.2_12</javax.faces.version> <icefaces.version>1.8.1</icefaces.version> <hotdeploy.version>0.3.3</hotdeploy.version> <cli.version>0.7</cli.version> <jboss.server>default</jboss.server> <jboss.server.directory>F:\Eclipse\jboss-5.1.0.GA\jboss-5.1.0.GA</jboss.server.directory> <jboss.servers.directory>${jboss.server.directory}/server</jboss.servers.directory> <jboss.deploy.directory>${jboss.servers.directory}/${jboss.server}/deploy</jboss.deploy.directory> </properties>
Atenção – só consegui baixar o projeto utilizando Maven 3. Utilizando algum Maven 2.x não rolou de forma alguma.
Único ponto falho que observei no projeto é que ele poderia já vir com FIleSync…. O hotdeploy é perfeito com o FIleSync, apesar de muitas pessoas reclamarem dele.
Os criadores do arquétipo até fizeram um vídeo explicativo: http://www.youtube.com/watch?v=Zpn-teo1l3E
Vale a pena conferir! =)
Bom, agora vamos partir pra alguma coisa mais pesada – Arquétipos de EAR, e não só com WAR. Conheço dois bons arquétipos de EAR:
2. Arquétipo de referência – RI – http://www.glxn.net/seam-maven-refimpl/doc/tutorial/01-gettingstarted.html – de cara é simples e muito eficiente.
Possui ferramentas de testes e usa o OpenEJB. Não cheguei a colocar nenhum projeto em prática com esse arquétipo, apenas baixei para ter uma idéia. A parte chata dele é que de fato, tal qual sugere o tutorial, você vai ter que puxar o arquétipo com o Tortoise do repositório. Mas no geral é um arquétipo muito bem estruturado e limpo.
3. Arquétipo do Akquinet – http://blog.akquinet.de/2009/09/14/getting-started-with-jboss-seam-and-maven-in-10-seconds/ – esse é pra agredir mesmo! Na minha opinião, em questão de estrutura é o mais completo, porém o menos organizado. O que chama atenção nele é o módulo de entidades. De fato, se você já passou pela experiência de tentar criar seu próprio arquétipo Maven para Seam, deve ter sofrido com o módulo de entidades se caso ele estivesse no mesmo projeto. Incrivelmente, o projeto do Akquinet TEM UM MÓDULO DE ENTIDADES!!! E FUNCIONA =D
Procure nos catálogos do seu Eclipse o arquétipo do akquinet. Costuma ter. Caso não tenha, basta puxá-lo digitando
mvn archetype:generate -DarchetypeGroupId=de.akquinet.jbosscc -DarchetypeArtifactId=jbosscc-seam-archetype -DarchetypeVersion=1.2 -DarchetypeCatalog=http://seam-archetype.sourceforge.net/jbosscc-seam-archetype/1.2/archetype-catalog.xml
Como os outros arquétipos, ele oferece um bom suporte a testes:
<dependency></pre> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>org.easymock</groupId> <artifactId>easymock</artifactId> <version>2.5.2</version> <scope>test</scope> </dependency> <dependency> <groupId>org.easymock</groupId> <artifactId>easymockclassextension</artifactId> <version>2.5.2</version> <scope>test</scope> </dependency>
Se bem que faltou algo mais aprimorado aí…. Como o tsteNG e o OpenEJB que não estão presentes…
Outra bomba nesse projeto é a ausência de uma estruturação para hotdeploy…. É preciso configurar o projeto war no braço pra conseguir… Meu post anterior possui um tutorial que ensina a fazer isso e ensina também a usar o FileSync com esse arquétipo. Ele também poderia conter mais arquivos de properties para facilitar algumas configurações.
Mas tirando essas questões, é um projeto bem completo, atent para configurações de cachê de segundo nível, Drools, Bootstrapper de EJBs e por aí vai. Recomendo fortemente!
Uma dica para os projetos EAR que ainda não testei (mas pretendo) – Colocar o Arquillian em um desses projetos! Ainda não conhece o Arquillian??? http://www.jboss.org/arquillian
O Arquillian na minha opinião foi um insight muito grande e é bastante promissor (pelo menos no meu ponto de vista). Seria ótimo vê-lo rodando com um desses arquétipos, mesmo que ele ainda esteja em sua versão alpha. O que acham? =)
Para aqueles que desejam construir um arquétipo do zero, a pedida é usar o Jboss Tools para dar uma mãozinha…. Vejam essa publicação: http://docs.redhat.com/docs/en-US/JBoss_Developer_Studio/4.0/html/Seam_Developer_Tools_Reference_Guide/mavenized_seam.html – A versão 3.5.1 para Eclipse Galileo e 3.5.2 para Eclipse Helios já fornecem suporte para uma integração nativa na hora de criar um projeto com Seam. Basta seguir os passos desse tutorial =)
E para quem quiser mais informações, aí vai algumas leituras que considero úteis:
- Publicação de Kasper Sørensen – http://kasper.eobjects.org/2009/04/seam-ejbs-and-ear-packaging-in-maven.html
- Artigo da JavaWorld sobre Jboss, Seam e Maven – me foi muito úil para entender a estruturação do arquétipo – http://www.javaworld.com/javaworld/jw-06-2008/jw-06-build-the-enterprise.html – Os comments possuem links úteis de arquétipos e modelos de projeto que funcionam e podem servir como referência
- Referências do seamframework.org – http://seamframework.org/Documentation/IsThereAMaven2ProjectTemplateForSeamApplications – tudo que você sempre quis saber sobe Seam e Maven aqui =)
É isso, pessoal, espero que aprendam algo! Até a próxima!
Tutorial – JBoss Seam + Jboss AS + Maven + EJB + Eclipse + Jboss Tools
Olá pessoal! Post de inauguração do blog! E pra começar bem, ele traz um tutorial que explica com alguns detalhes com configurar uma aplicação com JBoss Seam + Jboss AS 5 + Maven + EJB 3 + Eclipse Galileo + Jboss Tools + Hot Deploy. Isso é algo que não é muito trivial de se fazer. Graças a um arquétipo de Maven já pré-estruturado o processo se agiliza muito =) O tutorial ficou um pouco extenso, e reúne muitas informações úteis encontradas em diversos sites. Ele se encontra na minha conta do SlideShare e pode ser baixado aqui.
=)