Wednesday 23 September 2009

SEAM 2.2.0.GA com Tomcat 6

Ola pessoal, passei um tempo sem postar por varios motivos, projetos e meu pequeno projeto pessoal em J2ME, que esta quase pronto.
Agora vou falar da minha ultima semana tentanto fazer uma aplicacao SEAM rodar com o Tomcat 6.
Talvez alguem tenha conseguido, mas eu que passei mais de semana procurando em posts lendo em livros e tudo mais, nao consegui usando o JBoss Tools 3.5 com Eclipse 3.5, em versoes anterioes eu consegui, mas nessas duas ultimas edicoes do Eclipse com a JBoss Tools ficou praticamente impossivel, primeiro porque o "tools' nao esta maduro o suficinete, deixa muito a desejar, seja qdo vc cria um projeto que ele inclui tudo como se fosse para um AS JBoss, seja que vc precisa depois de criado o projeto ter que entrar nas configuracoes do projeto (Propriedades) para algo como que refazer os settings que ficam muitos em branco, a falta de documentacao para integrar Seam com Tomcat e enorme, achei mais duvidas sem respostas na net do que resolvidas. Muitas comfiguracoes que nao sao colocadas pelo "tools" que deveriam estar la, ou seja ficam faltando linhas de configuracoes no components.xml, web.xml. Fora que e preciso baixar um plugin para o Tomcat que se chama JBoss embedded. Que tambem nao se tem muitas explicacoes em como fazer ele rodar a contento com o AS, e mais ainda ele nao funciona com SE 6, somente com o 5.0. Os tutoriais nao sao coerentes, em um da JBoss explica que para instalar o Embedded e muito simples, bastando somente fazer dois ou tres passos, mas depois vendo em foruns e em um outro tutorial da Red Hat que nao era bem assim, precisa incluir linhas no context.xml e no server.xml do tomcat para que ele "enxergue" o plugin.
Ao meu ver NAO compensa nem tentar rodar o SEAM com Tomcat de tantas cfgs que serao necesarias e muitas delas nao sao documentadas e voce precisa meio que rodar foruns a procura de algo que esteja acontecendo com voce e meio que tentativa e erro, o que nao e valido de forma nenhuma para producao.
E por fim qdo voce usa o plug in para fazer o deploy para vc, este vai faltando o persistence.xml que tb qdo e gerado vem faltando a configuracao certa para o JNDI e deveria ser algo assim java:comp/env/jdbc/ e isso que e uma coisa basica nao vem configurado e para que rode alguma coisa a contento vc precisa gerar o .war e exportar para o diretorio de deploy ou criar um ant build.
Achei varios blogs de pessoas falando que somente com alguns tweaks era possivel fazer o SEAM rodar a contento no Tomcat, mas em nenhum deles, talvez devido a eu estar usando novas versoes, foi possivel fazer alguma coisa funcionar.
O mais interessante e que os exemplos do SEAM funcionam, mas para vc gerar um projeto e testar e muito diferente. A comecar pelos .jars que nao sao copiados para o AS e nem incluidos no projeto, vc tem que sair catando eles e descobrindo por tentativa e erro.
Olha foi uma experiencia frustrante tentar fazer o SEAM rodar no Tomcat, Usando o JBoss Tools. NAO RECOMENDO de forma alguma fazer isso, e mais ainda, quem escreve que o JBOSS Tools e praticamente a mesma coisa que usar o JBoss Developer Studio (Exadel), esta redondamente enganado, fiz alguns testes com a versao RC 2.0 e esse sim com um minimo de tweaks foi possivel rodar uma aplcacao SEAM em qq AS que vc queira, porem e pago e nao e barato. Acho que este e um dos maiores problemas que o SEAM enfrenta para se firmar como um framework de primeira, pois a ideia e otima, e ele e muito bem arquitetado, mas carece de uma comunidade forte e de ferramentas boas.
Pode ser que nas proximas versoes se consgigam uma melhor integracao com o Eclipse 3.5, com Tomcat e mesmo com o JBoss, deixando muitas coisas mais automatizadas, pois para um framework que se diz livre dos XMLs da vida... ele tem quase tanta cfgs em .xmls qto o Spring.
A diferenca e que no Spring vc os usa dentro da aplicacao e as configuracoes no lado do AS sao minimas, e no SEAM isso e o inverso... vc fica muito dependente de linhas em arquivos .xml para que o AS trabalhe como SEAM, porem no site do Spring vc ve dezenas de exemplos e ha centenas de livros e foruns a respeito o que nao acontece com o JBoss Seam, e uma ideia interessante mas que ainda precisa amadurecer bastante em alguns aspectos e sinceramente falando nao sei se ira realmente decolar, devido ao Web Beans que vem por ai, que e como uma versao do SEAM com menos recursos. Se voce parar para pensar bem... quem vai querer aprender SEAM sendo que o maior concorrente deles e feito pela mesma comapnhia e pessoa que o criou e ainda sendo um padrao que com certeza devera ter ferramentas de integracao muito melhores e ira contar rapidamente com uma comunidade maior?
Devo fazer um esforco e postar no max em 15 dias um exemplo com JBoss AS 5.1, o que devera ser bem mais facil.
Bom e isso ae, se alguem conseguiu fazer essa facanha de rodar uma aplicacao com Data Source usando SEAM no Tomcat 6, por favor poste aqui como voce fez em detalhes com versoes e tudo mais.
Obrigado

5 comments:

ana lucia pacó said...

Cara estou tentando fazer isso o dia inteiro e não dá certo, vou desistir.

Unknown said...

Ola Ana, voce tentou o dia inteiro a fazer uma aplicacao SEAM rodar no Tomcat e isso ? Se for me desculpe mas eu ainda nao tive tempo de publicar um exemplo completo com todas as jars e cfgs, estou envolvidos em projetos um atras do outro, e como disse no post, SEAM e Tomcat e problematico, preciso tempo para fazer todos os tweaks e deixar ele redondo para o SEAM, mas se vc tiver alguma experiencia com JBOSS e mais facil, veja se acha o JBoss Studio e com ele e tudo muito facil. Obrigado

Unknown said...

Olá Amigos,
realmente devo concordar que fazer um projeto Seam + Tomcat é algo que as vezes acaba nos desmotivando. Tenho visto em muitos fóruns e posts de blogs que é possível se fazer isto, uma vez que nos documentos contidos na distro do Seam existem exemplos, porém ninguém publica algo concreto a respeito de projeto, seja com Eclipse, ou com gerenciadores de projeto como Ant e Maven. Acho melhor mesmo ir direto para JBoss AS, é bem mais simples e as configurações de persistencia através de JNDI ficam mais simples! Abraços!

gutoconde said...

Estou tentando a mesma coisa sem sucesso. Consegui resolver os problemas de classpath copiando algumas bibliotecas a partir do diretório lib do zip jboss-seam. Seguindo algumas sugestões, alterei para debug=false no components.xml e exclui o tratamento de exception genérico no pages.xml (última declaração). Alterei o persitence.xml tb. A aplicação está sem erros mas nenhum componente seam é acionado no sevidor.

Unknown said...

Ola pessoal,

Em primeiro lugar me desculpem a falta de posts e a demora em responder, e que estou muito corrido com um longo projeto.
Mas vamos la, para o Tomcat, vc nao pode usar o JTA (so consegui com transaction-type="RESOURCE_LOCAL") no persistence.xml, nao vai funcionar, pq ele nao tem um EJB container, isso e um dos maiores problemas do SEAM com tomcat, devido a ele trabalhar com statefull aplicacoes.
Se voces me mandarem um email, eu posso reinstalar o RC2.0 do JBoss que possuo e gerar um pequeno projeto com Tomcat e depois mando para voces zippado, e ai e so olhar e seguir a risca. Mas como ja disse e o Marcio tambem (aqui mesmo) e mais facil (muito mais) criar um exemplo (ou um projeto) usando o JBoss AS ou mesmo o Glasfish pq ja usei tambem. Aguardo o email de voces, anotem o meu ae klausvillaca@gmail.com
Caso voces queiram dar uma fucada a Oracle tem uns exemplos aqui http://www.oracle.com/technology/products/ias/toplink/jpa/tutorials/jsf-jpa-tutorial.html#CHDBFEEH
Obrigado