// 
//     Licensed to the Apache Software Foundation (ASF) under one
//     or more contributor license agreements.  See the NOTICE file
//     distributed with this work for additional information
//     regarding copyright ownership.  The ASF licenses this file
//     to you under the Apache License, Version 2.0 (the
//     "License"); you may not use this file except in compliance
//     with the License.  You may obtain a copy of the License at
// 
//       http://www.apache.org/licenses/LICENSE-2.0
// 
//     Unless required by applicable law or agreed to in writing,
//     software distributed under the License is distributed on an
//     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
//     KIND, either express or implied.  See the License for the
//     specific language governing permissions and limitations
//     under the License.
//

= Criando e Executando um Cliente da Aplicação no GlassFish Server
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: Criando e Executando um Cliente da Aplicação no GlassFish Server - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, Criando e Executando um Cliente da Aplicação no GlassFish Server

Este tutorial mostra como criar um cliente de aplicação simples e como acessar um Enterprise JavaBean (EJB) implantado no GlassFish server 3. Neste tutorial, primeiro você criará uma aplicação corporativa que contém um bean de sessão simples e um projeto de biblioteca de classe Java que contém a interface remota para o bean da sessão. Em seguida, você criará um cliente de aplicação que acessa o bean de sessão por meio da interface remota na biblioteca de classes. A biblioteca de classes JAR que contém a interface remota é adicionada ao classpath da aplicação corporativa e ao cliente da aplicação.

*Exercícios do Tutorial*

* <<Exercise_10,Criando a Biblioteca de Classe Java>>
* <<Exercise_20,Criando um Módulo EJB>>
* <<Exercise_22,Criando o Bean de Sessão>>
* <<Exercise_23,Adicionando um Método de Negócios>>
* <<Exercise_24,Implantando a Aplicação Corporativa>>
* <<Exercise_30,Criando o Cliente da Aplicação>>
* <<Exercise_32,Adicionando a Biblioteca de Classe>>
* <<Exercise_30,Executando o Cliente da Aplicação>>

*Para seguir este tutorial, são necessários os recursos e o software a seguir.*

|===
|Software ou Recurso |Versão Necessária 

|link:https://netbeans.org/downloads/index.html[+NetBeans IDE+] |Versão Java EE 7.2, 7.3, 7.4, 8.0 

|link:http://www.oracle.com/technetwork/java/javase/downloads/index.html[+JDK (Java Development Kit)+] |versão 7 ou 8 

|GlassFish Server Open Source Edition |3.x, 4.x 
|===

*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:

* Programação em Java
* NetBeans IDE

Você pode fazer download link:https://netbeans.org/projects/samples/downloads/download/Samples/JavaEE/EntAppClientEE6.zip[+de um arquivo compactado zip do projeto finalizado+]. Caso esteja usando o GlassFish 3.0, use link:https://netbeans.org/projects/samples/downloads/download/NetBeans%20IDE%206.8/JavaEE/entappclient.zip[+o arquivo compactado zip para o projeto do NetBeans IDE 6.8.+]


== Criando a Biblioteca de Classe Java

Nesta sessão você irá criar um projeto de Biblioteca de Classe Java que irá conter a interface remota para o EJB. A interface remota se comporta como uma API para o EJB, que é usada por clientes para se comunicar com o EJB.

A biblioteca JAR é fácil de ser distribuída para quaisquer clientes que possam precisar chamar o EJB. Os clientes que desejam acessar o EJB precisam apenas adicionar o JAR de biblioteca ao classpath do projeto. A implementação EJB usa o mesmo JAR para implementar a interface.

1. Selecione Arquivo > Novo Projeto (Ctrl-Shift-N; ⌘-Shift-N no Mac) e selecione Biblioteca de Classe Java na categoria Java. Clique em Próximo.
2. Digite *EJBRemoteInterface* como o nome do Projeto. Clique em Finalizar.

image::images/appclient-newclasslibrary.png[title="Assistente de projeto Nova Biblioteca de Classe"]

Quando você clicar em Finalizar, o IDE criará o projeto da Biblioteca de classe Java. Na próxima sessão, você criará uma aplicação corporativa Java EE e um módulo EJB. Em seguida, você usará um assistente para criar um bean de sessão e a interface remota para seu bean de sessão no projeto Biblioteca de classe. O cliente de aplicação acessará o bean de sessão por meio da interface na biblioteca de classes.


== Criando um Módulo EJB

Nesta sessão, você criará um aplicação corporativa em um módulo EJB. Quando você cria um EJB, o EJB deve ser criado como parte de uma aplicação corporativa e encapsulado como um arquivo compactado EAR e implantado no servidor.


=== Criando a Aplicação Corporativa

Nesta sessão, você irá usar o assistente Novo Projeto para criar uma aplicação corporativa contendo um módulo EJB. O assistente fornece uma opção para criar um módulo EJB quando você cria a aplicação.

1. Selecione Arquivo > Novo Projeto e selecione Aplicação Corporativa na categoria Java EE. Clique em Próximo.
2. Digite *EntAppEJB* como o Nome do Projeto. Clique em Próximo.
3. Selecione GlassFish Server como o Servidor.
4. Confirme se Criar Módulo EJB está selecionado e desfaça a seleção de Criar Módulo de Aplicação Web. Clique em Finalizar.

image::images/appclient-newentappejb.png[title="Criar Módulo EJB está selecionado no assistente Nova Aplicação Corporativa"]

Quando você clica em Finalizar, o IDE cria uma aplicação corporativa e um módulo EJB. Na janela Projetos, você pode ver que um projeto de Módulo EJB está listado no nó Módulos Java EE do projeto de aplicação corporativa.

image::images/appclient-projects-entappejb1.png[title="Janela Projetos mostrando projetos abertos"]

Você pode ver que três tipos de projetos estão agora listados na janela Projetos: biblioteca de classe, aplicação corporativa e módulo EJB.


=== Criando o Bean de Sessão

Neste exercício, você usará um assistente para criar um bean de sessão no projeto do módulo EJB. No assistente você também criará uma interface remota para o bean de sessão no projeto Biblioteca de Classe.

1. Clique com o botão direito do mouse no projeto do módulo EJB e selecione Novo > Bean de Sessão.
2. Digite *MySession* como o Nome do EJB.
3. Digite *ejb* para o Pacote.
4. Selecione Sem Estado para o Tipo de Sessão.
5. Selecione a opção Remota para Criar Interface.
6. Selecione o projeto *EJBRemoteInterface* na lista drop-down. Clique em Finalizar.

image::images/appclient-wizard-newsessionbean.png[title="Assistente de Novo Bean de Sessão"]

Quando você clica em Finalizar, o IDE cria o bean da sessão no pacote  ``ejb``  no módulo EJB e abre a classe no editor. Você pode ver que  ``MySession``  implementa a interface  ``MySessionRemote``  e que o EJBRemoteInterface JAR foi adicionado como uma biblioteca no módulo EJB.

O assistente também cria a interface remota denominada  ``MySessionRemote``  no pacote  ``ejb``  do projeto EJBRemoteInterface. O IDE adiciona automaticamente a Biblioteca Java EE 6 API que é necessária para a interface EJB.

image::images/appclient-projects-entappejb2.png[title="Janela Projetos que mostra o bean de sessão e a interface remota"] 


=== Adicionando um Método de Negócios

Neste exercício, você irá criar um método de negócios simples no bean de sessão que retorna uma string.

1. Clique com o botão direito do mouse no editor de MySession e selecione Inserir Código (Alt-Insert; Ctrl-I no Mac) e selecione Adicionar Método de Negócios.
2. Digite *getResult* como o Nome do Método e String como o Tipo de Retorno. Clique em OK.
3. Faça as seguintes alterações para modificar o método  ``getResult``  para retornar uma string.

A classe deve ter uma aparência semelhante a esta.


[source,java]
----

@Stateless
public class MySession implements MySessionRemote {

    public String getResult() {
        return *"This is My Session Bean"*;
    }
}
----

[start=4]
. Salve as alterações.

Agora você tem uma aplicação corporativa com um EJB simples que é exposto por meio de uma interface remota. Você também tem uma biblioteca de classe independente que contém a interface EJB que pode ser distribuída para outros desenvolvedores. Os desenvolvedores podem adicionar a biblioteca em seus projetos, caso desejem se comunicar com o EJB que é exposto pela interface remota e não precisam ter o código-fonte para o EJB. Quando você modifica o código para o EJB, somente precisa distribuir um JAR da biblioteca de classe atualizada, caso alguma das interfaces seja modificada.

Quando você usa a caixa de diálogo Adicionar Método de Negócios, o IDE implementa automaticamente o método na interface remota.


=== Implantando a Aplicação Corporativa

Agora, você pode construir e executar a aplicação corporativa. Quando você executar a aplicação, o IDE implantará o arquivo compactado EAR no servidor.

1. Clique com o botão direito do mouse na aplicação corporativa EntAppEJB e selecione Implantar.

Quando você clica em Implantar, o IDE constrói a aplicação corporativa e implanta o arquivo compactado EAR no servidor. Caso você examine a janela Arquivos, poderá ver que o JAR EJBRemoteInterface é implantado com a aplicação.

Na janela Serviços, caso você expanda o nó Aplicações do GlassFish Server 3, poderá ver que o EntAppEJB foi implantado.


== Criando o Cliente de Aplicação

Nesta seção, você irá criar um cliente de aplicação corporativa. Quando você cria o cliente de aplicação, o projeto precisa da biblioteca de classe Java, EJBRemoteInterface, para poder referenciar o EJB.

Quando você executar a aplicação corporativa, o IDE encapsulará o cliente de aplicação e a biblioteca de classe Java JAR no arquivo compactado EAR. Os JARs da biblioteca precisam ser encapsulados em um EAR com o cliente de aplicação, se você deseja acessar os JARs a partir do cliente de aplicação.


=== Criando a Aplicação Corporativa

Neste exercício, você utilizará o assistente Novo Projeto para criar um projeto de cliente de aplicação. Caso esteja usando a implantação no GlassFish 3.1 ou 4.x, você poderá criar e executar um cliente de aplicação como um projeto standalone. O cliente da aplicação não mais precisa ser implantado e executado como parte de uma aplicação corporativa.

NOTE: Se estiver implantando no GlassFish 3.01, você precisará criar o cliente de aplicação como um módulo no projeto de aplicação corporativa e executar a aplicação corporativa.

1. Selecione Arquivo > Novo Projeto e selecione Cliente de Aplicação Corporativa na categoria Java EE. Clique em Próximo.
2. Digite *EntAppClient* como o Nome do Projeto. Clique em Próximo.
3. Selecione GlassFish Server como o Servidor. Clique em Finalizar.

Observe que não é preciso adicionar o projeto em uma aplicação corporativa.

image::images/appclient-wizard-newentappclient.png[title="Criar Cliente de Aplicação selecionado no assistente Novo Projeto"]

Quando você clicar em Finalizar, o IDE criará o projeto de cliente de aplicação e abrirá  ``Main.java``  no editor.


=== Adicionando a Biblioteca de Classe

A biblioteca de classe que contém a interface remota agora precisa ser adicionada ao classpath do projeto para permitir que o cliente de aplicação referencie o EJB. O projeto biblioteca de classe é aberto, para que você possa usar a caixa de diálogo Chamar Enterprise Bean, que vai ajudá-lo a gerar o código para chamar o EJB.

Caso o projeto biblioteca de classe não esteja aberto, você pode adicionar a biblioteca de classe ao projeto na janela Projetos clicando com o botão direito do mouse no nó Bibliotecas e localizando o JAR do projeto EJBRemoteInterface.

1. Expanda o nó Pacotes de Código-Fonte do projeto EntAppClient e abra o  ``Main.java``  no editor.
2. Clique com o botão direito do mouse no código-fonte e selecione Inserir Código (Alt-Insert; Ctrl-I no Mac) e selecione Chamar Enterprise Bean para abrir a caixa de diálogo Chamar Enterprise Bean.
3. Expanda o nó do projeto EntAppEJB e selecione MySession. Clique em OK.

image::images/appclient-callenterprise.png[title="Caixa de diálogo Chamar Enterprise Bean"]

A caixa de diálogo seleciona, automaticamente, Remota como o tipo de interface. Quando você clica em OK, o IDE adiciona a anotação a seguir no  ``Main.java`` .


[source,java]
----

@EJB
private static MySessionRemote mySession;
----

O IDE também adiciona automaticamente a EJBRemoteInterface como uma Biblioteca do projeto.


[start=4]
. Modifique o método  ``main``  para recuperar a String do método  ``getResult``  por meio da interface MySessionRemote. Salve as alterações.

[source,java]
----

public static void main(String[] args) {
        *System.err.println("result = " + mySession.getResult());*
    }
----


== Executando o Clente de Aplicação

Você agora pode executar o cliente de aplicação construindo e implantando o projeto EntAppClient.

1. Clique com o botão direito do mouse no projeto EntAppClient na janela Projetos e selecione Executar.

Como alternativa, você pode expandir o pacote do código-fonte, clicar com o botão direito do mouse na classe  ``Main.java``  e selecionar Executar Arquivo.

Quando você clica em Executar, o IDE constrói o projeto do cliente de aplicação e implanta o arquivo compactado JAR no servidor. Você pode ver a mensagem do cliente de aplicação na janela de Saída.

image::images/appclient-buildoutput.png[title="O resultado na janela de Saída"]

Caso deseje criar EJBs adicionais, basta adicionar as novas interfaces remotas dos EJBs no projeto da biblioteca de classe EJBRemoteInterface.

link:/about/contact_form.html?to=3&subject=Feedback:%20Creating%20an%20Application%20Client[+Envie-nos Seu Feedback+]



== Próximas Etapas

Para obter mais informações sobre o uso do NetBeans IDE para desenvolver aplicações Java EE, consulte os seguintes recursos:

* link:javaee-intro.html[+Introdução à Tecnologia Java EE+]
* link:javaee-gettingstarted.html[+Conceitos Básicos sobre Aplicações do Java EE+]
* link:../../trails/java-ee.html[+Trilha de Aprendizado do Java EE e Java Web+]

Você pode encontrar mais informações sobre o uso do EJB Enterprise Beans no link:http://download.oracle.com/javaee/6/tutorial/doc/[+Tutorial do Java EE 6+].

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, link:../../../community/lists/top.html[+inscreva-se na lista de correspondência de nbj2ee+].

