Explorando o Jboss Seam
A nova geração de aplicações web 2.0
Marcos [email protected] http://www.marcossousa.com
23/08/08 Explorando o Seam Framework 2
Agenda Contexto
Conceitos Básicos Seam
Demonstração Seam-Gen
Seam Extras Demonstração Geração PDF
Demonstração Envio de e-mails
Futuro
Perguntas
23/08/08 Explorando o Seam Framework 3
Sobre o Autor Desenvolvedor Java a mais 5 anos
Desenvolve aplicações JSF desde 2005
2 aplicações desenvolvidas em Seam
Colaborador do Java Vídeo Magazine
Mantém o Blog: http://www.marcossousa.com
23/08/08 Explorando o Seam Framework 4
Problemas embarcados do JSF Não suporta camada de negócios
EJB3 – Não pode ser usada diretamente
EJB3 – Não há conceito de escopo
Excesso de configurações em XML Dificulta Refactory
Complexidade na validação
Não tem suporte a requisições GET
Não tem controle de transações
Persistência de estado de alguns componentes
23/08/08 Explorando o Seam Framework 5
Alguns problemas para resolver Navegação
O botão voltar não é suportado
Como manter estado de componentes
Não oferece suporte a abas múltiplas Operações ocorrem na sessão
Não suporta contextos de conversação
Memory leak – falta de gerenciamento de objetos
23/08/08 Explorando o Seam Framework 6
O que é SEAM? Framework de integração de camadas
Conecta JSF + EJB3
Suporte a transações
Integração com objetos Groovy, Hibernate e Spring
Não requer container Java EE.
23/08/08 Explorando o Seam Framework 7
JSF + EJB3: várias camadas Como o Seam simplifica a integração?
Página JSFPágina JSF Backing Backing BeanBean EJB3EJB3
23/08/08 Explorando o Seam Framework 8
Hello World: JSF + EJB3 Um Session Bean anotado@Stateless@Name("helloWorld")public class HelloWorldBean implements HelloWorld { public String getSayHello() { return "Hello World"; }}
Configuração ejb-jar<interceptors><interceptor> <interceptor-class>org.jboss.seam.ejb.SeamInterceptor</interceptor-class></interceptor></interceptors> <assembly-descriptor> <interceptor-binding> <ejb-name>*</ejb-name> <interceptor-class>org.jboss.seam.ejb.SeamInterceptor</interceptor-class> </interceptor-binding> </assembly-descriptor> Chamar diretamente na página JSF: Simples!<h:outputText value="#{helloWorld.sayHello}"/>
23/08/08 Explorando o Seam Framework 9
Contextos Seam Event
– Criado durante a restauração da página até renderização (similar ao Request)
Page – Usado em chamadas de uma mesma página
– Útil para callbacks de páginas
Conversation– Suporte a múltiplas abas
– Gerencia estado de diversas chamadas de uma mesma janela
– Iniciado e parado via componente ou página
23/08/08 Explorando o Seam Framework 10
Mais contextos Seam Session
– Armazena dados de estado da autenticação/visita
Business Process– Controla o armazenamento de processos
– Usado para suportar o jBPM
Application– Gerencia os dados usados ao longo da execução
23/08/08 Explorando o Seam Framework 11
Page Actions Evento que ocorre antes da Renderização
– Executa ações
– Faz bind de parâmetros GET
– Controla Navegação e contexto de conversação
Configuração modular ou centralizada Possibilita a criação de URL Restfull Facilita a criação de URL User Friendly
Integração com o URL Rewrite
23/08/08 Explorando o Seam Framework 12
Segurança Gerencia a autenticação de usuários<security:identity authenticate-method="#{authenticator.authenticate}"/>
E a autorização baseada em rules<page view-id="/protected/*"> <restrict>#{s:hasRole('admin')}</restrict></page>
A partir da versão 2.1.0
– Integração com OpenId e JbossSSO
– API de Gerenciamento de Autententicação
– Possibilidade de adicionar resolvers para permissões
23/08/08 Explorando o Seam Framework 13
Gerador de códigos Seam Possui plugin visual Eclipse – Jboss Tools
Engenharia reversa do banco de dados
Deploy incremental Requer configuração
Saídas nos formatos WAR e EAR Recursos de autocompletar
23/08/08 Explorando o Seam Framework 14
Demostração Seam-Gen Criar aplicação de cadastro de notícias
Fazer engenharia reversa dos componentes para: Persistir, remover e pesquisar notícias, usuários, tags e
anexos
23/08/08 Explorando o Seam Framework 15
Seam Extras Onde o Seam mais impressiona!
Geração de PDFs Envio de e-mails Integração com Spring
Integração com GWT
URL User Friendly
Agendamento de tarefas
Gerenciamento de temas
E muito mais!
23/08/08 Explorando o Seam Framework 16
Geração de PDF Integração com o iText – PDF Generator
Possibilita criar tabelas, incluir imagens, quebrar páginas, etc.
<p:document xmlns:p="http://jboss.com/products/seam/pdf"> <p:image alignment="right" wrap="true" resource="/myimage.jpg" /> <p:font size="24"> <p:paragraph spacingAfter="50">Document Title</p:paragraph> </p:font> <p:paragraph alignment="justify"> This is a simple document. See Seam documentation and do more! </p:paragraph></p:document>
23/08/08 Explorando o Seam Framework 17
Envio de E-mails Usa a JavaMail para envio
Permite o envio de anexos
Os arquivos de mensagens são XHTML:<m:message xmlns="http://www.w3.org/1999/xhtml"xmlns:m="http://jboss.com/products/seam/mail"xmlns:h="http://java.sun.com/jsf/html"><m:from name="Marcos Sousa" address="[email protected]" /><m:to name="#{contact.firstname}">#{contact.email}</m:to><m:subject>My first Seam E-mail!</m:subject><m:body><p><h:outputText value="Dear #{contact.firstname}" />,</p><p>This is my first e-mail with seam, you can seen more in the office web
site:<ahref="http://www.seamframwork.org">http://www.seamframwork.org</a>.</p><p>Best Regards,</p><p>Marcos Sousa<br/><a href="http://www.marcossousa.com">www.marcossousa.com</a>.</p></m:body></m:message>
23/08/08 Explorando o Seam Framework 18
O que virá no futuro? Web Beans!!
Friendly URLs
Adobe Flex suporte
Suporte ao Wicket
Integração refinada com o Jboss Portal
Mais informações: http://java.dzone.com/articles/whats-new-seam-21-an-interview?mz=3006-jboss
23/08/08 Explorando o Seam Framework 19
Dúvidas?
23/08/08 Explorando o Seam Framework 20
Referências e links Documentação:
http://docs.jboss.com/seam/latest/reference/en-US/htm
Blogs: http://www.marcossousa.com/tag/jboss-seam
http://in.relation.to/Bloggers/Pete
Livros: Beginning Jboss Seam – Joseph Faisal
Pratical Jboss Seam Projects – Jim Farley
Jboss Seam: Simplicity and power beyond JavaEE – Tomas e Michael