Olá pessoal!
Resolvi escrever um breve tutorial sobre esse excelente framework Java para desenvolvimento de aplicações JEE. Breve tutorial? É possível fazer alguma coisa em JEE de forma breve? Sim, com o Seam é possível. Obviamente, não explicarei sobre a arquitetura do framework e, muito menos, sobre a arquitetura JEE. O nosso objetivo é desenvolver uma aplicação simples para cadastro de fornecedores e produtos. No nosso exemplo, um produto só pode pertencer a um único fornecedor.
Primeiro, você deve baixar o JBoss 4.2.3 GA e o JBoss-seam-2.0.2.SP1 (ver links) e descompactá-los em um diretório de sua escolha. Devo lembrá-lo que é necessário que o JDK 5, ou superior, esteja instalado e configurado no seu PATH.
Entre no diretório onde você descompactou o JBoss e inicie o servidor executando o script run.bat (Windows) ou run.sh (Linux) contido na pasta “Bin”. Isso aí! Já temos um servidor JEE em execução!
Começaremos o desenvolvimento de nossa aplicação.
Para isso, abra o prompt de comando do seu SO e entre no diretório onde você descompactou o JBoss-seam. Execute o seguinte comando (digite “seam help” para visualizar todas as opções disponíveis):
> seam setup
Algumas perguntas serão feitas e todas elas têm uma opção default. As respostas são bastante intuitivas. Mas vale ressaltar que o driver jdbc do seu SGBD deve estar no lib do JBoss-seam. Seguem abaixo as respostas que forneci:
Enter your Java project workspace (the directory that contains you Seam projects)
e:/EclipseProjects
Enter your JBoss home directory
c:/jboss-4.2.3.GA
Enter the project name
tutorial_seam
Do you want to use ICEFaces instead of RichFaces [n] (y, [n])
Select a RichFaces skin [blueSky] ([blueSky], classic, ruby, wine, deepMarine, emeraldTown, sakura, DEFAULT)
Is this project deployed as an EAR (with EJB components) or a WAR with no EJB support) [ear] ([ear], war)
Enter the Java package name for your session beans
com.mydomain.sessionbean
Enter the Java package name for your entity beans
com.mydomain.entitybean
Enter the Java package name for your test cases
com.mydomain.test
What kind of database are you using?
postgres
Enter the Hibernate dialect for your database [org.hibernate.dialect.PostgreSQLDialect]
Enter the filesystem path to the JDBC driver jar
../lib/postgresql-8.3-603.jdbc3.jar
Enter JDBC driver class for your database [org.postgresql.Driver]
Enter the JDBC URL for your database
jdbc:postgresql://localhost:5432/tutorial_seam
Enter database username
postgres
Enter database password
*******
Enter the database schema name (it is OK to leave this blank) []
Enter the database catalog name (it is OK to leave this blank) []
Are you working with tables that already exist in the database? [n] (y, [n])
Do you want to drop and recreate the database tables and data in import.sql each time you deploy? [n] (y, [n])
Com isso, temos a configuração necessária para criarmos efetivamente a estrutura de nosso projeto:
> seam create-project
Nesse ponto, já poderíamos abrir esse projeto no Eclipse ou no Netbeans. Mas não iremos abordar isso nesse tutorial.
Em seguida, gere o script da base de dados e importe em algum SGBD relacional de sua escolha. Para o exemplo, estou utilizando o Postgres.
Agora, vamos fazer a engenharia reversa da nossa base de dados e criar todas as páginas, classes, etc, necessárias para nossa aplicação funcionar:
> seam generate-entities
Pronto! Que tal fazermos um deploy de nossa aplicação no nosso servidor JEE? É muito simples:
> seam explode
Abra o seu browser e entre com a URL (O usuário para login é “admin” e a senha pode ser qualquer coisa):
http://localhost:8080/tutorial_seam
Conclusão
Dessa forma, concluímos o nosso projeto com todo o poder da plataforma JEE (transações distribuídas, pool de conexões, internacionalização, etc.) em poucos minutos (sem levar em consideração o tempo que levou para fazer os downloads
). Para aplicações do mundo real, esses utilitários são de grande ajuda, pois são o ponto de partida para pularmos tarefas tediosas como: montagem da estrutura inicial do projeto, criação de CRUDs, mapeamentos ORM, etc. Sendo assim, direcionamos o nosso foco para a criação de regras de negócio e personalização dos artefatos gerados pela ferramenta.
Aconselho você a olhar o código gerado e observar como é relativamente simples, poderoso e robusto. Não se assuste com a quantidade de XMLs gerados, provavelmente, nunca você vai precisar mexer neles.
Links
http://docs.jboss.com/seam/2.0.2.SP1/reference/en-US/html
http://www.seamframework.org/Download
http://www.jboss.org/jbossas/downloads/


Novembro 8, 2008 às 9:41 pm |
Ótimo Tutorial. Parabéns !
Novembro 18, 2008 às 11:24 pm |
Oi,
Realmente, bom tutorial, mas como faço para importar o projeto para dentro do Eclipse?
Já tentei de diversas formas e não consegui.
Qual o procedimento para tanto?
Grata,
Daniela,
Novembro 19, 2008 às 2:00 am |
Olá Daniela,
Vou providenciar um post ensinando como fazer, ok? Vou encontrar um tempinho e até, no máximo, esse fim de semana eu escrevo.
Muito obrigado pela sugestão e até a próxima,
Robert
Janeiro 9, 2009 às 12:27 pm |
Não esqueci do combinado. O problema está sendo arranjar tempo.
Janeiro 9, 2009 às 3:28 pm |
[...] Como algumas pessoas têm entrado em contato comigo com dúvidas de como abrir um projeto seam no Eclipse, segue abaixo um pequeno passo a passo para ter o projeto dentro de usa [...]
Janeiro 18, 2009 às 1:22 am |
Muito bem resumido. Parabéns! Realmente parece mágico. Só gostaria de ver funcionar, é que aqui ainda não foi. Primeiro tentei usando um SQL com vários relacionamentos e nem compilou, deu erro no build (parece que o código java que ele gerou ficou bugado). Até aí tudo bem, ele deve ser mágico mas nem tanto. Depois tentei com uma versão resumida do SQL, apenas com relacionamentos iguais aos do exemplo mencionado. Compilou, mas ao rodar deu outro erro: Failed to register driver for: com.mysql.jdbc.Driver; ClassNotFoundException (essa foi a classe que coloquei no lugar do seu org.postgresql.Driver), e coloquei também o mysql-connector-java-5.1.7-bin.jar (atual do mysql.com) no /lib do seam. Inclusive com isso ele passa pelo generate-entities certinho, e sem isso reparei que ali mesmo já deu o mesmo erro. Ou seja, parece que ele só não trouxe o driver na hora do explode. Tentei o deploy pelo ant também e nada. Alguma sugestão?
Janeiro 18, 2009 às 1:40 am |
Valeu pela força, Wagner! Já tentou colocar o driver manualmente no classpath do seu servidor de aplicação? Acredito que deve funcionar.
Janeiro 18, 2009 às 2:08 am |
Hmm, boa! Fui lá tentar isso e adivinha quem tava lá? Ele!!, que pelo visto eu me enganei, no explode ele é copiado sim, só não sei pq não está sendo reconhecido na hora de ser instanciado. Li comentários que ele realmente não reconhece drivers no JBoss AS /lib, que deve vir junto com o EAR. Tentei por na munheca lá também e nada, talvez dessa forma tenha que vir pelo deploy. Tem como incluí-lo no lib do EAR pelo Seam antes do deploy?
Janeiro 18, 2009 às 11:39 am |
Wagner, coloquei o driver do banco no diretório C:\jboss-5.0.0.GA\common\lib e funcionou normalmente. Até mais!
Janeiro 18, 2009 às 1:50 pm |
Opa! Resolvido. Eu tinha colocado no /lib e não no /common/lib. Então corrigindo duas informações erradas no meu post anterior: o classpath do JBoss AS é /common/lib e não /lib, e ele reconhece SIM drivers colocados ali. Obrigado e um ótimo domingo!
Janeiro 18, 2009 às 2:16 pm |
Blz Wagner!!! Abração e até a próxima!