De que se trata o artigo:

O artigo demonstra de forma prática como desenvolver aplicações Java EE com suporte a Web 2.0 com as modernas tecnologias como EJB 3.0, AJAX, JPA, JSF e BPM com o uso do framework JBoss Seam. Exploramos, principalmente, o conceito de BPM – Gestão de Processos de Negócios – para implementar um processo de negócio de uma Loja Virtual.


Para que serve:

Apresentar aos desenvolvedores Java o framework JBoss Seam para o desenvolvimento de aplicações Java EE e Web 2.0 com foco na produtividade do desenvolvedor.

Em que situação o tema é útil:

Um dos fatores que podem determinar o sucesso de um projeto é a escolha de um framework adequado. O JBoss Seam foca na produtividade do desenvolvedor e na escalabilidade da aplicação, o que simplifica o desenvolvimento de aplicações web. Desta maneira, o desenvolvedor pode gastar menos tempo na configuração da aplicação e focar mais no desenvolvimento da camada de negócios.

Boas práticas com JBoss Seam:

No artigo abordamos o aprendizado da arquitetura do Seam; instalação do ambiente de desenvolvimento; geração de códigos com o seam-gen; segurança da aplicação web com autorização e autenticação; BPM – Gestão de Processos de Negócios; dicas úteis como upload e download de arquivos; além de apresentar os erros mais comuns que podem acontecer no desenvolvimento de um projeto com o framework JBoss Seam.

O JBoss Seam é um poderoso framework para o desenvolvimento de aplicações Java EE com suporte a Web 2.0 que utiliza modernas tecnologias como EJB 3.0, AJAX, JPA, JSF e BPM, tem o foco na produtividade do desenvolvedor e na escalabilidade da aplicação. O Seam tem o propósito de simplificar a complexidade da arquitetura Java EE, possibilita aos desenvolvedores criar complexas aplicações web com simples anotações nos POJOs, possui um rico conjunto de componentes de UI e elimina a necessidade de muitos arquivos XML.

Neste artigo estudaremos como utilizar boas práticas para o desenvolvimento de aplicações web com o JBoss Seam.

Preparando o ambiente de desenvolvimento

Primeiramente, caso você não tenha a IDE Eclipse instalada em seu computador, acesse o site www.eclipse.org/downloads/ e faça o download da última versão do Eclipse IDE for Java Developers (ou uma versão mais completa que inclua suporte a Java). Logo em seguida, é preciso instalar o JBoss Tools, acesse o site www.jboss.org/tools/download e baixe a versão 3.0. A instalação consiste na extração do conteúdo do pacote obtido, nada mais. (Para mais detalhes sobre o JBoss Tools, veja a Edição 70).

Feito isso, acesse o site http://seamframework.org/download e baixe a última versão do JBoss Seam, que atualmente é a 2.1.1GA. De posse do arquivo, descompacte-o em seu sistema de arquivos. Abra o Eclipse, acesse o menu Windows>Preferences e configure o Runtime do Seam no item JBoss Tools como mostra a Figura 1. Após a instalação do JBoss Tools, o Eclipse deve ter a aparência semelhante à Figura 2.

image

Figura 1. Configurando o Runtime do Seam

image

Figura 2. Aparência do Eclipse após instalação do JBoss Tools

A equipe da JBoss desenvolveu o Seam, e certamente ele se integra melhor com o servidor de aplicações da JBoss. Entretanto, é possível utilizar outros servidores como, por exemplo, o Apache Tomcat 6.

O JBoss AS 4 é um servidor de aplicações em conformidade com as especificações J2EE 1.4. Isto significa que você deve habilitar o uso de serviços Java EE 5 que o Seam necessita, por exemplo, o contêiner EJB 3. Pode-se fazer isto de duas maneiras, a primeira é habilitar o contêiner EJB 3 diretamente no servidor JBoss, e a segunda é adicionar o contêiner EJB 3 em cada um dos projetos. Na aplicação deste artigo, optamos pela segunda opção.

Você pode estar se perguntando, por que não utilizar o JBoss AS 5 que já tem por definição o contêiner EJB 3? Sim, poderíamos e sem nenhum problema. O JBoss 5 é um servidor em conformidade com Java EE 5.0, e o EJB 3 aparece no cenário com as versões atuais do Java EE. Entretanto, grande parte dos exemplos de aplicações que acompanham o Seam (versão 2.1.1GA) foram testadas no JBoss AS 4, e alguns destes exemplos não funcionam completamente na versão 5. Neste artigo, por questões de conveniência, optamos por utilizar o servidor JBoss AS 4. Caso você ainda não tenha o JBoss AS, acesse o site www.jboss.org/jbossas/downloads para fazer o download da versão JBoss 4.2.3 GA.

Arquitetura do JBoss Seam

As simplificações oferecidas pelo Seam derivam da sua arquitetura de componentes que são considerados como uma extensão do modelo de componentes utilizados pelos managed beans do JSF. O principal benefício do modelo de componentes do Seam é o uso direto de componentes EJB como beans acoplados a páginas JSF. O modelo tradicional do JSF permite que os java beans sejam utilizados como managed beans, conforme o arquivo JSF faces-config.xml. No Seam, não existe a necessidade de conectar o bean com o nome do managed bean JSF no faces-config.xml. Muito embora seja permitido o uso deste arquivo para configuração, as conexões entre os beans e os managed beans JSF são feitas por anotações. Conforme a documentação oficial do JBoss Seam, em resumo, ele é inspirado nos seguintes princípios:

  1. Seam define um contexto uniforme para toda a lógica de negócios da sua aplicação. Os componentes Seam são POJOs (Plain Old Java Objects), ou seja, possuem um desenho simplificado em contraposição ao EJBs. Entretanto, Seam possui forte integração com EJB 3.0 e suporta os tipos de componentes: sessions beans (stateful e stateless), entity beans, message-driven beans, JavaBeans e Spring Beans;
  2. Não há distinção entre os componentes da camada de apresentação e da lógica de negócios. Por exemplo, o Seam se diferencia de outros frameworks como o Struts, onde temos que criar um componente responsável por cada camada do MVC. No entanto, você não precisa se sentir forçado a usar este tipo de arquitetura em camadas que o Seam oferece. Você pode perfeitamente usar o Seam em conjunto com outros frameworks, como o Spring;
  3. JSF e EJB 3 são as duas grandes novidades do Java EE 5. JSF é um excelente modelo de componentes para a camada de apresentação, enquanto EJB 3 é a grande novidade para a camada de negócios e, principalmente, para a persistência de dados. Infelizmente, nenhum dos modelos de componentes resolvem todos os problemas por si só. JSF e EJB 3 trabalham melhor em conjunto e é justamente neste ponto que o Seam entra em ação. O Seam oferece um meio de integrar e unificar essas duas tecnologias. Desta maneira, o desenvolvedor pode se concentrar melhor em resolver os problemas do negócio;
  4. O Seam oferece a melhor solução open source JSF baseada em AJAX: JBoss Richfaces e ICEFaces. Com isto, você não precisa escrever absolutamente nada de Javascript para usar recursos AJAX em sua aplicação;
  5. BPM – Bussiness Process Management – Gestão de Processos de Negócios: O Seam fornece uma linguagem de definição de processos através do framework JBoss jBPM. Este framework possui uma linguagem intuitiva para expressar graficamente as definições dos processos de negócios chamada de jPDL – Process Definition Language;
  6. O Seam fornece um novo modelo de contexto que estende o modelo da especificação Servlet (request, session, application) com dois novos contextos: Contexto de conversação e processos de negócios. Aqueles velhos problemas de LazyInitilizationException são resolvidos internamente por estes novos contextos. A propósito, os problemas com o botão de back e refresh button com duplicação de form submission, e mensagens propagadas através do post-then-redirect são resolvidos também pelo gerenciamento do contexto de conversação do Seam por trás dos panos, sem você sequer se preocupar com eles;
  7. A Inversão de Controle – IoC – existe tanto no JSF e EJB 3, quanto em outros frameworks populares como o Spring. Seam introduz o conceito de bijeção (bijection): independente do momento do componente, ele é injetado de forma dinâmica, contextual e bidirecional (injection e outjection). Este conceito pode simplificar muito o desenvolvimento da aplicação, principalmente em um ambiente Java EE;
  8. O Seam faz o gerenciamento de workspaces em um navegador web multi-janela como, por exemplo, o Firefox. No Seam, cada uma das múltiplas janelas podem ser tratadas diferentemente e isoladamente em um contexto de conversação sem que eles se afetem mutuamente;
  9. As anotações do Java 5 vieram para ficar, no Seam não poderia ser diferente, usa-se anotações Java preferivelmente a arquivos de configuração XML. O Seam estende o EJB 3 com um novo conjunto de anotações para eliminar as configurações em arquivos XML. As regras de navegação JSF e somente muito pouco das informações de configuração são armazenadas nos arquivos XML;
  10. ...
    Quer ler esse conteúdo completo? Tenha acesso completo