Introdução às Aplicações Java EEEste documento fornece uma breve introdução a algumas das funcionalidades apresentadas como parte da especificação Java Enterprise Edition 6 (Java EE 6). Para ilustrar as novas funcionalidades, este tutorial demonstrará como criar uma aplicação web Java EE simples que contenha uma fachada de bean de sessão sem estado EJB 3.1 para uma classe de entidade. Você utilizará assistentes no IDE para gerar a classe de entidade no bean de sessão. O código gerado pelo assistente utiliza consultas as quais estão definidas na API de critérios, que faz parte do JPA 2.x e está contida na especificação Java EE 6. Em seguida, você criará um bean gerenciado e nomeado que acessa a fachada de sessão, bem como uma camada de apresentação que utiliza o framework de view do Facelets como especificado no JSF 2.x. Este tutorial é baseado no post do blog Simplest Possible JSF 2 / EJB 3.1 / JPA Component - With WAR Deployment de Adam Bien. Você pode encontrar exemplos adicionais de Java EE no projeto do Kenai de Adam Bien Java EE Patterns and Best Practices e no seu livro "Real World Java EE Patterns - Rethinking Best Practices", disponível em http://press.adam-bien.com. Exercícios do Tutorial ![]()
Para seguir este tutorial, são necessários os recursos e o software a seguir.
Pré-requisitos Este tutorial pressupõe que você tenha algum conhecimento básico das tecnologias a seguir, ou alguma experiência de programação com elas:
Você pode fazer download de um arquivo compactado zip do projeto finalizado. Criando o Projeto de Aplicação WebNeste exercício será criada uma aplicação web simples. Quando você cria uma aplicação web, o GlassFish Server é especificado como o contêiner Java EE de destino. O GlassFish Server é compatível com o Java EE e inclui as bibliotecas JSF 2.x que são necessárias nesta aplicação. No assistente Novo Projeto, você pode selecionar o Java EE 6 Web ou Java EE 7 como a versão Java EE. Java EE 6 Web e Java EE 7 Web são perfis de Java EE leves que contêm um subconjunto da plataforma Java EE completa. Os perfis Java EE Web foram criados para aplicações web que não requerem as tecnologias Java EE avançadas, como o suporte a interfaces remotas, a especificação completa do EJB 3.1 e a API Java Message Service (JMS). Os perfis Web suportam o processamento da transação e o gerenciamento de persistência que normalmente são utilizados em aplicações web corporativas. Você pode utilizar os perfis Java EE Web para aplicações Web que utilizam beans de sessão com uma interface local ou sem uma interface. O perfil Java EE completo é necessário se a aplicação utilizar uma interface remota.
Quando você clica em Finalizar, o IDE cria o projeto e o abre na janela Projetos. O IDE cria automaticamente a página index.xhtml e abre a página no editor. Criando a Classe de Entidade e a Fachada de SessãoNesta sessão, você criará uma classe de entidade e uma fachada de sessão para a classe de entidade. Uma classe de entidade é um objeto Java simples e antigo (POJO), uma classe Java simples que é identificada como uma entidade pela anotação @Entity. A partir da especificação Java EE 5, você pode utilizar classes de entidade como objetos persistentes para representar tabelas em um banco de dados. A Java Persistence API permite utilizar a persistência em aplicações web sem a necessidade de criar um módulo EJB. A fachada de sessão para a classe de entidade nesta aplicação é um bean de sessão sem estado. A arquitetura Enterprise JavaBean (EJB) 3.1 introduzida como parte da especificação Java EE 6 permite criar beans de sessão sem as interfaces de negócios que eram necessárias no EJB 3.0. A especificação Java EE 6 também permite encapsular componentes do EJB diretamente em um arquivo compactado WAR. Isso simplifica o desenvolvimento de aplicações web menores eliminando a necessidade de criar módulos EJB separados, que são encapsulados como um arquivo compactado JAR em um arquivo compactado EAR. No entanto, para aplicações enterprise maiores que são distribuídas entre diferentes máquinas, você ainda precisará criar arquivos compactados EAR para separar sua lógica de negócios da camada de apresentação. Para obter mais informações sobre o uso do EJB 3.1 no IDE, consulte o tutorial Criando uma Aplicação Corporativa com o EJB 3.1. Para saber mais sobre classes de entidade, consulte o capítulo Introdução à Java Persistence API no Tutorial do Java EE 7. Para obter mais informações sobre beans de sessão, consulte o capítulo O que é um Bean de Sessão? no Tutorial do Java EE 7. Criando a Classe de EntidadeNeste exercício, você utilizará o assistente Nova Classe de Entidade para criar uma classe de entidade persistente simples. Você também utilizará o assistente para criar uma unidade de persistência que define a origem dos dados e o gerenciador de entidade utilizado na aplicação. Você adicionará um campo na classe para representar os dados em sua tabela e gerar um getter e um setter para o novo campo. Uma classe de entidade deve ter uma chave primária. Quando você cria a classe de entidade utilizando o assistente, o IDE gera, por default, o campo id e anota o campo com a anotação @Id para declarar o campo como a chave primária. O IDE também adiciona a anotação @GeneratedValue e especifica a estratégia de geração de chave para o campo de id primário. Utilizar a Java Persistence em seu projeto simplifica tremendamente o desenvolvimento da aplicação, removendo a necessidade de configurar os descritores de implantação para fornecer informações de mapeamento relacional de objeto para campos ou propriedades persistentes. Em vez disso, você pode utilizar anotações para definir essas propriedades diretamente em uma classe Java simples. A persistência de entidade é gerenciada pela API EntityManager. A API EntityManager trata o contexto de persistência e cada contexto de persistência é um grupo de instâncias de entidade. Ao desenvolver a aplicação, você pode utilizar anotações em sua classe para especificar a instância do contexto de persistência das suas instâncias de entidade. O ciclo de vida das instâncias de entidade será então tratado pelo contêiner. Para criar a classe de entidade, execute as seguintes etapas.
A classe de entidade representa uma tabela no banco de dados. Quando você executa esta aplicação, uma tabela do banco de dados para Mensagem será criada automaticamente. A tabela conterá as colunas id e mensagem. Se examinar a unidade de persistência no editor XML, verá que a aplicação utilizará a API de Transação Java (JTA) (transaction-type="JTA"). Isso especifica que a responsabilidade por gerenciar o ciclo de vida de entidades no contexto da persistência é designada ao contêiner. Isso resulta em menos código, porque o ciclo de vida da entidade é gerenciado pelo contêiner e não pela aplicação. Para obter mais informações sobre o uso de JTA para gerenciar transações, consulte a documentação da API de Transação Java. Criando a Fachada da SessãoNeste exercício você utilizará um assistente para criar uma fachada de sessão sem estado para a entidade Mensagem. A especificação EJB 3.1. declara que as interfaces de negócios para beans de sessão agora são opcionais. Nesta aplicação, onde o cliente que acessa o bean é um cliente local, você tem a opção de utilizar uma interface local ou uma view sem interface para expor o bean. Para criar o bean da sessão, execute as seguintes etapas.
Quando você clica em Finalizar, o IDE gera a classe de fachada da sessão MessageFacade.java e AbstractFacade.java e abre os arquivos no editor. Como podemos ver no código gerado, a anotação @Stateless é usada para declarar a classe MessageFacade.java como um componente de bean de sessão sem estado. MessageFacade.java estende AbstractFacade.java, que contém a lógica de negócio e gerencia a transação. @Stateless public class MessageFacade extends AbstractFacade<Message> { @PersistenceContext(unitName = "SimpleEE6AppPU") private EntityManager em; Quando você cria a fachada para a entidade utilizando o assistente, como default, o IDE adiciona a anotação PersistenceContext (@PersistenceContext(unitName = "SimpleEE6AppPU")) para injetar recurso de gerenciador de entidades no componente do bean de sessão e para especificar o nome da unidade de persistência. Neste exemplo, o nome da unidade de persistência é explicitamente declarado, mas o nome é opcional se a aplicação tiver somente uma unidade de persistência. O IDE também gera métodos em AbstractFacade.java para criar, editar, remover e localizar entidades. A API EntityManager define os métodos que são utilizados para interagir com o contexto da persistência. Você pode ver que o IDE gera alguns métodos de consulta default usados com frequência que podem ser utilizados para localizar objetos de entidade. Os métodos findAll, findRange e count utilizam os métodos definidos na API Critérios para criar consultas. A API Critérios faz parte da especificação JPA 2.x, que está incluída na especificação Java EE 6. Criando as Páginas Bean Gerenciado JSF e JSFNesta seção, você criará a camada de apresentação para a aplicação utilizando o JavaServer Faces (JSF) 2.x e um backing bean gerenciado que é utilizado pelas páginas JSF. A especificação JSF 2.x adiciona o suporte para Facelets, como a tecnologia de exibição preferencial para aplicações com base em JSF. Começando com o JSF 2.x, você também poderá utilizar a anotação @ManagedBean em seu código-fonte para declarar uma classe como bean gerenciado. Não é mais necessário adicionar entradas no arquivo faces-config.xml para declarar beans gerenciados JSF. Você pode utilizar nomes de beans em páginas JSF para acessar métodos no bean gerenciado. Para obter mais informações sobre o suporte do IDE para a especificação JavaServer Faces 2.x, consulte Suporte JSF 2.x no NetBeans IDE. Para obter mais informações sobre a especificação JavaServer Faces 2.x, consulte o capítulo Tecnologia do JavaServer Faces no Tutorial Java EE 7. Criando o Bean GerenciadoNeste exercício, será criado um bean gerenciado JSF simples, que é utilizado para acessar a fachada de sessão. A especificação do JSF 2.x permite utilizar anotações em uma classe do bean para identificá-la como um bean gerenciado pelo JSF e especificar o escopo e um nome para o bean. Para criar o bean gerenciado, execute as seguintes etapas:
![]() Quando você clicar em Finalizar, o IDE gerará a classe bean e abrirá a classe no editor. Na janela Projetos, você verá os seguintes arquivos. ![]() No editor, você pode ver que o IDE adicionou as anotações @ManagedBean e @RequestScoped e o nome do bean. @ManagedBean(name="MessageView") @RequestScoped public class MessageView { /** Creates a new instance of MessageView */ public MessageView() { } } Agora, você adicionará uma anotação @EJB será adicionada para utilizar injeção de dependência para obter uma referência ao bean de sessão MessageFacade. Você também chamará os métodos findAll e create que estão expostos na fachada. A funcionalidade autocompletar código do IDE pode ajudá-lo enquanto você digita os métodos.
Você pode utilizar a funcionalidade para autocompletar código no editor para ajudar a digitar seu código. Observe que o método postMessage retorna a string "theend". A especificação JSF 2.x permite a utilização de regras de navegação implícitas em aplicações que utilizam a tecnologia Facelets. Nesta aplicação, não há regras de navegação configuradas em faces-config.xml. Em vez disso, o handler de navegação tentará localizar a página adequada na aplicação. Neste caso, o handler de navegação tentará localizar uma página nomeada theend.xhtml quando o método postMessage for chamado. Modificando a Página de ÍndiceNeste exercício, você fará algumas alterações simples na página index.xhtml para adicionar alguns componentes de interface do usuário. Você adicionará um form com um campo de entrada de texto e um botão.
Os componentes inputText e commandButton chamarão os métodos no bean gerenciado JSF nomeado MessageView. O método postMessage retornará "theend" e o handler de navegação procurará por uma página nomeada theend.xhtml. Criando a Página de ResultadosNeste exercício, você criará a página JSF theend.xhtml. A página será exibida quando o usuário clicar no botão Postar Mensagem no index.xhtml e chamar o método postMessage no bean gerenciado JSF.
Quando você começa a digitar, o IDE adiciona automaticamente a definição de biblioteca de tags xmlns:h="http://xmlns.jcp.org/jsf/html" ao arquivo para os elementos JSF. Executando a AplicaçãoVocê agora finalizou a codificação da aplicação. Agora você pode testar a aplicação no browser.
Quando você clica em Postar Mensagem, a mensagem será salva no banco de dados e o número de mensagens será recuperado e exibido. ![]() Fazendo Download do Projeto da SoluçãoVocê pode fazer o download dos projetos de amostra usados neste tutorial das seguintes formas:
Consulte TambémPara obter mais informações sobre o uso do NetBeans IDE para desenvolver aplicações Java EE, consulte os seguintes recursos:
Você pode encontrar mais informações sobre o uso das tecnologias Java EE 6 para desenvolver aplicações no Tutorial do Java EE 7. Para enviar comentários e sugestões, obter suporte e se manter informado sobre os mais recentes desenvolvimentos das funcionalidades de desenvolvimento do Java EE do NetBeans IDE, inscreva-se na lista de correspondência de nbj2ee. |
Documentation |