<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--
Copyright (c) 2009, 2010, 2011 Oracle and/or its affiliates. All rights reserved.
-->

<html>
    <head>
        <title>Criando uma Aplicação Corporativa com o EJB 3.1</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" >
        <meta name="description" content="A tutorial on how to use NetBeans IDE to develop an enterprise application using EJB 3.1 technology.">
        <link rel="stylesheet" href="../../../netbeans.css">
        <meta name="author" content="ken ganfield">
    </head>
    <body>
        <h1>Criando uma Aplicação Corporativa com o EJB 3.1</h1>
        
        <p>Este tutorial apresenta os conceitos básicos de desenvolvimento de uma aplicação corporativa Java EE 6 e demonstra algumas das funcionalidades da tecnologia EJB 3.1 que foram introduzidos como parte da especificação Java EE 6. Neste tutorial, você criará uma aplicação corporativa que permite a um usuário publicar uma mensagem e recuperá-la de um banco de dados.</p>

        <p>A aplicação contém um módulo EJB e um módulo web. O módulo EJB contém uma classe de entidade, uma fachada de sessão para a classe de entidade e um bean baseado em mensagens. O módulo web contém servlets para exibir e publicar mensagens, além de um bean de sessão simples que soma o número de usuários na sessão.</p>

        <p>Antes de começar este tutorial, pode ser necessário se familiarizar com o seguinte documento.</p>
        <ul>
            <li><a href="javaee-gettingstarted.html">Conceitos Básicos sobre Aplicações do Java EE</a></li>
        </ul>

                       
           <p><b>Exercícios do Tutorial</b></p>
           <img alt="O conteúdo desta página se aplica ao NetBeans IDE 7.2, 7.3, 7.4 e 8.0" class="stamp" src="../../../images_www/articles/73/netbeans-stamp-80-74-73.png" title="O conteúdo desta página se aplica ao NetBeans IDE 7.2, 7.3, 7.4 e 8.0">
            <ul>
                <li><a href="#intro">Sobre a Aplicação Corporativa NewsApp</a></li>
                <li><a href="#Exercise_1">Criando o Projeto de Aplicação Corporativa</a></li>
                <li><a href="#Exercise_2">Codificando o Módulo EJB</a>
                    <ul>
                        <li><a href="#Exercise_2a">Criando a Classe de Entidade</a></li>
                        <li><a href="#Exercise_2b">Criando o Bean Baseado em Mensagens</a></li>
                        <li><a href="#Exercise_2c">Criando a Fachada da Sessão</a></li>
                    </ul>
                </li>
                <li><a href="#Exercise_3">Codificando o Módulo Web</a>
                    <ul>
                        <li><a href="#Exercise_3a">Criando o Bean de Sessão Simples</a></li>
                        <li><a href="#Exercise_3b">Criando o Servlet ListNews</a></li>
                        <li><a href="#Exercise_3c">Criando o Servlet PostMessage</a></li>
                    </ul>
                </li>
                <li><a href="#Exercise_4">Executando o Projeto</a></li>
                <li><a href="#Exercise_5">Fazendo Download do Projeto da Solução</a></li>
                <li><a href="#Exercise_6">Solução de Problemas</a></li>
            </ul>
            <p><b>Para seguir este tutorial, são necessários os recursos e o software a seguir.</b></p>
            <table>
            <tbody>
                <tr>
                    <th class="tblheader" scope="col">Software ou Recurso</th>
                    <th class="tblheader" scope="col">Versão Necessária</th>
                </tr> 
                <tr>
                    <td class="tbltd1"><a href="https://netbeans.org/downloads/index.html">NetBeans IDE</a></td>
                    <td class="tbltd1">Versão Java EE 7.2, 7.3, 7.4, 8.0</td>
                </tr>
                <tr>
                    <td class="tbltd1"><a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">JDK (Java Development Kit)</a></td>
                    <td class="tbltd1">versão 7 ou 8</td>
                </tr>
                <tr>
                    <td class="tbltd1">GlassFish Server Open Source Edition</td>
                    <td class="tbltd1">3.x, 4.x</td>
                </tr>
            </tbody>
        </table>
        
            <p><b>Pré-requisitos</b></p>
            <p>Este tutorial pressupõe que você tenha algum conhecimento básico das tecnologias a seguir, ou alguma experiência de programação com elas:</p>
            <ul>
                <li>Programação em Java</li>
                <li>NetBeans IDE</li>
            </ul>
            <p class="tips">Você pode fazer download <a href="https://netbeans.org/projects/samples/downloads/download/Samples/JavaEE/NewsAppEE6.zip">de um arquivo compactado zip do projeto finalizado</a>.</p>
    
        <!-- ===================================================================================== -->
        <a name="intro"></a>
            <!--Exercise 1: -->
        <h2>Sobre a Aplicação Corporativa NewsApp</h2>
        <p>Neste tutorial, você criará um exemplo simples de uma aplicação corporativa Java EE 6 com várias camadas denominado NewsApp. A aplicação NewsApp usa algumas das funcionalidades apresentadas na especificação Java EE 6.</p>
        
        <p>A estrutura da aplicação NewsApp corresponde, geralmente, às seguintes camadas.</p>
        
        <ul>
            <li><strong>Camada Web.</strong> A Camada Web contém a lógica de apresentação da aplicação e é executada no servidor Java EE. Na aplicação NewsApp, a camada Web é representada pelo módulo web e contém servlets que acessam a lógica de negócios no módulo EJB.</li>
            <li><strong>Camada de Negócios.</strong> Aplicações de Camadas de Negócios também são executadas em servidores Java EE e contêm a lógica de negócios da aplicação. Na aplicação NewsApp, a Camada de Negócios é representada pelo módulo EJB. O módulo EJB contém o código que trata as solicitações dos clientes da Camada Web, além de gerenciar transações e como os objetos serão persistidos no banco de dados.</li>
            <li><strong>Camada EIS.</strong> A Camada EIS é a camada de armazenamento persistente da aplicação. Na Aplicação NewsApp, esta camada é representada pelo banco de dados no qual as mensagens estão armazenadas.</li>
        </ul>

        <p>Quando você constrói uma aplicação corporativa no IDE, os módulos EJB e aplicação Web são encapsulados em um arquivo compactado EAR que é, em seguida, implantado no servidor. A aplicação será, em seguida, normalmente acessada da <strong>Camada do Cliente.</strong> A Camada do Cliente é o ambiente em que o cliente é executado e é normalmente um browser web no sistema local do usuário.</p>

        <p class="notes"><strong>Observação.</strong> No exemplo deste tutorial, você usará uma única máquina para hospedar o servidor Java EE, o banco de dados e visualizar as páginas web. Em aplicações do enterprise grandes, as diferentes camadas estão, em geral, distribuídas em várias máquinas. As aplicações de Camada Web e Camada de Negócios são geralmente implantadas nos servidores Java EE que estão hospedados em diferentes máquinas.</p>


        <p class="tips">Para obter mais detalhes sobre a estrutura de aplicações do enterprise Java EE, consulte o capítulo sobre <a href="http://download.oracle.com/javaee/6/tutorial/doc/bnaay.html">Aplicações Distribuídas em Várias camadas</a> no <a href="http://download.oracle.com/javaee/6/tutorial/doc/">Tutorial do Java EE 6, Parte I</a>.</p>


        <a name="Exercise_1"></a>
            <!--Exercise 1: -->
        <h2>Criando o Projeto da Aplicação Corporativa</h2>
        <p>O objetivo deste exercício é criar o novo projeto da aplicação corporativa NewsApp. Você usará o assistente Novo Projeto para criar uma aplicação corporativa que contenha um módulo EJB e um módulo web.</p>
        

        <ol>
            <li>Selecione Arquivo > Novo Projeto (Ctrl-Shift-N; ⌘-Shift-N no Mac) no menu principal.</li>
            <li>Selecione Aplicação Corporativa na categoria Java EE e clique em Próximo. </li>
            <li>Nomeie o projeto de <b>NewsApp</b> e defina a localização do projeto.</li>
            <li>Desmarque a opção Usar Pasta Dedicada, se ela estiver selecionada.<br /> (Para este tutorial, não há motivo para copiar as bibliotecas de projeto em uma pasta dedicada, pois você não precisará compartilhar bibliotecas com outros usuários ou projetos).<br /> Clique em Próximo.</li>
            <li>Defina o servidor como GlassFish Server e defina a versão do Java EE para Java EE 6 ou Java EE 7.</li>
            <li>Selecione Criar Módulo EJB e Criar Módulo de Aplicação Web. Clique em Finalizar.</li>
        </ol>

        <img alt="Assistente Novo Projeto" class="margin-around b-all" src="../../../images_www/articles/72/javaee/ejbentapp/new-entapp-wizard.png" title="Assistente Novo Projeto" />

        <p>Quando você clica em Finalizar, o IDE cria três projetos: NewsApp, NewsApp-ejb e NewsApp-war. Se expandir o nó NewsApp na janela Projetos, você poderá ver que o projeto da aplicação corporativa não contém nenhum código-fonte. Todos os códigos-fonte estarão contidos nos dois módulos que o assistente criou e que estão listados no nó Módulos Java EE.</p>
        <p>O projeto de aplicação corporativa só contém detalhes de configuração e encapsulamento sobre a aplicação. Quando você cria e executa uma aplicação corporativa, o IDE cria um archive EAR e implanta o EAR no servidor. Em alguns casos, o projeto de aplicação corporativa conterá os arquivos do descritor de implantação com informações adicionais, mas esses arquivos não serão necessários durante a criação de uma aplicação corporativa Java EE que seja implantado no GlassFish Server.
        </p>
        <img alt="Janela Projetos mostrando a estrutura da aplicação" class="margin-around b-all" src="../../../images_www/articles/72/javaee/ejbentapp/ejb-projectswindow.png" title="Janela Projetos mostrando a estrutura da aplicação" /> <a name="Exercise_2"></a>
        <h2>Codificando o Módulo EJB</h2>
        <p>Neste exercício, você criará uma classe de entidade, um bean de sessão baseado em mensagens e uma fachada de sessão no módulo EJB. Você também criará uma unidade de persistência para fornecer ao contêiner informações sobre a fonte de dados e como as entidades são gerenciadas, bem como os recursos Java Message Service (JMS) que são usados pelo bean baseado em mensagens.</p>

        
        <div class="indent">
            
            <a name="Exercise_2a"></a>
            <h3>Criando a Classe de Entidade</h3>
            <p>Neste exercício, você criará a classe de entidade <tt>NewsEntity</tt>. Uma classe de entidade é uma classe Java simples que geralmente representa uma tabela em um banco de dados. Quando você cria a classe de entidade, o IDE adiciona a anotação <tt>@Entity</tt> para definir a classe como uma classe de entidade. Depois de criar a classe, você criará campos na classe para representar os dados que deseja incluir na tabela.</p>
            <p>Cada classe de entidade deve ter uma chave primária. Quando você cria a classe de entidade, o IDE adiciona a anotação <tt>@Id</tt> para declarar o campo a ser usado como chave primária. O IDE também adiciona a anotação <tt>@GeneratedValue</tt> e especifica a estratégia de geração de chave para o Id primário.</p>
            <p>Para criar a classe <tt>NewsEntity</tt>, execute as seguintes etapas.</p>
            <ol>
                <li>Clique com o botão direito do mouse no módulo EJB na janela Projetos e selecione Novo > Outro para abrir o assistente Novo arquivo.</li>
                <li>Na categoria Persistência, selecione Classe de Entidade e clique em Próximo.</li>
                <li>Digite <strong>NewsEntity</strong> para Nome da Classe.</li>
                <li>Digite <strong>ejb</strong> para o Pacote.</li>
                <li>Deixe Tipo de Chave Primária como <tt>Longo</tt> no assistente Nova Classe de Entidade.</li>
                <li>Selecione Criar Unidade de Persistência. Clique em Próximo.</li>
                <li>Preserve o Nome default da Unidade de Persistência.</li>
                <li>Para o Provedor de Persistência, selecione <tt>EclipseLink (JPA2.0)(default)</tt>.</li>
                <li>Para Fonte de Dados, selecione uma fonte de dados (por exemplo, selecione <tt>jdbc/sample</tt> se quiser usar JavaDB).</li>
                <li>Confirme que a unidade de persistência está utilizando a Java Transaction API e que Estratégia de Geração de Tabela está definida como Criar, de forma que as tabelas com base nas suas classes de entidade serão criadas quando a aplicação for implantada.<br /> <img alt="tela de Provedor e painel de Banco de Dados" class="margin-around b-all" src="../../../images_www/articles/72/javaee/ejbentapp/new-pu-wizard.png" title="Provedor e painel de Banco de Dados" />
                </li>
                <li>Clique em Finalizar.</li>
            </ol>
            <p>Quando você clica em Finalizar, o IDE cria <tt>persistence.xml</tt> e a classe de entidade <tt>NewsEntity.java</tt>. O IDE abre <tt>NewsEntity.java</tt> no Editor de Código-Fonte.</p>
            
            <p>No Editor de Código-Fonte, execute as etapas a seguir.</p>

            <ol>
                <li>Adicione as seguintes declarações de campo à classe: 
                    <pre class="examplecode">
private String title;
private String body;</pre>
                </li>
                <li>Clique com o botão direito do mouse no Editor de Código-Fonte e selecione Inserir Código (Alt-Insert; Ctrl-I no Mac) e selecione Getter e Setter para abrir a caixa de diálogo Gerar Getters e Setters.</li>
                <li>Selecione os campos <tt>body</tt> e <tt>title</tt> na caixa de diálogo. Clique em Gerar.<br /> <img alt="Caixa de diálogo Gerar Getters e Setters" class="margin-around b-all" src="../../../images_www/articles/72/javaee/ejbentapp/ejb-gettersetter.png" title="Caixa de diálogo Gerar Getters e Setters" />
                <p>Quando você clica em Gerar, o IDE adiciona os métodos getter e setter nos campos.</p>
                </li>
                <li>Salve as alterações em <tt>NewsEntity.java</tt>.</li>
            </ol>
            <p>Você pode fechar <tt>NewsEntity.java</tt>.</p>

            <p class="tips">Para saber mais sobre classes de entidade, consulte o capítulo <a href="http://java.sun.com/javaee/6/docs/tutorial/doc/bnbpz.html">Introdução à Java Persistence API</a> no <a href="http://download.oracle.com/javaee/6/tutorial/doc/">Tutorial do Java EE 6 , Parte I</a>.</p>



            <a name="Exercise_2b"></a>
            <h3>Criando o Bean Baseado em Mensagens</h3>
            <p>Neste exercício, você usará um assistente para criar o bean baseado em mensagens no módulo EJB. O assistente também o ajudará a criar os recursos JMS necessários. O bean baseado em mensagens recebe e processa mensagens enviadas para a fila por um servlet no módulo Web.</p>
            
            <p>Para criar o bean baseado em mensagens, execute as seguintes etapas:</p>
            <ol>
                <li>Clique com o botão direito do mouse no módulo EJB na janela Projetos e selecione Novo > Outro para abrir o assistente Novo arquivo.</li>
                <li>Na categoria Enterprise JavaBens, selecione o tipo de arquivo Bean Baseado em Mensagens. Clique em Próximo.</li>
                <li>Digite <strong>NewMessage</strong> para Nome EJB.</li>
                <li>Selecione <tt>ejb</tt> na lista drop-down Pacote.</li>
                <li>Clique no botão Adicionar ao lado do campo Destino do Projeto para abrir a caixa de diálogo Adicionar Destino da Mensagem.</li>
                <li>Na caixa de diálogo Adicionar Destino da Mensagem, digite <b>jms/NewMessage</b> e selecione Fila como o tipo de destino. Clique em OK.</li>
                <li>Confirme se o destino do projeto está correto. Clique em Finalizar.</li>
            </ol>
            <img alt="Assistente Novo Bean Baseado em Mensagens" class="margin-around b-all" src="../../../images_www/articles/72/javaee/ejbentapp/ejb-newmessage.png" title="Assistente Novo Bean Baseado em Mensagens" />
            <p>Quando você clica em Finalizar, a classe <tt>NewMessage.java</tt> do bean será aberta no Editor de Código-Fonte. Você pode ver que o IDE adicionou a anotação <tt>@MessageDriven</tt> e as propriedades de configuração à classe.</p>
            <pre class="examplecode">       
@MessageDriven(mappedName = &quot;jms/NewMessage&quot;, activationConfig =  {
        @ActivationConfigProperty(propertyName = &quot;acknowledgeMode&quot;, propertyValue = &quot;Auto-acknowledge&quot;),
        @ActivationConfigProperty(propertyName = &quot;destinationType&quot;, propertyValue = &quot;javax.jms.Queue&quot;)
    })
public class NewMessage implements MessageListener {</pre>
            <p>A anotação <tt>@MessageDriven</tt> informa ao contêiner que o componente é um bean baseado em mensagens e especifica o recurso JMS usado pelo bean. Quando o IDE gera a classe, o Nome Mapeado do recurso (<tt>jms/NewMessage</tt>) é derivado do nome da classe (<tt>NewMessage.java</tt>). O recurso JMS é mapeado para o nome JNDI do destino do qual o bean recebe mensagens. O assistente Novo Bean Baseado em Mensagens também adiciona as informações dos recursos JMS ao <tt>glassfish-resources.xml</tt>. Não é necessário configurar os descritores de implantação para especificar os recursos JMS. Se usar a ação Executar no IDE para implantar a aplicação no GlassFish, os recursos JMS serão criados no servidor na implantação.</p>

            <p>As especificações do EJB permitem que você use anotações para introduzir recursos diretamente em uma classe. Agora você usará anotações para introduzir o recurso <tt>MessageDrivenContext</tt> em sua classe e, em seguida, injetar o recurso <tt>PersistenceContext</tt>, que será usado pela EntityManager API para gerenciar as instâncias de entidade persistentes. Você adicionará as anotações à classe no Editor de Código-Fonte.</p>
            <ol>
                <li>Injetamos o recurso <tt>MessageDrivenContext</tt> na classe adicionando o seguinte campo anotado (em negrito) à classe:
                    <pre class="examplecode">
public class NewMessage implements MessageListener {

<b>@Resource
private MessageDrivenContext mdc;</b></pre>
                </li>
                <li>Introduza o gerenciador de entidades na classe clicando com o botão direito do mouse no código e selecionando Inserir Código (Alt-Insert; Ctrl-I no Mac), e selecionando Usar Gerenciador de Entidades no menu pop-up. O IDE adiciona a seguinte anotação <tt>@PersistenceContext</tt> ao seu código-fonte.
                    <pre class="examplecode">
@PersistenceContext(unitName = "NewsApp-ejbPU")
private EntityManager em;</pre>
                    O IDE também gera o seguinte método <tt>persist</tt>.
                    <pre class="examplecode">
public void persist(Object object) {
    em.persist(object);
}</pre>
                </li>
                <li>Modifique o método <tt>persist</tt> para alterar o nome para <tt>save</tt>. O método deve ter uma aparência semelhante a esta:
                    <pre class="examplecode">
public void <b>save</b>(Object object) {     
    em.persist(object);
}</pre>
                </li>
                <li>Modifique o método <tt>onMessage</tt> adicionando o seguinte código (em negrito) ao corpo do método.
                    <pre class="examplecode">public void onMessage(Message message) {
    <strong>ObjectMessage msg = null;
    try {
        if (message instanceof ObjectMessage) {
            msg = (ObjectMessage) message;
            NewsEntity e = (NewsEntity) msg.getObject();
            save(e);            
        }
    } catch (JMSException e) {
        e.printStackTrace();
        mdc.setRollbackOnly();
    } catch (Throwable te) {
        te.printStackTrace();
    }</strong>
}</pre>
                </li>
                <li>Clique com o botão direito do mouse no editor e escolha Corrigir Importações (Alt-Shift-I; ⌘-Shift-I no Mac) para gerar quaisquer instruções de importação necessárias. Salve as alterações.</li>
            </ol>
            <p class="notes"><strong>Observação.</strong> Quando geramos as instruções de importação, queremos <strong>garantir a importação das bibliotecas <tt>javax.jms</tt>e <tt>javax.annotation.Resource</tt></strong>.</p>

            <p class="tips">Para obter mais detalhes sobre beans baseados em mensagens, consulte o capítulo <a href="http://java.sun.com/javaee/6/docs/tutorial/doc/gipko.html">O que é um Bean Baseado em Mensagem?</a> no <a href="http://download.oracle.com/javaee/6/tutorial/doc/">Tutorial do Java EE 6 , Parte I</a>.</p>

            <a name="Exercise_2c"></a>
            <h3>Criando a Fachada da Sessão</h3>
            <p>Neste exercício, você criará uma fachada de sessão para a classe de entidade NewsEntity. A especificação EJB 3.0 simplificou a criação de beans de sessão reduzindo a quantidade de códigos necessários e permitindo o uso de anotações para declarar uma classe como um Bean de sessão. A especificação EJB 3.1 simplifica ainda mais os requisitos dos beans de sessão, ao tornar opcionais as interfaces de negócios. Os beans de sessão podem ser acessados por clientes locais por meio de uma interface local ou de uma view sem interface. Neste tutorial, você não criará uma interface para o bean. Os servlets da aplicação web acessarão o bean usando uma view sem interface.</p>

            <p>Para criar a fachada de sessão, execute as seguintes etapas:</p>
            <ol>
                <li>Clique com o botão direito do mouse no módulo EJB e escolha Novo > Outro.</li>
                <li>Na categoria Persistência, selecione Beans de Sessão em Classes de Entidade. Clique em Próximo.</li>
                <li>Selecione <tt>ejb.NewsEntity</tt> na lista de classes de entidades disponíveis e clique em Adicionar para mover a classe para o painel Classes de Entidades Selecionadas. Clique em Próximo.</li>
                <li>Verifique se o Pacote está definido como <tt>ejb</tt>. Clique em Finalizar.</li>
            </ol>
            <img alt="Assistente Novo Bean Baseado em Mensagens" class="margin-around b-all" src="../../../images_www/articles/72/javaee/ejbentapp/ejb-sessionforentity.png" title="Assistente Novo Bean Baseado em Mensagens" />


            <p>Quando você clica em Finalizar, o IDE gera a classe de fachada da sessão <tt>NewsEntityFacade.java</tt> e <tt>AbstractFacade.java</tt>, e abre os arquivos no editor. Como podemos ver no código gerado, a anotação <tt>@Stateless</tt> é usada para declarar a classe <tt>NewsEntityFacade.java</tt> como um componente de bean de sessão sem estado. O IDE também adiciona a anotação <tt>PersistenceContext</tt> para injetar o recurso diretamente no componente do bean de sessão. <tt>NewsEntityFacade.java</tt> estende <tt>AbstractFacade.java</tt>, que contém a lógica de negócio e gerencia a transação.</p>

            <p class="notes"><strong>Observação.</strong> Interfaces remotas ainda são necessárias, se os beans forem ser acessados por clientes remotos.</p>

            <p class="tips">Para obter mais informações sobre beans de sessão, consulte o capítulo <a href="http://java.sun.com/javaee/6/docs/tutorial/doc/gipjg.html">O que é um Bean de Sessão?</a> no <a href="http://download.oracle.com/javaee/6/tutorial/doc/">Tutorial do Java EE 6, Parte I</a>.</p>
            
        </div>
        
        
        
        <!-- ===================================================================================== -->
        <a name="Exercise_3"></a> 
        <h2>Codificando o Módulo Web</h2>
        <p>Nesta seção, você criará dois servlets no módulo Web. O servlet ListNews recupera as mensagens do banco de dados usando a fachada de entidade no módulo EJB. O servlet PostMessage é usado para enviar mensagens JMS.</p>

        <p>Nesta seção, você criará também um bean de sessão simples no módulo web que contará o número de usuários que estão atualmente na sessão. A especificação EJB 3.1 permite criar enterprise beans em aplicações Web. Antes do EJB 3.1, todos os enterprise beans tinham que estar em módulos EJB.</p>

        <div class="indent">
            <a name="Exercise_3a"></a>
            <h3>Criando o Bean de Sessão Único</h3>
            
            <p>A especificação EJB 3.1 introduz a anotação <tt>@Singleton</tt> que permite criar facilmente beans de sessão únicos. O EJB 3.1 também define anotações adicionais para a configuração de propriedades de beans de sessão únicos como quando o bean é instanciado.
            </p>
            <p>Depois que o bean de sessão único é instanciado, ele existirá durante o ciclo de vida da aplicação. Como o seu próprio nome diz, pode haver somente uma única instância de um bean de sessão único na aplicação. Como os beans de sessão sem estado, os beans de sessão únicos podem ter vários clientes.</p>

            <p>Para criar o bean da sessão único, execute as seguintes etapas. </p>

            <ol>
                <li>Clique com o botão direito do mouse no módulo Web e selecione Novo > Outro para abrir o assistente Novo Arquivo.</li>
                <li>Selecione o Bean de Sessão na categoria Enterprise JavaBeans. Clique em Próximo.</li>
                <li>Digite <strong>SessionManagerBean</strong> para Nome EJB.</li>
                <li>Digite <strong>ejb</strong> para o nome do Pacote.</li>
                <li>Selecione Único. Clique em Finalizar.</li>
            </ol>
            <img alt="Criando um bean de sessão único no assistente Novo Bean de Sessão" class="margin-around b-all" src="../../../images_www/articles/72/javaee/ejbentapp/ejb-newsingleton.png" title="Criando um bean de sessão único no assistente Novo Bean de Sessão" />
            <p>Quando você clica em Finalizar, o IDE gera a classe do bean de sessão único e abre a classe no Editor. Você pode ver que o IDE adicionou a anotação <tt>@Singleton</tt> à classe para declarar um bean de sessão único. O assistente também anotou a classe com <tt>@LocalBean</tt>.</p>

            <pre class="examplecode">@Singleton
@LocalBean
public class SessionManagerBean {

}</pre>

            <ol>
                 <li>Anote a classe com <tt>@WebListener</tt> e implemente <tt>HttpSessionListener</tt>.
                <pre class="examplecode">@Singleton
@LocalBean
<strong>@WebListener</strong>
public class SessionManagerBean <strong>implements HttpSessionListener</strong>{

}</pre>
                     <p>A anotação <tt>@WebListener</tt> é parte da API do Servlet 3.0 e permite implementar um listener diretamente no seu código.</p>

                     <p>Quando você implementa <tt>HttpSessionListener</tt>, o IDE exibe uma advertência na margem.</p>
                </li>
                <li>Clique no emblema de advertência na margem esquerda e selecione "Implementar todos os métodos abstratos".<br /> <img alt="Dica do editor para implementar métodos abstratos" class="margin-around b-all" src="../../../images_www/articles/72/javaee/ejbentapp/ejb-implementabstract.png" title="Dica do editor para implementar métodos abstratos" />
                    <p>O IDE adiciona os métodos <tt>sessionCreated</tt> e <tt>sessionDestroyed</tt>.</p></li>
                <li>Adicione o campo estático <tt>counter</tt> e defina o valor inicial como <tt>0</tt>.
                    <pre class="examplecode">@LocalBean
@WebListener
public class SessionManagerBean implements HttpSessionListener{
    <strong>private static int counter = 0;</strong></pre>
                </li>
                <li>Modifique os corpos gerados dos métodos <tt>sessionCreated</tt> e <tt>sessionDestroyed</tt> para aumentar o valor de um campo quando uma nova sessão for iniciada e para diminuir o valor quando uma sessão for finalizada. O valor será armazenado no campo <tt>counter</tt>.

                <pre class="examplecode">public void sessionCreated(HttpSessionEvent se) {
    <strong>counter++;</strong>
}

public void sessionDestroyed(HttpSessionEvent se) {
    <strong>counter--;</strong>
}</pre>
                    
                </li>
                <li>Adicione o método a seguir, que retorna o valor atual de <tt>counter</tt>.
                <pre class="examplecode">public int getActiveSessionsCount() {
        return counter;
    }</pre>
                    <p>Você chamará este método de um servlet para exibir o número atual de usuários/sessões abertas.</p>
                </li>
                <li>Salve as alterações.</li>
            </ol>


            <p>O código para o bean de sessão deve ter agora a seguinte aparência.</p>
            <pre class="examplecode">@Singleton
@LocalBean
@WebListener
public class SessionManagerBean implements HttpSessionListener {
    private static int counter = 0;

    public void sessionCreated(HttpSessionEvent se) {
        counter++;
    }

    public void sessionDestroyed(HttpSessionEvent se) {
        counter--;
    }

    public int getActiveSessionsCount() {
        return counter;
    }

}</pre>
            <p class="tips">Para obter mais detalhes sobre beans de sessão únicos, consulte o capítulo <a href="http://java.sun.com/javaee/6/docs/tutorial/doc/gipjg.html">O que é um Bean de Sessão?</a> no <a href="http://download.oracle.com/javaee/6/tutorial/doc/">Tutorial do Java EE 6 , Parte I</a>.</p>




            <a name="Exercise_3b"></a>
            <h3>Criando o Servlet <tt>ListNews</tt></h3>
            <p>Neste exercício, você criará um servlet simples para exibir as mensagens armazenadas. Você usará anotações para chamar o Enterprise Bean NewsEntityFacade do servlet.</p>
            <ol>
                <li>Clique com o botão direito do mouse em um projeto de módulo web e selecione Novo > Servlet.</li>
                <li>Digite <strong>ListNews</strong> para o Nome da Classe.</li>
                <li>Insira <strong>web</strong> como o nome do Pacote. Clique em Finalizar.</li>
            </ol>
            <p>Quando você clicar em Finalizar, a classe <tt>ListNews.java</tt> irá se abrir no Editor de Código-Fonte. No editor de código-fonte, execute as etapas a seguir.</p>
            <ol>
                <li>Clique com o botão direito do mouse no editor de código-fonte, selecione Inserir Código (Alt-Insert; Ctrl-I no Mac) e selecione Chamar Enterprise Bean.</li>
                <li>Na caixa de diálogo Chamar Enterprise Bean, expanda o nó NewsApp-ejb e selecione NewEntityFacade. Clique em OK.
                    <p>O IDE adiciona a anotação <tt>@EJB</tt> para injetar o enterprise bean.</p>
                </li>
                <li>Use a caixa de diálogo Chamar Enterprise Bean novamente para injetar SessionManagerBean no nó NewsApp-war.
                    <p>Você verá no seu código as seguintes anotações que injetam os dois enterprise beans.</p>
                <pre class="examplecode">@WebServlet(name = "ListNews", urlPatterns = {"/ListNews"})
public class ListNews extends HttpServlet {

    @EJB
    private SessionManagerBean sessionManagerBean;
    @EJB
    private NewsEntityFacade newsEntityFacade;
                </pre>
                    <p>Você também pode ver que a anotação <tt>@WebServlet</tt> é usada para declarar a classe um servlet e especificar o nome do servlet. A anotação <tt>@WebServlet</tt> faz parte da API do Servlet 3.0 introduzida na especificação Java EE 6. Você pode identificar os servlets usando a anotação, em vez de no descritor de implantação <tt>web.xml</tt>. A aplicação NewsApp não contém <tt>web.xml</tt>.</p>
                </li>

                <li>No método <tt>processRequest</tt>, adicione o seguinte código (em negrito) para retornar a sessão atual ou criar uma nova sessão.
                    <pre class="examplecode">protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
        <strong>request.getSession(true);</strong>
        response.setContentType("text/html;charset=UTF-8");</pre>

                <li>Adicione o seguinte código (em negrito) ao método <tt>processRequest</tt> para imprimir as mensagens e adicionar um link ao servlet PostMessage. (Remova os comentários do código no método, se necessário.)
                    <pre class="examplecode">
out.println(&quot;&lt;h1&gt;Servlet ListNews at &quot; + request.getContextPath () + &quot;&lt;/h1&gt;&quot;);

<strong>List news = newsEntityFacade.findAll();
for (Iterator it = news.iterator(); it.hasNext();) {
    NewsEntity elem = (NewsEntity) it.next();
    out.println(&quot; &lt;b&gt;&quot;+elem.getTitle()+&quot; &lt;/b&gt;&lt;br /&gt;&quot;);
    out.println(elem.getBody()+&quot;&lt;br /&gt; &quot;);
}
out.println(&quot;&lt;a href='PostMessage'&gt;Add new message&lt;/a&gt;&quot;);</strong>

out.println(&quot;&lt;/body&gt;&quot;);
                    </pre>
                </li>
                <li>Adicione o código seguinte (em negrito) para recuperar e imprimir o número de usuários/sessões abertas.
                    <pre class="examplecode">out.println(&quot;&lt;a href='PostMessage'&gt;Add new message&lt;/a&gt;&quot;);

<strong>out.println(&quot;&lt;br&gt;&lt;br&gt;&quot;);
out.println(sessionManagerBean.getActiveSessionsCount() + " user(s) reading the news.");</strong>

out.println(&quot;&lt;/body&gt;&quot;);
                    </pre>
                </li>
                <li>Pressione Ctrl-Shift-I para gerar as instruções de importação necessárias para a classe. Ao gerar as instruções de importação, você deseja <b>importar as bibliotecas <tt>java.util</tt></b>.</li>
                <li>Salve as alterações feitas no arquivo.</li>
            </ol>
            
            
            <a name="Exercise_3c"></a>
            <h3>Criando o Servlet <tt>PostMessage</tt></h3>
            <p>Neste exercício, você criará o servlet <tt>PostMessage</tt> que será usado para enviar mensagens. Você usará anotações para injetar os recursos JMS que criou diretamente no servlet, especificando o nome da variável e o nome para o qual é mapeado. Em seguida, você adicionará o código para enviar a mensagem JMS e o código para o form HTML para adicionar uma mensagem.</p>
            <ol>
                <li>Clique com o botão direito do mouse em um projeto de módulo web e selecione Novo > Servlet.</li>
                <li>Digite <tt>PostMessage</tt> para Nome da Classe.</li>
                <li>Insira <tt>web</tt> para nome do Pacote e clique em Finalizar.</li>
            </ol>
            <p>Quando você clica em Finalizar, a classe <tt>PostMessage.java</tt> se abrirá no editor de código-fonte. No editor de código-fonte, execute as etapas a seguir.</p>
            <ol>
                <li>Use anotações para injetar os recursos <tt>ConnectionFactory</tt> e <tt>Queue</tt> adicionando as seguintes declarações de campo (em negrito):
                    <pre class="examplecode">@WebServlet(name="PostMessage", urlPatterns={"/PostMessage"})
public class PostMessage extends HttpServlet {                
    <b>@Resource(mappedName=&quot;jms/NewMessageFactory&quot;)
    private  ConnectionFactory connectionFactory;

    @Resource(mappedName=&quot;jms/NewMessage&quot;)
    private  Queue queue;</b></pre>
                </li>
                <li>Agora você insere o código para enviar as mensagens JMS adicionando o seguinte código em negrito ao método <tt>processRequest</tt>:
                    <pre class="examplecode">
response.setContentType(&quot;text/html;charset=UTF-8&quot;);

// Add the following code to send the JMS message
<b>String title=request.getParameter(&quot;title&quot;);
String body=request.getParameter(&quot;body&quot;);
if ((title!=null) &amp;&amp; (body!=null)) {
    try {
        Connection connection = connectionFactory.createConnection();
        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
        MessageProducer messageProducer = session.createProducer(queue);

        ObjectMessage message = session.createObjectMessage();
        // here we create NewsEntity, that will be sent in JMS message
        NewsEntity e = new NewsEntity();
        e.setTitle(title);
        e.setBody(body);

        message.setObject(e);                
        messageProducer.send(message);
        messageProducer.close();
        connection.close();
        response.sendRedirect(&quot;ListNews&quot;);

    } catch (JMSException ex) {
        ex.printStackTrace();
    }
}</b>
                        
PrintWriter out = response.getWriter();
                    </pre>
                </li>
                <li>Adicione as linhas a seguir (em negrito) ao método <tt>processRequest</tt> para adicionar o form web para adicionar uma mensagem. (Remova o comentário do código para imprimir o HTML, se necessário.)
                <pre class="examplecode">
out.println(&quot;Servlet PostMessage at &quot; + request.getContextPath() + &quot;&lt;/h1&gt;&quot;);

// The following code adds the form to the web page
<b>out.println(&quot;&lt;form&gt;&quot;);
out.println(&quot;Title: &lt;input type='text' name='title'&gt;&lt;br/&gt;&quot;);
out.println(&quot;Message: &lt;textarea name='body'&gt;&lt;/textarea&gt;&lt;br/&gt;&quot;);
out.println(&quot;&lt;input type='submit'&gt;&lt;br/&gt;&quot;);
out.println(&quot;&lt;/form&gt;&quot;);</b>

out.println(&quot;&lt;/body&gt;&quot;);
                </pre>
                <li>Pressione Ctrl-Shift-I para gerar as instruções de importação necessárias para a classe.
                    <p class="notes"><b>Observação:</b> ao selecionar bibliotecas para importação para <tt>Connection</tt>, <tt>ConnectionFactory</tt>, <tt>Session</tt> e<tt>Queue</tt>, <b>certifique-se de importar as bibliotecas <tt>javax.jms</tt></b>. </p>
                <img alt="tela da caixa de diálogo Corrigir Todas as Importações" class="margin-around b-all" src="../../../images_www/articles/72/javaee/ejbentapp/import-jms.png" title="Selecione as bibliotecas JMS na caixa de diálogo Corrigir Todas as Importações" />
                </li>
                <li>Salve as alterações feitas no arquivo.</li>
            </ol>
            </div>
            
            
            <h2><a name="Exercise_4"></a> Executando o Projeto</h2>
            <p>Você agora pode executar o projeto. Quando executamos o projeto, queremos que o browser abra a página com o servlet <tt>ListNews. </tt> Para isso, especificamos o URL na caixa de diálogo Propriedades da aplicação corporativa. O URL é relativo ao caminho de contexto da aplicação. Após inserirmos o URL relativo, poderemos construir, implantar e executar a aplicação a partir da janela Projetos.</p>
            <p>Para definir o URL relativo e executar a aplicação, faça o seguinte:</p>
            <ol>
                <li>Na janela Projetos, clique com o botão direito do mouse no nó da aplicação corporativa NewsApp e selecione Propriedades no menu pop-up.</li>
                <li>Selecione Executar no painel Categorias.</li>
                <li>No campo de texto do URL relativo, digite <strong>/ListNews</strong>.</li>
                <li>Clique em OK.</li>
                <li>Na janela Projetos, clique com o botão direito do mouse no nó da aplicação corporativa NewsApp e selecione Executar.</li>
            </ol>
            
            <p>Quando você executa o projeto, o servlet <tt>ListNews</tt> é aberto no browser e exibe uma lista das mensagens no banco de dados. Quando você executa o projeto pela primeira vez, o banco de dados está vazio, mas você pode clicar em Adicionar Mensagem para adicionar uma mensagem.</p>
            <img alt="A página do Servlet ListNews" class="margin-around b-all" src="../../../images_www/articles/72/javaee/ejbentapp/ejb-browser1.png" title="A página do Servlet ListNews" />
            <p>Quando você adiciona uma mensagem com o servlet <tt>PostMessage</tt>, a mensagem é enviada para o bean baseado em mensagens para gravar em armazenamento persistente e o servlet <tt>ListNews</tt> é chamado para exibir as mensagens no banco de dados. A lista de mensagens no banco de dados recuperada por <tt>ListNews</tt> em geral ainda não contém a nova mensagem, porque o serviço de mensagens é assíncrono.
            </p>

            <a name="Exercise_5"></a>
            <h2>Fazendo Download do Projeto da Solução</h2>
            <p>Você pode fazer o download da solução para este projeto como um projeto das seguintes formas.</p>
            <ul>
                <li>Faça download <a href="https://netbeans.org/projects/samples/downloads/download/Samples%252FJavaEE%252FNewsAppEE6.zip">de um arquivo compactado zip do projeto finalizado</a>.</li>
                <li>Faça o check-out do código-fonte do projeto das Amostras do NetBeans ao executar as etapas a seguir:
                    <ol>
                        <li>Escolha Equipe > Subversion > Efetuar check-out no menu principal.</li>
                        <li>Na caixa de diálogo Efetuar Check-out, insira o Repositório URL a seguir:<br /> <tt>https://svn.netbeans.org/svn/samples~samples-source-code</tt><br /> Clique em Próximo.</li>
                        <li>Clique em Procurar para abrir a caixa de diálogo Procurar Pastas do Repositório.</li>
                        <li>Expanda o nó raiz e selecione <strong>samples/javaee/NewsAppEE6</strong>. Clique em OK.</li>
                        <li>Especifique a Pasta Local para o códigos-fonte (a pasta local precisa estar vazia).</li>
                        <li>Clique em Finalizar.
                            <p>Quando você clica em Finalizar, o IDE inicializa a pasta local como um repositório Subversion e verifica os códigos-fonte do projeto.</p>
                        </li>
                        <li>Clique em Abrir Projeto na caixa de diálogo exibida quando o check-out for concluído.</li>
                    </ol>
                    <p class="notes"><strong>Observações.</strong></p>
                    <ul>
                        <li>É necessário um cliente Subversion para verificar os códigos-fonte. Para saber mais sobre a instalação do Subversion, consulte a seção <a href="../ide/subversion.html#settingUp">Configurando o Subversion</a> no <a href="../ide/subversion.html">Guia do Subversion no NetBeans IDE</a>.</li>
                    </ul>
                </li>
            </ul>


                


            
            <a name="Exercise_6"></a>
                
            <h2>Solução de Problemas</h2>
            <p>A seguir estão alguns dos problemas que você poderá encontrar ao criar o projeto.</p>
            <div class="indent">
                <h3 class="tutorial">Problema com os Recursos JMS</h3>
                <p>Ao usar o assistente para criar recursos JMS, você poderá receber a seguinte mensagem de erro na janela de saída:</p>
                <pre>[com.sun.enterprise.connectors.ConnectorRuntimeException:
                    JMS resource not created : jms/Queue]
                </pre>
                <p>Esta mensagem pode indicar que o recurso JMS não foi criado ou não foi registrado no servidor de aplicações. Você pode usar a Console de Admin do servidor de aplicações para verificar, criar e editar recursos JMS.</p>
                <p>Para abrir a Console Admin, faça o seguinte:</p>
                <ol>
                    <li>Confirme se o servidor de aplicações está sendo executado, expandindo o nó Servidores na janela Serviços do IDE. Uma pequena seta verde ao lado do nó do servidor de aplicações indica que o servidor está sendo executado.</li>
                    <li>Clique com o botão direito do mouse no nó do servidor de aplicações e selecione Exibir Console Admin para abrir a janela de log-in no browser.</li>
                    <li>Faça log-in no servidor. O nome de usuário e a senha default são <tt>admin</tt> e <tt>adminadmin</tt>.</li>
                    <li>Na Console Admin no browser, expanda o nó Recursos e o nó Recursos JMS no quadro à esquerda.</li>
                    <li>Clique nos links Fábricas de Conexão e Recursos de Destino no quadro à esquerda para verificar se os recursos estão registrados no servidor e, se necessário, modifique os recursos. Se os recursos não existirem, crie-os na Console Admin.</li>
                </ol>
                <p>Certifique-se de que o recurso de fábrica de conexões JMS no servlet PostMessage esteja mapeado para o nome JNDI correto do recurso de fábrica de conexões JMS registrado no Servidor de Aplicações Sun Java System.</p>
                <p>Os seguintes recursos devem estar registrados no Servidor de Aplicações Sun Java System:</p>
                <ul>
                    <li>um recurso de Destino com o nome JNDI <tt>jms/NewMessage</tt> e digite <tt>javax.jms.Queue</tt></li>
                    <li>um recurso de Fábrica de Conexões com o nome JNDI <tt>jms/NewMessageFactory</tt> e digite <tt>javax.jms.QueueConnectionFactory</tt></li>
                </ul>
                
            </div>
            <br>
            <div class="feedback-box" ><a href="/about/contact_form.html?to=3&amp;subject=Feedback:%20Creating%20an%20Enterprise%20Application%20with%20EJB%203.1">Enviar Feedback neste Tutorial</a></div>
            <br style="clear:both;" />
            <!-- ======================================================================================= -->
            <h2><a name="nextsteps"></a>Consulte Também</h2>
            <p>Para obter mais informações sobre o uso do NetBeans IDE para desenvolver aplicações Java EE, consulte os seguintes recursos:
            </p>
            <ul>
            <li><a href="javaee-intro.html">Introdução à Tecnologia Java EE</a></li>
            <li><a href="javaee-gettingstarted.html">Conceitos Básicos sobre Aplicações do Java EE</a></li>
            <li><a href="../web/quickstart-webapps.html">Introdução ao Desenvolvimento de Aplicações Web</a></li>
            <li><a href="../../trails/java-ee.html">Trilha de Aprendizado do Java EE e Java Web</a></li>
            </ul>
            <p>Para obter mais informações sobre o uso de enterprise beans, consulte o <a href="http://docs.oracle.com/javaee/7/tutorial/doc/ejb-intro.htm">Tutorial do Java EE 7</a>.</p>
            <p>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, <a href="../../../community/lists/top.html">inscreva-se na lista de correspondência de nbj2ee</a>.</p>
    </body>
</html>
