u04 - Enterprise JavaBeans(EJB) Parte1

download u04 - Enterprise JavaBeans(EJB) Parte1

of 65

Transcript of u04 - Enterprise JavaBeans(EJB) Parte1

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    1/65

    UNID 4- Enterprise JavaBeans (EJB)

    Parte 1

    UNID 4- Enterprise JavaBeans (EJB)

    Parte 1

    UNAMA Universidade da AmazniaPR-REITORIA DE PESQUISA, PS-GRADUAO E EXTENSOPS-GRADUAO LATO SENSUCurso de Especializao em Desenvolvimento de Sistemas Baseado em Software Livre

    Desenvolvimento de Aplicaes Multicamadas

    Prof. Cludio [email protected]

    mailto:[email protected]:[email protected]
  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    2/65

    Desenvolvimento de Aplicaes MulticamadasPro C o art ns

    2

    AssuntosAssuntos

    Enterprise JavaBeans (EJB)

    Beans de sesso

    Exerccios

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    3/65

    Desenvolvimento de Aplicaes MulticamadasPro C o art ns

    3

    Enterprise JavaBeans (EJB)

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    4/65

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    5/65Desenvolvimento de Aplicaes MulticamadasPro C o art ns

    5

    Quando usar EJBs?Quando usar EJBs?

    Voc deve considerar o uso de EJBs se sua

    aplicao tiver alguns dos seguintes requisitos: A aplicao deve ser escalvel

    A aplicao cresce em nmero de usurios, voc podedistribuir os componentes de uma aplicao em mltiplas

    mquinas. As transaes so necessrias para assegurar a

    integridade dos dados

    Os EJBs suportam transaes que controlam o acesso

    concorrente de objetos compartilhados A aplicao ter inmeros clientes

    Estes clientes podem ser magros (thin client), em variadosdispositivos e em quantidade (escala).

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    6/65Desenvolvimento de Aplicaes MulticamadasPro C o art ns

    6

    Tipos de componentes EJBTipos de componentes EJB

    O EJB consiste de trs tipos de componentes:

    Session Beans (regras de negcio)

    Entity Beans (persistncia)

    Orientados a mensagem (Message Driven Beans -MDB)

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    7/65Desenvolvimento de Aplicaes Multicamadas

    Pro C o art ns7

    Beans de sesso

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    8/65Desenvolvimento de Aplicaes Multicamadas

    Pro C o art ns8

    Session BeansSession Beans

    Os Session Beans so responsveis pela execuo das

    regras de negcio do domnio da aplicao. Sua vida varia muito de acordo com o tempo de sua sesso.

    So classificados em trs tipos:

    Stateless (sem estado)

    Statefull(com estado)

    Singleton Session Beans

    Quanto ao acesso, os Session Beans pode ser utilizados de

    forma: Local: na mesma mquina (o cliente est na mesma mquina

    do servidor)

    Remoto: o cliente e o servidor esto em mquinas diferentes.Neste caso, pode haver perda de desempenho.

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    9/65Desenvolvimento de Aplicaes Multicamadas

    Pro C o art ns9

    Stateless Session Bean (SLSB)Stateless Session Bean (SLSB) Os Stateless Session Beans (SLSB) so uteis para as

    operaes em que no necessrio armazenar o estadodo objeto.

    Os SLSB no mantm o estado entre as chamadas demtodos, isto , no retm os dados processados nosmtodos.

    Exemplo de mtodo sem estado (stateless):

    Considere o servio (mtodo) para retornar o endereo deum logradouro a partir do nmero do CEP:

    public LocalCEP consultaCEP (String cep) { // lgica } Onde LocalCEP um objeto contendo os dados da UF (String),

    cidade (String), e o nome do logradouro (String)

    Como cada consulta de CEP independe das consultas anteriores,no necessrio manter dados entre uma consulta e outra. Em

    outras palavras, no necessrio manter estado.

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    10/65

    Desenvolvimento de Aplicaes MulticamadasPro C o art ns

    10

    Stateless Session Beans no EJB 3Stateless Session Beans no EJB 3

    Os Stateless Session Beans (SLSB) so

    identificados atravs da anotao @Stateless Na verso EJB 3, necessrio definir uma classe

    do tipo interface (Java).

    Por exemplo, suponha um SLSB que implementaalgumas operaes matemticas bsicas. Umapossvel interface de utilizao para esse SLSBseria:

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    11/65

    Desenvolvimento de Aplicaes MulticamadasPro C o art ns

    11

    Stateless Session Beans no EJB 3 (passo 2)Stateless Session Beans no EJB 3 (passo 2)

    Aps definir a interface de utilizao, o segundo

    passo implementaras operaes do SLSBatravs de uma classe Java.

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    12/65

    Desenvolvimento de Aplicaes MulticamadasPro C o art ns

    12

    Stateless Session Beans no EJB 3 (passo 3)Stateless Session Beans no EJB 3 (passo 3)

    O terceiro passo especificar o tipo de Session

    Bean que queremos utilizar. No caso da Calculadora, o tipo seria SLSB. Essa

    definio realizada atravs da anotao@Stateless.

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    13/65

    Desenvolvimento de Aplicaes MulticamadasPro C o art ns

    13

    Stateless Session Beans no EJB 3 (Passo 4: Definir oStateless Session Beans no EJB 3 (Passo 4: Definir o

    tipo de acesso)tipo de acesso)

    Por fim, necessrio definir se o SLSB poder ser

    acessado remotamente ou apenas localmente. Quando o acesso a um SLSB local, ele s pode ser

    acessado por aplicaes que estejam no mesmoservidor de aplicao que ele est hospedado.

    Caso contrrio, quando o acesso a um SLSB remoto,ele pode ser acessado tanto por aplicaes que estejamno mesmo servidor de aplicao quanto aplicaes queno estejam.

    A definio do tipo de acesso realizada atravs dasanotaes: @Local e @Remote

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    14/65

    Desenvolvimento de Aplicaes MulticamadasPro C o art ns

    14

    Stateless Session Beans no EJB 3 (Passo 4: Definir oStateless Session Beans no EJB 3 (Passo 4: Definir o

    tipo de acesso) - Exemplotipo de acesso) - Exemplo

    Segue o exemplo para local e remoto da

    Calculadora:

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    15/65

    Desenvolvimento de Aplicaes MulticamadasPro C o art ns

    15

    Stateless Session Beans no EJB 3.1Stateless Session Beans no EJB 3.1

    Na verso EJB 3.1, quando o acesso a um SLSB local, no mais necessrio definir uma interface Java nem utilizar a anotao@LOCAL. Ento, bastaria implementar uma classe Java com aanotao @STATELESS

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    16/65

    Desenvolvimento de Aplicaes MulticamadasPro C o art ns

    16

    Cliente local usando um SLSB - no EJB 3.1Cliente local usando um SLSB - no EJB 3.1

    Na verso 3.1, quando o acesso a um SLSB

    local, no mais necessrio definir uma interfaceJava nem utilizar a anotao @LOCAL.

    Alm disso, as regras de empacotamento foramsimplificadas. Os Session Beans podem serempacotados no mdulo web.

    Exemplo a seguir, mostra o uso do componenteCalculadoraBean por uma pequena aplicao

    cliente na web usando um servlet.

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    17/65

    Desenvolvimento de Aplicaes MulticamadasPro C o art ns

    17

    Cliente Web usando o Session Bean localCliente Web usando o Session Bean local

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    18/65

    Desenvolvimento de Aplicaes MulticamadasPro C o art ns

    18

    Cliente Java SE RemotoCliente Java SE Remoto

    Os Session Beans tambm podem ter acesso

    remotamente, ou seja, podem ser usados por aplicaesfora do mesmo servidor de aplicao.

    Quando o acesso local, podemos injetar um SLSBatravs da anotao @EJB no componente que

    necessita dos servios implementados pelo SLSB. Quando o acesso remoto, no possvel usar o

    recurso de injeo de dependncia.

    O acesso remoto pelo cliente realizado acessando o

    nome adotado pelo SLSB ao ser implantado noservidor de aplicao.

    A tecnologia que permite o acesso remoto o JNDI.

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    19/65

    Desenvolvimento de Aplicaes MulticamadasPro C o art ns

    19

    Usando o JNDI para acesso remotoUsando o JNDI para acesso remoto

    Uma aplicao Java remota deve acessar o

    servio de nomes (JNDI) do servidor de aplicaono qual o SLSB est implantado.

    O trecho de cdigo Java para fazer uma consultapor um SLSB no JNDI teria o seguinte padro:

    A aplicao cliente de posse da referncia do SLSB podechamar as operaes normalmente como se o Session Beanestivesse local. Contudo, importante ressaltar que aschamadas so remotas e portanto mais demoradas.

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    20/65

    Desenvolvimento de Aplicaes MulticamadasPro C o art ns

    20

    Stateful Session Beans (SFSB)Stateful Session Beans (SFSB)

    A ideia fundamental por trs dos SFSBs a

    necessidade de manter estado entre asexecues das regras de negcio que elesimplementam.

    Para exemplificar o conceito de SFSB considere ofuncionamento de uma aplicao web que utilizao padro Carrinho de Compras de uma lojavirtual.

    Este exemplo visto nas prximos lminas.

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    21/65

    Desenvolvimento de Aplicaes MulticamadasPro C o art ns

    21

    Carrinho de ComprasCarrinho de Compras

    As regras de negcio do carrinho podem ser

    implementado atravs de alguns mtodos.

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    22/65

    Desenvolvimento de Aplicaes MulticamadasPro C o art ns

    22

    H duas necessidades fundamentais no exemplo do

    carrinho de compras que devemos observar. Primeiro, uma instncia da classe CarrinhoBean no

    deve atender vrios clientes para no misturar produtosescolhidos por clientes diferentes.

    Segundo, os produtos adicionados devem ser mantidosentre as chamadas dos mtodos da classeCarrinhoBean.

    Em outras palavras, necessrio manter o estado do

    carrinho. Portanto, o estado do carrinho, representado pelos

    produtos adicionados, deve ser mantido em umaestrutura de dados do tipo lista ou conjunto.

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    23/65

    Desenvolvimento de Aplicaes MulticamadasPro C o art ns

    23

    Definio do SFSB CarrinhoBean no EJB 3.1Definio do SFSB CarrinhoBean no EJB 3.1

    Na verso 3.1, quando o acesso a um SFSB local, no mais

    necessrio definir uma interface Java nem utilizar a anotao @LOCAL (como

    era feito na verso anterior do EJB ). Ento, bastaria implementar uma classe Javacom a anotao @STATEFUL.

    Estrutura deconjunto pararepresentar o

    estado docarrinho

    (retenao dosprodutos em

    memria)

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    24/65

    Desenvolvimento de Aplicaes MulticamadasPro C o art ns

    24

    Sobre conjuntos (Set) em Java...Sobre conjuntos (Set) em Java...

    A classe Set um tipo de classe Interface que define

    uma coleo, ou conjunto, que no contm duplicatasde objetos. Isto , so ignoradas as adies caso oobjeto ou um objeto equivalente j exista na coleo.

    Por objetos equivalentes, entenda-se objetos que tenham

    o mesmo cdigo hash (retornado pelo mtodohashCode()) e que retornem verdadeiro na comparaofeita pelo mtodo equals().

    No garantida a ordenao dos objetos, isto , aordem de iterao dos objetos no necessariamente temqualquer relao com a ordem de insero dos objetos.Por isso, no possvel indexar os elementos porndices numricos, como em uma List.

    Leia mais emhttp://javafree.uol.com.br/artigo/847654/Collections-Framework.html

    http://javafree.uol.com.br/artigo/847654/Collections-Framework.htmlhttp://javafree.uol.com.br/artigo/847654/Collections-Framework.html
  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    25/65

    Desenvolvimento de Aplicaes MulticamadasPro C o art ns

    25

    Ciclo de Vida dos objetos StateFull Session BeanCiclo de Vida dos objetos StateFull Session Bean

    As instncias dos SFSBs so administradas pelo EJBContainer.

    Devemos entender o ciclo de vida desses objetos parautilizar corretamente a tecnologia EJB.

    Para entender mais facilmente o ciclo de vida das instncias

    dos SFSBs, devemos sempre ter em mente que cadainstncia atende apenas um cliente.

    O ciclo de vida das instncias de um SFSB possui trsestados:

    1. NO EXISTE 2. PRONTO

    3. PASSIVADO

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    26/65

    Desenvolvimento de Aplicaes MulticamadasPro C o art ns

    26

    Ciclo de vida de um Stateful Session BeanCiclo de vida de um Stateful Session Bean

    Mudanas de estado do SFSB (EstadoMudanas de estado do SFSB (Estado

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    27/65

    Desenvolvimento de Aplicaes MulticamadasPro C o art ns

    27

    Mudanas de estado do SFSB (EstadoMudanas de estado do SFSB (EstadoPronto e No Existe)Pronto e No Existe)

    Primeiramente, devemos lembrar que o EJB container

    garante o estado conversacional do Stateful SessionBean, mantendo um relacionamento de um-para-um,entre o cliente e a instncia do bean.

    Para que isso seja possvel, alocado um espao de

    memria para guardar as informaes do cliente (estadoPronto/Ready).

    Isso resulta em reservar memria para cada cliente quesolicita uma instncia do bean, tendo um gasto extra deprocessamento e espao em memria.

    A instncia do bean alocado na memria ir existir atque seja removida pelo cliente ou por time-out (estadoNo existe).

    Mudanas de estado do SFSB (EstadoMudanas de estado do SFSB (Estado

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    28/65

    Desenvolvimento de Aplicaes MulticamadasPro C o art ns

    28

    Mudanas de estado do SFSB (EstadoMudanas de estado do SFSB (EstadoPassivado)Passivado)

    Considere um sistema com 10 mil clientes solicitando instnciasdo nosso Stateful Session Bean (por exemplo, um carrinho decompras).

    Certamente, no ser preciso manter todos os carrinhos aomesmo tempo na memria principal, pois isso seria muito caro edesnecessrio.

    Deste modo, os carrinhos que esto ociosos podem ser alocadosna memria secundria, liberando memria principal e tornando ainstncia do bean adormecida (passivada).

    Quando o cliente solicitar novamente informaes do carrinho, ainstncia relativa ao cliente que estava desativada ser reativadae retornar para a memria principal pronta para uso (PRONTO).

    O que acabamos de descrever uma fase importante do ciclo devida, sendo chamado de passivao e ativao (ready), tudogerenciado pelo EJB container

    Si l t S i B

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    29/65

    Desenvolvimento de Aplicaes MulticamadasPro C o art ns

    29

    Singleton Session BeansSingleton Session Beans

    Este tipo de Session Bean surgiu na verso 3.1 do EJB.

    O objetivo de um Singleton Session Bean compartilhardados transientes entre todos os clientes (usurios) deuma aplicao EJB.

    A anotao utilizada @Singleton

    Exemplos de uso do Singleton em funcionalidades de umaplicativo:

    contabilizar o nmero de usurios conectados aplicao;

    funcionamento de um sistema de bate-papo no qual assalas so criadas dinamicamente pelos usurios durante aexecuo.

    E l d Si l t ( l l)E l d Si l t ( l l)

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    30/65

    Desenvolvimento de Aplicaes MulticamadasPro C o art ns

    30

    Exemplo de Singleton (para acesso local)Exemplo de Singleton (para acesso local)

    Classe para um representar um Chat (bate-papo).

    E l C t d d U iE l C t d d U i

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    31/65

    Desenvolvimento de Aplicaes MulticamadasPro C o art ns

    31

    Exemplo para um Contador de UsuriosExemplo para um Contador de Usurios

    O EJB Container cria apenas uma instncia para cadaSingleton Session Bean. Por padro, o EJB Container quem decide quando a criao da instncia de um SingletonSession Bean deve ser realizada. Contudo, possveldeterminar que essa criao seja realizada na inicializaoda aplicao atravs da anotao @Startup.

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    32/65

    Desenvolvimento de Aplicaes MulticamadasPro C o art ns

    32

    Exemplos de Enterprise JavaBeans

    (EJB) usando Netbeans 7 eGlassfish 3.1

    Criando e executando um cliente aplicativo noCriando e executando um cliente aplicativo no

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    33/65

    Desenvolvimento de Aplicaes MulticamadasPro C o art ns

    33

    Criando e executando um cliente aplicativo noC a do e e ecuta do u c e te ap cat o oservidor GlassFishservidor GlassFish

    Este tutorial mostra como criar um cliente aplicativo

    simples (console) e como acessar um EnterpriseJavabean (EJB) implementado para o GlassFish Server3.

    Neste tutorial, voc ir criar um aplicativo corporativo que

    contm um bean de sesso simples e um projeto debiblioteca de classe Java que contm a interface remotapara o bean da sesso.

    Voc ir ento criar um cliente aplicativo (em console)que acesse o bean da sesso atravs da interfaceremota na biblioteca da classe. A biblioteca da classe Jarque contm a interface remota adicionada ao classpathdo aplicativo corporativo e ao cliente aplicativo.

    E i d t t i lExerccios do tutorial

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    34/65

    Desenvolvimento de Aplicaes MulticamadasPro C o art ns

    34

    Exerccios do tutorialExerccios do tutorial

    Criando a biblioteca de classe Java

    Criando um mdulo EJB Criando o Bean de sesso

    Adicionando um mtodo administrativo

    Implementando o aplicativo corporativo Criando o cliente do aplicativo

    Adicionando a biblioteca da classe

    Executando o aplicativo

    Criando a biblioteca de classe JavaCriando a biblioteca de classe Java

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    35/65

    Desenvolvimento de Aplicaes MulticamadasPro C o art ns

    35

    Criando a biblioteca de classe JavaCriando a biblioteca de classe Java

    Nesta sesso voc ir criar um projeto de

    biblioteca de classe Java que ir conter ainterface 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 fcil de ser distribuda para

    quaisquer clientes que necessitem chamar o EJB.

    Os clientes que desejam acessar o EJB somenteprecisam adicionar a biblioteca JAR classpath doprojeto.

    A implementao EJB usa o mesmo JAR paraimplementar a interface.

    Criando a biblioteca de classe Java (1)Criando a biblioteca de classe Java (1)

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    36/65

    Desenvolvimento de Aplicaes MulticamadasPro C o art ns

    36

    Criando a biblioteca de classe Java (1)Criando a biblioteca de classe Java (1)

    1. Escolha Arquivo > Novo projeto e selecione Bibliotecade classe Java na categoria Java. Clique em Prximo.

    Criando a biblioteca de classe Java (2)Criando a biblioteca de classe Java (2)

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    37/65

    Desenvolvimento de Aplicaes MulticamadasPro C o art ns

    37

    Criando a biblioteca de classe Java (2)Criando a biblioteca de classe Java (2)

    2. Digite AulaEJBRemoteInterface como o nome do

    projeto. Clique em Finalizar.

    Ao finalizar o IDE criar o projeto da Biblioteca de classe Java.A seguir, voc usar um assistente para criar um bean da sesso e a interface remota paraseu bean da sesso no projeto Biblioteca de classe. O cliente aplicativo acessar o bean dasesso atravs da interface na biblioteca de classe.

    Criando um mdulo EJB e a Aplicao Corporativa (1)Criando um mdulo EJB e a Aplicao Corporativa (1)

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    38/65

    Desenvolvimento de Aplicaes MulticamadasPro C o art ns

    38

    Criando um mdulo EJB e a Aplicao Corporativa (1)Criando um mdulo EJB e a Aplicao Corporativa (1)

    Agora voc ir usar o assistente para criar um aplicativocorporativo contendo um mdulo EJB. O assistente fornece uma

    opo para criar um mdulo EJB quando voc cria o aplicativo. Em Arquivo > Novo projeto e selecione Aplicativo corporativo

    na categoria Java EE. Clique em Prximo.

    Criando um mdulo EJB e a Aplicao Corporativa (2)Criando um mdulo EJB e a Aplicao Corporativa (2)

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    39/65

    Desenvolvimento de Aplicaes MulticamadasPro C o art ns

    39

    Criando um mdulo EJB e a Aplicao Corporativa (2)Criando um mdulo EJB e a Aplicao Corporativa (2)

    2. Digite AulaEntAppEJB como o Nome do

    projeto. Clique em Prximo.

    Criando um mdulo EJB e a Aplicao Corporativa (3)Criando um mdulo EJB e a Aplicao Corporativa (3)

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    40/65

    Desenvolvimento de Aplicaes MulticamadasPro C o art ns

    40

    Criando um mdulo EJB e a Aplicao Corporativa (3)Criando um mdulo EJB e a Aplicao Corporativa (3)

    3. Selecione GlassFish Server 3 para o Servidor e confirme averso do Java EE 6.

    4. Confirme se Criar mdulo EJB est selecionado (veja se AulaEntAppEJB-ejb) e cancele a seleo de Criar mdulo deaplicativo da Web. Clique em Finalizar.

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    41/65

    Desenvolvimento de Aplicaes MulticamadasPro C o art ns

    41

    Ao finalizar o processo, o IDE cria um aplicativo corporativo eum mdulo EJB. Na janela Projetos, voc pode ver que um

    projeto de mdulo EJB est listado sob o n Mdulos Java EE doprojeto de aplicativo corporativo.

    Aplicativo corporativo

    Mdulo EJB

    Biblioteca de classes

    Criando o Bean de sesso (1)Criando o Bean de sesso (1)

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    42/65

    Desenvolvimento de Aplicaes MulticamadasPro C o art ns

    42

    Criando o Bean de sesso (1)Criando o Bean de sesso (1)

    Neste exerccio, voc usar um assistente para criar umbean da sesso controlado pelo projeto do mduloEJB. No assistente voc ir tambm criar uma interfaceremota para o bean da sesso no projeto biblioteca daclasse.

    1. Clique com o boto direito do mouse no projeto do mdulo EJB(o AulaEntAppEJB-ejb) e escolha Novo > Bean da sesso.

    Criando o Bean de sesso (2)Criando o Bean de sesso (2) Digite Me SessionBean como o Nome do EJB

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    43/65

    Desenvolvimento de Aplicaes MulticamadasPro C o art ns

    43

    Digite MeuSessionBean como o Nome do EJB.

    Digite ejb para Pacote.

    Selecione Sem estado (Stateless) para o Tipo de sesso. Selecione a opo Remota para Criar interface.

    Selecione o projeto AulaEJBRemoteInterface na lista suspensa. Cliqueem Finalizar.

    Bean de sesso criado...Bean de sesso criado...

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    44/65

    Desenvolvimento de Aplicaes MulticamadasPro C o art ns

    44

    Bean de sesso criado...Bean de sesso criado...

    No fim, o IDE cria o bean da sesso no pacote ejb nomdulo EJB e abre a classe no editor. Voc pode verque a classe MeuSessionBean implementa a interfaceMeuSessionBeanRemote e que oAulaEJBRemoteInterface JAR foi adicionado comouma biblioteca no mdulo EJB.

    O assistente tambm cria a interface remota denominadaMeuSessionBeanRemote no pacote ejb do projetoAulaEJBRemoteInterface. O IDE adicionaautomaticamente a Biblioteca da API do Java EE 6 API

    que necessria para a interface EJB.

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    45/65

    Desenvolvimento de Aplicaes MulticamadasPro C o art ns

    45

    Adicionando um mtodo no bean de sessoAdicionando um mtodo no bean de sesso

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    46/65

    Desenvolvimento de Aplicaes MulticamadasPro C o art ns

    46

    Adicionando um mtodo no bean de sesso

    Agora voc ir criar um mtodo de negcio simples nobean da sesso que retorna uma sequncia decaracteres.

    Clique com o boto direito do mouse no editor deMeuSessionSession e escolha Inserir cdigo eselecione Adicionar mtodo administrativo.

    Digite getResultado como o nome do mtodo e Stringcomo o tipo de retorno. Clique em OK.

    Faa as seguintes alteraes para modificar o mtodo

    getResultado para retornar uma sequncia decaracteres.

    A classe deve ter uma aparncia semelhante ao cdigoda prxima figura.

    Adicionando um mtodo no bean de sessoAdicionando um mtodo no bean de sesso

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    47/65

    Desenvolvimento de Aplicaes MulticamadasPro C o art ns

    47

    Agora voc ir criar um mtodo de negcio simples no bean da sesso queretorna uma sequncia de caracteres.

    1. Clique com o boto direito do mouse no editor de MeuSessionBean e

    escolha Inserir cdigo e selecione Adicionar mtodo de negcio. 2. Digite getResultado como o nome do mtodo e String como o tipo de

    retorno. Clique em OK.

    Corrigindo o mtodo...Corrigindo o mtodo...

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    48/65

    Desenvolvimento de Aplicaes MulticamadasPro C o art ns

    48

    Faa as seguintes alteraes para modificar o mtodogetResultado para retornar uma sequncia de caracteres.

    A classe deve ter uma aparncia semelhante figura aseguir. Em seguida, Salve as alteraes.

    Consideraes...Consideraes...

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    49/65

    Desenvolvimento de Aplicaes MulticamadasPro C o art ns

    49

    Agora voc tem um aplicativo corporativo com um EJB simplesque exposto atravs de uma interface remota.

    Voc tambm tem uma classe independente que contm ainterface EJB que pode ser distribuda para outrosdesenvolvedores.

    Os desenvolvedores podem adicionar a biblioteca em seus

    projetos, caso desejem se comunicar com o EJB que est expostopela interface remota e no precisam ter o cdigo-fonte para oEJB.

    Quando voc modifica o cdigo para o EJB, somente precisadistribuir o JAR da biblioteca de classes (das interfaces)atualizada, caso quaisquer das interfaces sejam modificadas.

    Quando voc usa a caixa de dilogo Adicionar mtodoadministrativo, o IDE automaticamente implementa o mtodo nainterface remota.

    Implementando o aplicativo corporativoImplementando o aplicativo corporativo

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    50/65

    Desenvolvimento de Aplicaes MulticamadasPro C o art ns

    50

    p p pp p p

    Agora, voc pode construir e executar o aplicativocorporativo. Quando voc executa o aplicativo, o IDE irimplementar o arquivo JAR no servidor.

    Clique com o boto direito do mouse no aplicativocorporativo AulaEntAppEJB e escolha Implantar.

    Implementando o aplicativo corporativoImplementando o aplicativo corporativo

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    51/65

    Desenvolvimento de Aplicaes MulticamadasPro C o art ns

    51

    p p p

    Quando voc clica em Implantar, o IDE constri o aplicativocorporativo e implementa o arquivo EAR no servidor. Caso voc

    examine a janela Arquivos, poder ver que oAulaEJBRemoteInterface JAR est implementado com oaplicativo.

    Na janela Servios, caso voc expanda o n Aplicativos doGlassFish Server 3, poder ver que o EntAppEJB foiimplementado.

    Criando o cliente do aplicativoCriando o cliente do aplicativo

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    52/65

    Desenvolvimento de Aplicaes MulticamadasPro C o art ns

    52

    Nesta momento, voc ir criar um cliente de

    aplicativo corporativo. Ao criar o cliente deaplicativo, o projeto precisa da biblioteca declasse Java, AulaEJBRemoteInterface, parapoder referenciar o EJB.

    Quando voc executa o aplicativo corporativo, oIDE ir empacotar o cliente de aplicativo e abiblioteca de classe Java JAR no arquivo EAR.Os JARs da biblioteca precisam ser empacotadas

    em um EAR com o cliente de aplicativo se vocdeseja acessar os JARs a partir do cliente deaplicativo.

    Criando a aplicao corporativa cliente (1)Criando a aplicao corporativa cliente (1) Voc pode criar e executar um cliente de aplicativo como um

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    53/65

    Desenvolvimento de Aplicaes MulticamadasPro C o art ns

    53

    Voc pode criar e executar um cliente de aplicativo como umprojeto independente.

    O cliente de aplicativo no mais precisa ser implementado eexecutado como parte de um aplicativo corporativo.

    Escolha Arquivo > Novo projeto e selecione Cliente doaplicativo corporativo na categoria Java EE. Clique em Prximo

    Criando a aplicao corporativa cliente (2)Criando a aplicao corporativa cliente (2)

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    54/65

    Desenvolvimento de Aplicaes MulticamadasPro C o art ns

    54

    Digite AulaEntAppClient como o Nome do

    projeto. Clique em Prximo.

    Criando a aplicao corporativa cliente (3)Criando a aplicao corporativa cliente (3)

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    55/65

    Desenvolvimento de Aplicaes MulticamadasPro C o art ns

    55

    3. Selecione GlassFish Server 3.1 como o

    servidor. Clique em Finalizar. Observe que no preciso adicionar o projeto em um

    aplicativo corporativo

    Classe Main do aplicativo clienteClasse Main do aplicativo cliente

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    56/65

    Desenvolvimento de Aplicaes MulticamadasPro C o art ns

    56

    Quando voc clicar em Finalizar, o IDE criar o projetode cliente de aplicativo e abrir a classe Main.java noeditor (aplicativo do tipo console).

    Adicionando a biblioteca da classeAdicionando a biblioteca da classe

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    57/65

    Desenvolvimento de Aplicaes MulticamadasPro C o art ns

    57

    A biblioteca da classe que contm a interface

    remota agora precisa ser adicionada classpathdo projeto para permitir que o cliente de aplicativoreferencie o EJB.

    O projeto da biblioteca da classe deve estar

    aberto, para que voc possa usar a caixa dedilogo Chamar bean corporativo, para ajud-loa gerar o cdigo para chamar o EJB.

    Adicionando a biblioteca da classe (1)Adicionando a biblioteca da classe (1)

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    58/65

    Desenvolvimento de Aplicaes MulticamadasPro C o art ns

    58

    1. Abra a classe Main.java no editor.

    2. Clique com o boto direito do mouse no cdigo-fonte eescolha Inserir cdigo e selecione Chamar EnterpriseBean para abrir a caixa de dilogo Chamar o beancorporativo.

    Adicionando a biblioteca da classe (3)Adicionando a biblioteca da classe (3)

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    59/65

    Desenvolvimento de Aplicaes MulticamadasPro C o art ns

    59

    3. Expanda o n do projeto AulaEntAppEJB e

    selecione MeuSessionBean. Clique em OK.

    Quando voc clica em OK, o IDE adiciona a anotao @EJB noMain.java.

    Chamando o mtodo remotoChamando o mtodo remoto

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    60/65

    Desenvolvimento de Aplicaes MulticamadasPro C o art ns

    60

    Modifique o mtodo main para recuperar a

    sequncia de caracteres do mtodogetResultado atravs da interfaceMeuSessionBeanRemote. Salve as alteraes.

    Executando o clienteExecutando o cliente

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    61/65

    Desenvolvimento de Aplicaes MulticamadasPro C o art ns

    61

    Voc agora pode executar o cliente de aplicativo aoconstruir e implementar o projeto AulaEntAppClient.

    Clique com o boto direito do mouse no projetoEntAppClient na janela Projetos e selecione Executar.

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    62/65

    Desenvolvimento de Aplicaes MulticamadasPro C o art ns

    62

    Atividade Prtica

    Acrescentando cliente webAcrescentando cliente web

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    63/65

    Desenvolvimento de Aplicaes MulticamadasPro C o art ns

    63

    Aproveitando o aplicativo anterior, implemente um

    cliente web para exibir a mensagem em umapgina web. Voc pode usar um Servlet para chamar o mtodo

    remoto getResultado atravs da interface

    MeuSessionBeanRemote.

    Aplicativo Corporativo CalculadoraAplicativo Corporativo Calculadora

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    64/65

    Desenvolvimento de Aplicaes MulticamadasPro C o art ns

    64

    Aplique o mesmo processo para implementar o

    aplicativo da Calculadora visto nos exemplos daaula. Faa um cliente console chamar as operaes da

    calculadora (somar, subtrair, multiplicar e dividir)

    Faa um cliente web chamar as operaes dacalculadora.

    RefernciasReferncias

  • 7/31/2019 u04 - Enterprise JavaBeans(EJB) Parte1

    65/65

    Desenvolvimento de Aplicaes MulticamadasPro C o art ns

    65

    BURKE, Bill and MONSON-HAEFEL, Richard."Enterprise JavaBeans 3.0". O'Reilly. 5 ed. 2006.760 p.

    Tecnologia JEE: http://docs.oracle.com/javaee/

    Tutorial do JEE 6 :http://docs.oracle.com/javaee/6/tutorial/doc/

    http://docs.oracle.com/javaee/6/tutorial/doc/http://docs.oracle.com/javaee/6/tutorial/doc/