Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouAmanda Cadenas Alterado mais de 9 anos atrás
1
SessionBeans Marco Antonio Arquiteto de Software
2
Introdução Componentes reutilizáveis que processam a regra do negócio. Contém métodos que representam ações (validarCpf, adicionarProduto, listarUsuarios). Seu ciclo de vida se resume a uma sessão. São objetos transientes, pois não são persistidos.
3
O que é importante J2EE é uma especificação bastante completa, prevendo todas as situações possíveis. Na prática, a maioria dessas situações é evitada, pois vamos usar boas práticas de programação, estratégias amplamente difundidas (padrões de projeto). Nosso exemplo será direcionado a uma típica aplicação EJB, sem a imensa maioria dos detalhes que fazem parte da teoria da especificação.
4
Tipos de session beans Stateless – não mantém o valor dos atributos entre chamadas. É compartilhado entre clientes. Statefull – mantém o valor dos atributos entre chamadas. Consome muita memória, pois é criado um objeto para cada cliente. Não recomendado para sistemas corporativos.
5
Aplicações J2EE Construir aplicações J2EE de boa qualidade exige conhecimento de: –Design patterns –Frameworks –Detalhes do funcionamento do AppServer
6
Aplicações J2EE Aplicações J2EE geram muito código (interfaces home, remote, local) Criar descritores EJB e WEB Construir classes de apoio e utilitários
7
Aplicações J2EE Utilize ferramentas como XDoclet, Ant, NetBeans, Eclipse Automatize o máximo que conseguir
8
Aplicações J2EE Trabalhar com equipes heterogêneas, muitas vezes terceirizadas, requer esforço extra para garantir código de boa qualidade
9
XDoclet Para automatizar o processo de desenvolvimento iremos utilizar o XDoclet Na figura podemos ver as configurações necessárias
10
O projeto Vamos criar nosso projeto J2EE conforme o exemplo
11
Projeto de exemplo O nome do projeto é SistemaBancario As demais configurações podem ser conferidas na figura a seguir
13
New Server Configuração do servidor de aplicação
14
Diretório do JBoss Informe o diretório raíz do JBoss
15
Configuração Dados sobre endereço IP, porta do servidor, porta do JNDI e tipo de configuração do servidor
16
Facets Mude a versão do Java para 5.0
18
Projeto cliente Uma boa maneira de organizar o projeto é a criação de vários subprojetos Nesse exemplo serão três: –SistemaBancario (núcleo da aplicação) –SistemaBancarioCliente (classes do cliente) –SistemaBancarioEAR (dados da aplicação)
20
Configurações do XDoclet No menu Window -> Preferences, vamos configurar algumas propridades do XDoclet
22
ejbdoclet Clique na opção JBoss -> Edit
24
webdoclet Clique na opção JBoss -> Edit
25
Criação de EJB O mecanismo padrão para geração de EJB é o XDoclet Por isso é a única opção disponível
26
Session bean EJB da camada de negócio Responsável pelas regras de negócio da aplicação
27
EJB Dados da classe (projeto, package, nome)
28
EJB Dados dos arquivos de configuração Esses nomes serão registrados no JBoss
29
EJB Desmarque a opção “Abstract” Nosso primeiro EJB está pronto
30
Estrutura de arquivos A única classe que criamos foi a FachadaContaCorrente Bean Todas as demais foram geradas pelo XDoclet de forma automatizada
31
Servidor Mude para a perpectiva Java EE Abra a guia Servers e clique com o botão direito do mouse no servidor disponível
32
Projetos Adicione nosso projeto no servidor
33
Configuração de startup No menu Run -> Open Run Dialog temos as configurações de memória do servidor Esse tipo de informação faz parte do tuning da aplicação (ajuste fino) Uma alternativa é deixar tudo em branco
35
Start do servidor Clique no botão “Start the server” e acompanhe as mensagens
36
Arquivos gerados
37
jndi.properties Esse arquivo de propriedades indica os dados do servidor que tem os serviços disponíveis
38
jndi.properties # java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory java.naming.provider.url=jnp://localhost:1099 java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
39
Cliente O último passo é a criação do cliente que irá acessar o serviço criado
40
Cliente package net.sistemabancario.negocio.cliente; import javax.naming.Context; import javax.naming.InitialContext; import javax.rmi.PortableRemoteObject; import net.sistemabancario.negocio.FachadaContaCorrente; import net.sistemabancario.negocio.FachadaContaCorrenteHome; public class FachadaContaCorrenteCliente { public static void main(String[] args) { try { Context ctx = new InitialContext(); Object obj = ctx.lookup(FachadaContaCorrenteHome.JNDI_NAME); FachadaContaCorrenteHome home = (FachadaContaCorrenteHome) PortableRemoteObject.narrow(obj, FachadaContaCorrenteHome.class); FachadaContaCorrente fachada = home.create(); fachada.foo(""); } catch (Exception e) { e.printStackTrace(); }
41
Novo método da fachada /** * @ejb.interface-method view-type = "remote" */ public void sacar(String numeroDaConta, Double valorSacado) { System.out.println("Número da conta: " + numeroDaConta); System.out.println("Valor sacado: " + valorSacado); }
42
Publishing Quando o status do servidor estiver diferente de Synchronized você deve publicar a aplicação de novo
43
Mensagem de deploy O diretório de deploy do JBoss está listado logo abaixo
44
Cliente v2.0 package net.sistemabancario.negocio.cliente; import javax.naming.Context; import javax.naming.InitialContext; import javax.rmi.PortableRemoteObject; import net.sistemabancario.negocio.FachadaContaCorrente; import net.sistemabancario.negocio.FachadaContaCorrenteHome; public class FachadaContaCorrenteCliente { public static void main(String[] args) { try { Context ctx = new InitialContext(); Object obj = ctx.lookup(FachadaContaCorrenteHome.JNDI_NAME); FachadaContaCorrenteHome home = (FachadaContaCorrenteHome) PortableRemoteObject.narrow(obj, FachadaContaCorrenteHome.class); FachadaContaCorrente fachada = home.create(); fachada.foo(""); fachada.sacar(“7594-9”, 350.0); } catch (Exception e) { e.printStackTrace(); }
45
Execução do cliente Você pode rodar o JBoss dentro do Eclipse ou direto no console (bem mais rápido, mas sem debug)
46
Saída no console
47
Dúvidas?
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.