JBoss Seam (http://www.seamframework.org), é uma poderosa plataforma open source de desenvolvimento web para construção de aplicações ricas de internet, em Java.
Esse post foca no desenvolvimento com Seam, utilizando o container web Tomcat, sem utilização de EJB, mas utilizando Seam com POJO e JPA+Hibernate como provedor de persistência. Ele foca na configuração do Seam no Tomcat.
Não vou explicar os conceitos implementados pelo Seam (como conversação e segurança, por exemplo), usados nessa aplicação. Isso fica para um outro post.
Na documentação do Seam existem todos os passos de configuração para utilização do Seam no Tomcat e em outros servidores.
Antes de tudo, baixe o Seam. Vou usar o release 2.1.1.GA. Vou considerar que o Seam, após ser descompactado em alguma pasta, está em $SEAM_HOME.
Pasta onde o seam foi descopactado
Vou usar um exemplo que já vem com o Seam. É uma aplicação de Reservas de Hotel (BookingHotel), que faz consultas em hotéis para se hospedar, faz reserva de quartos, e o cadastro de usuário (no caso, o hóspede solicitante da reserva). Essa aplicação exige um usuário logado.
Sendo bem direto, vou mostrar os passos e depois comentá-los.
De acordo com a documentação:
• Instale Tomcat 5.5 ou Tomcat 6
• Copie a lib do banco de dados embutido que vem com o download do Seam que está em $SEAM_HOME/lib/hsqldb.jar para $TOMCAT_HOME/common/lib (no Tomcat 5.5) e
$TOMCAT_HOME/lib (no Tomcat 6)
• Entre na pasta $SEAM_HOME/examples/jpa pelo console e execute:
Para Tomcat 5.5
# ant tomcat55
Para Tomcat6
# ant tomcat6
Pasta de exemplo com JPA do Seam
executando o build do ANT no console
• Copie o .war gerado que deverá estar na pasta $SEAM_HOME/examples/jpa/dist-tomcat6/jboss-seam-jpa.war para a pasta $TOMCAT_HOME/webapps
Aplicação gerada para deploy no Tomcat
• Inicie o tomcat
• Acesse a aplicação em http://localhost:8080/jboss-seam-jpa/
Nesse momento, a aplicação já deve estar funcionando. Com o arquivo .war, fica fácil de importá-lo para o Eclipse/MyEclipse. Essa explicação também fica para outro post.
Agora, como prometido, explicando os passos, após instalar o Tomcat:
• A aplicação de exemplo BookingHotel usa um banco de dados livre, o HSQLDB. As entidades dessa aplicação já criam as tabelas necessárias. Não é necessário se preocupar com configurações do banco. Leia esse artigo sobre ele.
• No passo 3, o building do exemplo é feito como Ant. O Apache ANT é uma ferramenta de automação de builds bem conhecida. Mais informações nesse artigo.
• Esse comando do ant chama o arquivo build-tomcat55.xml ou build-tomcat6.xml dependendo do comando. Perceba que, na pasta da aplicação existem outros arquivos de build, como o build-glassfish, o build-jboss, o build-websphere61. Ou seja, presumimos que para usar o seam em outros servidores, os passos devem ser semelhantes. A documentação que vem com o download do Seam explica tudo isso no arquivo $SEAM_HOME/examples/jpa/readme.txt
• Os demais passos são simplesmente o deploy (copiar o .war) para a pasta webapps do Tomcat, iniciá-lo e acessar o endereço.
Perceba que o Tomcat não necessita de nenhuma configuração a mais. Digo isso, pois já vi muita coisa complicada sobre rodar o seam no tomcat.
Espero que esse tutorial sirva como base para projetos baseados em Seam com POJO+JPA+Hibernate.
Compartilhe suas idéias.
Tags: java server faces, jboss, JBoss Seam, jsf, passoapasso, seam, tomcat
Bacana, muito bom Galba!
A maioria das aplicações web que vejo realmente não precisam de um servidor de aplicações tão robusto (JBoss, Glassfish etc). Muitas vezes o bom e velho Tomcat ou mesmo o famoso Jetty resolvem.
Eu sou fã de light-weight container, e acredito que Seam+Tomcat funciona muito bem.
Enfim, vê se continua postando mais sobre JSF (em especial sobre Seam), pois está escasso *ainda* o número de blogs nacionais sobre o assunto.
Abraços, e parabens pelo post!
Muito bom Galba… ótimo material pra quem vai começar a ter contato com o Seam.
Parabéns!
A aplicação funciona perfeitamente, testei usando o Tomcat6. Muito parecido com este passo a passo neste link:
http://techieexchange.wordpress.com/2007/11/11/rad-seam-development-with-eclipse-and-tomcat-step-by-step-tutorial-screencast
Consegui importar o projeto no Eclipse para ter um ambiente configurado para desenvolvimento. Porém, vocês conseguiram rodar os testes que vêm com o exemplo? Aparece a seguinte exceção (sem mexer em nenhuma configuração ou código):
java.lang.NullPointerException
at java.lang.String.startsWith(String.java:1252)
at java.lang.String.startsWith(String.java:1281)
at org.ajax4jsf.webapp.WebXml.getFacesResourceKey(WebXml.java:189)
at org.ajax4jsf.webapp.WebXml.getFacesResourceKey(WebXml.java:222)
at org.ajax4jsf.resource.InternetResourceService.serviceResource(InternetResourceService.java:139)
at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:500)
at org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:56)
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
at org.jboss.seam.mock.AbstractSeamTest$Request.run(AbstractSeamTest.java:491)
at org.jboss.seam.example.jpa.test.LoginTest.testLogin(LoginTest.java:52)
Pelo link
http://www.seamframework.org/Community/TestNGOfSeamEmailFails
percebe-se que outras pessoas tiveram o mesmo problema. Podem contribuir com alguma dica? Grato pela atenção.
João.
Muito bom
so faltou mostrar como configurar o ant pra ficar perfeito pra qualquer iniciante
criar o ant_home
SET ANT_HOME=C:\\ant
e configurar o path
SET PATH=%PATH%;%ANT_HOME%\bin
Estava tentando rodar usando só o tomcat com aquele codigo que é gerado pelo jboss tools, foi só dor de cabeça. Perfeita sua dica, agora posso iniciar o projeto, valeu.
Muito fixe!!
Até antes de ler este post estava muito confuso. Pensava até em desistir do seam!
Valeu!
@Odilio, @Flavio, @Zebel
Legal esse post ter ajudado voces.
É algo simples, que vem na propria documentação do seam. E bastante útil.
Obrigado pelos comentários. Eu devia ter respondido antes. Até.
Galba, muito bom e didático. Pra quem tá começando (eu) tá ótimo!!