Comparativo entre arquétipos Maven usando Jboss Seam

November 1, 2010 at 2:49 am 5 comments

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:

É isso, pessoal, espero que aprendam algo! Até a próxima!

Entry filed under: JBoss, JBoss AS, Jboss Seam, Seam 2. Tags: .

Tutorial – JBoss Seam + Jboss AS + Maven + EJB + Eclipse + Jboss Tools Post relâmpago – solucionando problemas nada óbvios com Jboss e Eclipse

5 Comments Add your own

  • 1. Paulo Jerônimo  |  November 4, 2010 at 4:02 pm

    Passei por aqui para dizer que teu post ficou legal… Parabéns!

    Reply
  • 2. Patrícia  |  November 28, 2010 at 4:24 pm

    não me ajudou em nada ¬¬

    Reply
    • 3. hannelita  |  November 28, 2010 at 5:06 pm

      Nossa, Patrícia, que pena que não deu pra ajudar vc com esse post =( Ele é apenas um resumo das principais dependências e características que esses arquétipos contém! Se você tem alguma dúvida específica, poste aqui ou me envie um email que tento ajudar! =)

      Reply
  • 4. Fhighlander  |  February 15, 2012 at 4:25 pm

    Parabéns pelo post, ficou ótimo! =)

    Você já conseguiu migrar um projeto do Seam 2 para JBoss 7?

    Pelo que andei vendo nos fóruns a coisa não parece mt simples =/

    Essas threads aqui não ajudaram muito:

    1 – https://community.jboss.org/blogs/marek-novotny/2011/07/29/seam-2-booking-example-on-jboss-as-7
    2 – https://community.jboss.org/blogs/marek-novotny/2011/07/15/seam-2-jpa-example-on-jboss-as7

    E para melhorar a utilização de lookup do JNDI que funciona no tomcat quando vc registra um resource lá no Global Naming Recources parece não estar implementado no JBoss 7.0 e deve sair no 7.1…

    Reply

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

Trackback this post  |  Subscribe to the comments via RSS Feed


Calendar

November 2010
M T W T F S S
« Oct   Dec »
1234567
891011121314
15161718192021
22232425262728
2930  

Most Recent Posts


%d bloggers like this: