Desenvolvimento Web 2.0 E JEE Com Jboss Seam João Paulo Viragine Solutions Architect [email protected] Motivação

Desenvolvimento Web 2.0 E JEE Com Jboss Seam João Paulo Viragine Solutions Architect Joao.Viragine@Redhat.Com Motivação

Mais velozes e mais furiosos: Desenvolvimento Web 2.0 e JEE com JBoss Seam João Paulo Viragine Solutions Architect [email protected] Motivação • O JSF merece uma segunda chance? • O EJB foi realmente aperfeiçoado? • Vale a pena continuar com Java ou é melhor partir para Ruby on Rails? Motivação (continuação) • Com o JBoss Seam, podemos responder SIM a todas essas questões. Qual framework devo utilizar? • Em um mundo abarrotado de frameworks, como escolher um? • Temos tantos frameworks disponíveis para a plataforma Java: alguns já consolidados, outros prometendo. A decisão torna-se agonizante! • A decisão pelo melhor framework: Qual framework devo utilizar? (continuação) • Logo que tomamos a decisão, surge um novo framework prometendo “acabar” com os antecessores. • Vemo-nos no “Paradoxo da Escolha”: Ficamos pensando que o melhor framework é aquele que ainda não utilizamosu Como conseqüência, gastamos mais tempo procurando pelo framework perfeito, do que realmente desenvolvendo aplicações • Estamos sempre procurando por um framework que seja: Novo e ao mesmo tempo familiar Leve, mas poderoso Qual framework devo utilizar? (continuação) • Precisamos de um framework que integre a vasta gama de tecnologias/frameworks da plataforma Java, em um modelo unificado de desenvolvimento: O JBoss Seam é esse framework JSF e EJB 3.0 • Não serão abordadas as deficiência do JSF e do EJB 3.0 Existe material específico sobre esse tema • Aproveitarei o tempo pra falar do JBoss Seam O que é o JBoss Seam? • Definição da palavra: Seam = emenda • Seam não é um acrônimo (SEAM): Stop Enterprise Application Masochism Software for Enterprise Application Masterpieces • Informações gerais: Criado por Gavin King (criador do Hibernate) Versão 1.0 Beta 1 em 18/09/2005 Versão 1.0.0.GA lançada em 12/06/2006 Versão atual de produção: 2.0.2.GA em 15/05/2008 Comunidade extremamente ativa: www.seamframework.org • Mais de 1.000 usuários registrados no primeiro mês • Atualmente, quase 3.000 usuários registrados O que é o JBoss Seam? (continuação) • Definições: JBoss Seam - Next generation enterprise Java development (do site do JBoss Seam) Um framework leve para Java EE 5.0 O JBoss Seam é um framework para a plataforma Java EE que facilita o desenvolvimento de aplicações web e finalmente cumpre a promessa de uma arquitetura unificada de componentes O JBoss Seam resolve os problemas da plataforma Java EE unindo conceitos inovadores a padrões existentes (JSF/JPA/EJB 3.0) O que é o JBoss Seam? (continuação) • O JBoss Seam NÃO é apenas mais um “simples framework de integração” competindo em um mercado abarrotado de opções • O JBoss Seam NÃO é uma reposta ao Spring framework: Resposta/alternativa ao RubyR on Rails • O JBoss Seam possui todos os “músculos/força” do Java EE, mas com uma aparência elegante • “Serviços Enterprise” para as massas Características e Benefícios • Integração entre JSF e EJB 3.0 Integração não definida na especificação da plataforma Java EE 5.0: • “Mundos separados” O JBoss Seam faz todo o “trabalho sujo” de integração entre JSF e EJB 3.0, deixando o desenvolvedor concentrado no domínio de negócios O JBoss Seam foi feito para o JSF: • Além do JSF, o JBoss Seam permite outras tecnologias para a camada de apresentação: Wicket, Tapestry, GWT e Flex (GraniteDS e BlazeDS) Características e Benefícios (continuação) • Além de não depender do JSF para a camada de apresentação, o JBoss Seam funciona com ou sem EJB 3.0 • Tipos de componentes Seam: JavaBeans EJB 3.0: • Stateless Session Beans • Stateful Session Beans • Entity Beans • Message-Driven Beans • Virtualmente, qualquer classe Java pode se tornar um componente Seam @Name: Características e Benefícios (continuação) • Modelo unificado de componentes: Não há distinção entre componentes da camada de apresentação e componentes da camada de negócios: • Ex: EntityBean trafega diretamente da camada de apresentação para a camada de negócios/persistência e vice-versa: Características e Benefícios (continuação) • Modelo unificado de componentes (continuação): O modelo de componentes do JBoss Seam permite a utilização direta de POJOs como “backing beans” para as páginas JSF: • Nada de cadastrar classes no faces-config.xml: Elimina camadas/artefatos “desnecessários”: VO/DTO, DAO, Service Locator, OpenSessionInView, etc VOCÊ monta a arquitetura da sua aplicação, define as camadas e como elas vão interagir Características e Benefícios (continuação) • Integração com AJAX Suporte “out of the box” para frameworks open source baseados em JSF: • Adiciona suporte AJAX sem a necessidade de codificação de JavaScript pelo desenvolvedor • ICEfaces • JBoss RichFaces: Possui uma camada de JavaScript remoto: • Acesso aos componentes Seam direto do JavaScript: Integração com: Dojo GWT Características e Benefícios (continuação) • Gerenciamento de estado e demarcação de contexto de maneira declarativa Ciclo de vida dos componentes é gerenciado pelo JBoss Seam Sem chamadas explícitas ao HttpSession • Uso exagerado do HttpSession = Memory leak • @Scope(value=ScopeType.SESSION): • Estende os contextos definidos pela especificação de Servlets: request (event), page, session e application com dois novos contextos: Conversation Business process Características e Benefícios (continuação) • Conversation Conceito chave no JBoss Seam A conversação representa uma “unidade de trabalho” do ponto de vista do usuário: • Geralmente associada a um Caso de Uso Um usuário pode ter várias conversações ao mesmo tempo: • Normalmente em múltiplas janelas do browser Facilita a construção de “wizards” Facilita o uso de AJAX Facilita ainda mais o uso do JPA: • Evita a famigerada LIE (LazyInitializationException) • Business process Contexto Stateful (Banco de Dados) O usuário pode continuar a interação com o sistema mais tarde Características e Benefícios (continuação) • Integração com Business Process Management (BPM) Traz o BPM para o mundo das aplicações web Business Process Management (BPM) transparente através do Java Business Process Management (jBPM) • Interação de longa duração (vários dias) Pode envolver interação de vários usuários (associação de tarefas) Criação e controle do processo baseados em anotações: Características e Benefícios (continuação) • O JBoss Seam suporta o conceito de Inversão de Controle (IoC) ou Injeção de Dependências (DI), mas vai além • A injeção de dependências funciona bem no modelo de arquitetura stateless, mas, em uma arquitetura stateful, precisamos que a injeção de dependências seja bidirecional: • Bijeção (Injeção + Ejeção): Estende o modelo de IoC: • Dinâmica • Contextual • Bidirecional A bijeção ocorre: • Antes e depois das chamadas aos métodos Características e Benefícios (continuação) • Injection: Componente é recuperado de um contexto (ou criado, dependendo da configuração) e injetado em outro componente: Outjection: Um componente “ejeta/coloca” outro componente em um contexto: Características e Benefícios (continuação) • Navegação: A aplicação não conhece nada sobre a navegação, mas a navegação conhece o estado da aplicação: • Métodos “retornam void” e não um “outcome” ou a própria página de transição: • A navegação conhece o estado da aplicação e toma decisões: Características e Benefícios (continuação) • Navegação (continuação) Stateful: Fluxo de navegação entre páginas (pageflow) definido via jBPM Process Definition Language (jPDL) Utilizado quando temos um fluxo de navegação “restrito”: Características e Benefícios (continuação) • Navegação (continuação) Stateful (continuação) Editor gráfico para o diagrama do fluxo de páginas através do JBoss Developer Studio/JBoss Tools: Características e Benefícios (continuação) • Navegação (continuação) Stateless Definida através da navegação do JSF (faces- config.xml) ou JBoss Seam (pages.xml) O fluxo de navegação via pages.xml é muito mais poderoso que o fluxo de navegação do JSF: Acesso ao estado da aplicação, mecanismo de eventos e etc Utilizado quando temos um fluxo de navegação “livre”: Características e Benefícios (continuação) • Segurança: Abstrai a utilização do JAAS Integração com o JBoss Rules Pode ser aplicada a: • Páginas (pages.xml): • Fragmentos de páginas: • Métodos: • Entidades Características e Benefícios (continuação) • Gerenciamento de “workspace” e janelas do browser: O usuário pode utilizar várias abas Ou, o usuário pode utilizar várias conversações em uma única aba Exemplo: HotelBooking • Uso intensivo de anotações: Configuração por exceção (“no XML hell”) As anotações do JEE/EJB 3.0 são utilizadas e ampliadas com as anotações do JBoss Seam Eliminação das declarações dos “JSF Managed Beans”, “Converters” e “Validators” no faces-config.xml Características e Benefícios (continuação) • Validação Onde colocar as regras de validação? • Na camada de apresentação? Sim, precisamos informar os erros de validação para o usuário Mas, também temos de garantir as regras/restrições na camada de persistência: Podemos esquecer de colocar a validação em uma página Clientes que utilizem as classes de domínio podem fazer um “bypass” da validação (Ex. Aplicação Desktop, WebServices) “Bad design”: Regras de validação fazem parte do objeto de domínio (Persistent Domain Objects Pattern vs Anemic Domain Model) • Melhor opção: colocar a validação nas classes de domínio e reaproveitá-las na camada de apresentação com a utilização de AJAX Características e Benefícios (continuação) • Validação (continuação) Hibernate Validator: • Vários validadores pré-definidos: Max, Min, Length,

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    52 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us