Seam3 + Maven + Tomcat – Isto é possível?
Autor: Jony Ferreira | Publicado: 2011-06-09T22:58:00-03:00

Esta é uma dúvida daqueles que ainda não testaram o Seam 3 ou daqueles que ainda não migraram para a nova versão que foi lançada. Assim como você que está lendo esta postagem também descobri que isto é possível e por sinal muito simples a princípio.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    Para inicio de conversa iremos usar um template(archetype) já existente o qual irá facilitar boa parte do projeto. Para maiores informações sobre templates leia Dicas para usar templates de projetos pré-configurados no Maven - Maven Archetypes. Execute o comando abaixo para criar o seu projeto, (veja que usei -DgroupId=br.com.maven3.tutorial -DartifactId=projeto.exemplo.seam3 mas você pode alterar isto): mvn archetype:generate -DinteractiveMode=n -DarchetypeArtifactId=jboss-jsf-weld-servlet-webapp -DarchetypeGroupId=org.jboss.weld.archetypes -DarchetypeRepository=central -DgroupId=br.com.maven3.tutorial -DartifactId=projeto.exemplo.seam3&nbsp; Após a execução com sucesso veja que a pasta projeto.exemplo.seam3 foi criada. Ótimo não? Ótimo que nada! Vamos ver o que ainda é possível… Este template de projeto foi projetado para funcionar com Tomcat e também com o Jetty. Para maiores informações veja no próprio site do Seam. Agora vamos para mágica(não é mágica é maven mesmo facilitando a nossa vida): Execute o comando para gerar o pacote: mvn package Para finalizar, vamos executar o projeto criado, mas para isto vamos apenas executar o comando:  mvn tomcat:run&nbsp;  Isto mesmo, o danado do Maven fez o Download do Tomcat e iniciou na porta 9090. Acesse o endereço http://localhost:9090/projeto.exemplo.seam3 e verá a tela:  Sei que pode estar pensando que isto foi uma mágica de tão simples mas sugiro aprender um pouco mais do Maven, Seam e finalizar lendo o arquivo pom.xml gerado. Este template de projeto criado está com o pom.xml comentado, vale a pena conferir. Na verdade o template é apenas um exemplo para implementação do Weld. Weld é uma implementação de referência(RI) do JSR-299: Java Contexts and Dependency Injection for the Java EE platform (CDI). CDI é o padrão Java para injeção de dependência e de gestão do ciclo de vida contextual. Qualquer servidor de aplicações Java EE 6-compatível oferece suporte a JSR-299. Para os que estão evoluindo do Seam 2 para o Seam 3 segue um diagrama que ilustra o relacionamento entre Seam 2, Seam 3 e JSR-299:  Resumindo:   CDI é uma especificação JCP incluída no Java EE  Weld é uma implementação do CDI  Seam 3 é um conjunto de módulos os quais estendem o CDI para complementar as ferramentas já fornecidas pelo Java EE 6. Após saber mais um pouco sugiro conhecer os módulos existentes no Seam 3 em http://seamframework.org/Seam3/Status#H-Modules. Depois vá mudando o exemplo anterior apresentado para testar os seus conhecimentos adquiridos. Boa Sorte! Qualquer dúvida, sugestão, ou até mesmo que não tenha conseguido executar, por favor deixe o seu recado.