Escolar Documentos
Profissional Documentos
Cultura Documentos
o em Software Livre
UNID 4
Assuntos
Enterprise JavaBeans (EJB) Beans de sesso Exerccios
componentes do lado do servidor para o Java Plataform Enterprise Edition (Java EE).
As aplicaes EJB executam dentro de um Continer
EJB.
disponveis no mercado que podemos utilizar. Neste curso, utilizaremos a implementao do Glassfish V3.
MDB)
Beans de sesso
Session Beans
Os Session Beans so responsveis pela execuo das
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
forma:
Local: na mesma mquina (o cliente est na mesma mquina
do servidor)
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.
Desenvolvimento de Aplicaes Multicamadas Prof. Cludio Martins
algumas operaes matemticas bsicas. Uma possvel interface de utilizao para esse SLSB seria:
10
11
12
Stateless Session Beans no EJB 3 (Passo 4: Definir o 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 mesmo servidor de aplicao que ele est hospedado.
ele pode ser acessado tanto por aplicaes que estejam no mesmo servidor de aplicao quanto aplicaes que no estejam. anotaes: @Local e @Remote
13
Calculadora:
14
mais necessrio definir uma interface Java nem utilizar a anotao @LOCAL. Ento, bastaria implementar uma classe Java com a anotao @STATELESS
15
local, no mais necessrio definir uma interface Java nem utilizar a anotao @LOCAL.
Alm disso, as regras de empacotamento foram
16
17
remotamente, ou seja, podem ser usados por aplicaes fora do mesmo servidor de aplicao. atravs da anotao @EJB no componente que necessita dos servios implementados pelo SLSB.
18
A aplicao cliente de posse da referncia do SLSB pode chamar as operaes normalmente como se o Session Bean estivesse local. Contudo, importante ressaltar que as chamadas so remotas e portanto mais demoradas.
Desenvolvimento de Aplicaes Multicamadas Prof. Cludio Martins
19
necessidade de manter estado entre as execues das regras de negcio que eles implementam.
Para exemplificar o conceito de SFSB considere o
funcionamento de uma aplicao web que utiliza o padro Carrinho de Compras de uma loja virtual.
Este exemplo visto nas prximos lminas.
20
Carrinho de Compras
As regras de negcio do carrinho podem ser
21
deve atender vrios clientes para no misturar produtos escolhidos por clientes diferentes. entre as chamadas dos mtodos da classe CarrinhoBean.
carrinho.
produtos adicionados, deve ser mantido em uma estrutura de dados do tipo lista ou conjunto.
Desenvolvimento de Aplicaes Multicamadas Prof. Cludio Martins
22
Estrutura de conjunto para representar o estado do carrinho (retenao dos produtos em memria)
23
uma coleo, ou conjunto, que no contm duplicatas de objetos. Isto , so ignoradas as adies caso o objeto ou um objeto equivalente j exista na coleo.
Por objetos equivalentes, entenda-se objetos que tenham
o mesmo cdigo hash (retornado pelo mtodo hashCode()) e que retornem verdadeiro na comparao feita pelo mtodo equals().
ordem de iterao dos objetos no necessariamente tem qualquer relao com a ordem de insero dos objetos. Por isso, no possvel indexar os elementos por ndices numricos, como em uma List.
Leia mais em http://javafree.uol.com.br/artigo/847654/Collections-Framework.html
Desenvolvimento de Aplicaes Multicamadas Prof. Cludio Martins
24
Container.
dos SFSBs, devemos sempre ter em mente que cada instncia atende apenas um cliente. estados:
25
26
garante o estado conversacional do Stateful Session Bean, mantendo um relacionamento de um-para-um, entre o cliente e a instncia do bean.
solicita uma instncia do bean, tendo um gasto extra de processamento e espao em memria.
27
mesmo tempo na memria principal, pois isso seria muito caro e desnecessrio. na memria secundria, liberando memria principal e tornando a instncia do bean adormecida (passivada).
instncia relativa ao cliente que estava desativada ser reativada e retornar para a memria principal pronta para uso (PRONTO).
O que acabamos de descrever uma fase importante do ciclo de
vida, sendo chamado de passivao e ativao (ready), tudo gerenciado pelo EJB container
Desenvolvimento de Aplicaes Multicamadas Prof. Cludio Martins
28
aplicativo:
29
30
Singleton Session Bean. Por padro, o EJB Container quem decide quando a criao da instncia de um Singleton Session Bean deve ser realizada. Contudo, possvel determinar que essa criao seja realizada na inicializao da aplicao atravs da anotao @Startup.
31
32
que acesse o bean da sesso atravs da interface remota na biblioteca da classe. A biblioteca da classe Jar que contm a interface remota adicionada ao classpath do aplicativo corporativo e ao cliente aplicativo.
Desenvolvimento de Aplicaes Multicamadas Prof. Cludio Martins
33
Exerccios 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
Executando o aplicativo
34
35
36
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 para seu bean da sesso no projeto Biblioteca de classe. O cliente aplicativo acessar o bean da sesso atravs da interface na biblioteca de classe.
Desenvolvimento de Aplicaes Multicamadas Prof. Cludio Martins
37
corporativo 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
38
39
verso do Java EE 6.
4. Confirme se Criar mdulo EJB est selecionado (veja se
40
um mdulo EJB. Na janela Projetos, voc pode ver que um projeto de mdulo EJB est listado sob o n Mdulos Java EE do projeto de aplicativo corporativo. Biblioteca de classes Aplicativo corporativo
Mdulo EJB
41
bean da sesso controlado pelo projeto do mdulo EJB. No assistente voc ir tambm criar uma interface remota para o bean da sesso no projeto biblioteca da classe.
1. Clique com o boto direito do mouse no projeto do mdulo EJB (o AulaEntAppEJB-ejb) e escolha Novo > Bean da sesso.
42
Selecione Sem estado (Stateless) para o Tipo de sesso. Selecione a opo Remota para Criar interface. Selecione o projeto AulaEJBRemoteInterface na lista suspensa. Clique
em Finalizar.
43
mdulo EJB e abre a classe no editor. Voc pode ver que a classe MeuSessionBean implementa a interface MeuSessionBeanRemote e que o AulaEJBRemoteInterface JAR foi adicionado como uma biblioteca no mdulo EJB.
O assistente tambm cria a interface remota denominada
MeuSessionBeanRemote no pacote ejb do projeto AulaEJBRemoteInterface. O IDE adiciona automaticamente a Biblioteca da API do Java EE 6 API que necessria para a interface EJB.
44
45
da prxima figura.
46
47
Corrigindo o mtodo...
Faa as seguintes alteraes para modificar o mtodo
48
Consideraes...
Agora voc tem um aplicativo corporativo com um EJB simples
projetos, caso desejem se comunicar com o EJB que est exposto pela interface remota e no precisam ter o cdigo-fonte para o EJB. distribuir o JAR da biblioteca de classes (das interfaces) atualizada, caso quaisquer das interfaces sejam modificadas.
49
corporativo. Quando voc executa o aplicativo, o IDE ir implementar o arquivo JAR no servidor. corporativo AulaEntAppEJB e escolha Implantar.
50
corporativo e implementa o arquivo EAR no servidor. Caso voc examine a janela Arquivos, poder ver que o AulaEJBRemoteInterface JAR est implementado com o aplicativo. GlassFish Server 3, poder ver que o EntAppEJB foi implementado.
51
aplicativo corporativo. Ao criar o cliente de aplicativo, o projeto precisa da biblioteca de classe Java, AulaEJBRemoteInterface, para poder referenciar o EJB.
Quando voc executa o aplicativo corporativo, o
IDE ir empacotar o cliente de aplicativo e a biblioteca de classe Java JAR no arquivo EAR. Os JARs da biblioteca precisam ser empacotadas em um EAR com o cliente de aplicativo se voc deseja acessar os JARs a partir do cliente de aplicativo.
Desenvolvimento de Aplicaes Multicamadas Prof. Cludio Martins
52
projeto independente.
53
54
aplicativo corporativo
55
56
remota agora precisa ser adicionada classpath do projeto para permitir que o cliente de aplicativo referencie o EJB.
O projeto da biblioteca da classe deve estar
aberto, para que voc possa usar a caixa de dilogo Chamar bean corporativo, para ajud-lo a gerar o cdigo para chamar o EJB.
57
escolha Inserir cdigo e selecione Chamar Enterprise Bean para abrir a caixa de dilogo Chamar o bean corporativo.
58
59
60
Executando o cliente
Voc agora pode executar o cliente de aplicativo ao
61
Atividade Prtica
62
63
64
Referncias
BURKE, Bill and MONSON-HAEFEL, Richard.
http://docs.oracle.com/javaee/6/tutorial/doc/
65