A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

SessionBeans Marco Antonio Arquiteto de Software.

Apresentações semelhantes


Apresentação em tema: "SessionBeans Marco Antonio Arquiteto de Software."— Transcrição da apresentação:

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

12

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

17

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)

19

20 Configurações do XDoclet No menu Window -> Preferences, vamos configurar algumas propridades do XDoclet

21

22 ejbdoclet Clique na opção JBoss -> Edit

23

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

34

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?


Carregar ppt "SessionBeans Marco Antonio Arquiteto de Software."

Apresentações semelhantes


Anúncios Google