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

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

Application Server & EJB3 Wesley Gonçalves da Silva

Apresentações semelhantes


Apresentação em tema: "Application Server & EJB3 Wesley Gonçalves da Silva"— Transcrição da apresentação:

1 Application Server & EJB3 Wesley Gonçalves da Silva

2 Enterprise Javabeans Visão Geral

3 3 EJB é uma plataforma para construção de aplicações corporativas portátil, reutilizável e escalável que utiliza a linguagem java. Grande foco em permitir que seja construído aplicações corporativas sem a necessidade de reinventar serviços “básicos” (transação, segurança, persistência...) Ou seja: Foco no negócio, sem a perda de tempo em questões de infra-estrutura

4 4 Visão Geral Pela Sun: EJB é um componente de server-side responsável pela lógica de negócio. Dessa forma uma única classe EJB é um componente O ideal é que ele encapsule o comportamento da aplicação, de modo que o foco seja em conhecer a sua interface de negócio, os serviços que ele disponibiliza Um componente de negócio pode ser reutilizável, permitindo que outros módulos e/ou clientes possam usar sem maiores problemas

5 5 Visão Geral Desenvolvimento orientado a interface Preocupação com os serviços oferecidos e não com a implementação Poderia trocar de implementação sem afetar os clientes Cuidado para não programar procedural Códigos longos Mais difíceis de manter Menos flexíveis

6 6 Exercício I

7 7 Exercício II

8 8 Exemplo

9 9 Para decidir qual utilizar, geralmente utiliza-se uma Fábrica (Design Pattern)

10 10 EJB e o seu lugar no “mundo”

11 11 EJB e o seu lugar no “mundo” Facilidade de uso Acúmulo de soluções integradas (JTA/ JMS/ JNDI/ Injeção de dependência) Padrão aberto – Java EE Suporte amplo de fornecedores – Oracle/ IBM/ JBoss Base de código de alta qualidade e estável Cluster/ Balanceamento de carga

12 12 O EJB na sua vida! EJB : O que significa dizer que o EJB é um POJO?

13 13 Serviços A especificação define os seguintes serviços: Transação Segurança Persistência Remotabilidade (RMI/ WS-*) Interceptadores Timers Gerenciamento de Estado Mensageria

14 14 Tipos de EJB – Session Beans Tem o propósito de executar operações de negócio, a partir da chamada de um cliente “Sessão” – significa que uma instância está disponível durante “uma unidade de trabalho” e não está disponível a uma queda de servidor ou parada temporária

15 15 Tipos de EJB – Session Beans Statefull Salva o estado entre as invocações do cliente Exemplo clássico – Carrinho de compras Stateless Cada invocação do cliente é independente da outra Seus serviços podem ser expostos como webservices ATENÇÃO AO CÓDIGO PROCEDURAL!!!

16 16 Tipos de EJB – Session Beans public interface ProcessPayment { public boolean byCheck(Customer customer, CheckDO check, double amount) throws PaymentException; public boolean byCash(Customer customer, double amount) throws PaymentException; public boolean byCredit(Customer customer, CreditCardDO card, double amount) throws PaymentException; public interface ProcessPaymentRemote extends ProcessPayment{ public interface ProcessPaymentLocal extends ProcessPayment{ }

17 17 Tipos de EJB – Session public class ProcessPaymentBean implements ProcessPaymentRemote, ProcessPaymentLocal { final public static String CASH = "CASH"; final public static String CREDIT = "CREDIT"; final public static String CHECK = DataSource int minCheckNumber; public boolean byCash(Customer customer, double amount) throws PaymentException { return process(customer.getId( ), amount, CASH, null, -1, null, null); } public boolean byCheck(Customer customer, CheckDO check, double amount) throws PaymentException { if (check.checkNumber > minCheckNumber) { return process(customer.getId( ), amount, CHECK, check.checkBarCode, check.checkNumber, null, null); }else{ throw new PaymentException("Check number is too low. Must be at least "+minCheckNumber); }

18 18 Tipos de EJB – Session Beans public boolean byCredit(Customer customer, CreditCardDO card, double amount) throws PaymentException { : } private boolean process(int customerID, double amount, String type, String checkBarCode, int checkNumber, String creditNumber, java.sql.Date creditExpDate) throws PaymentException { : }

19 19 Tipos de EJB – Session Beans

20 20 Tipos de EJB – Session Beans

21 21 Injeção de Dependência JNDI - Java Naming and Directory Interface Interface padronizada para busca de informações (objetos) em diretórios (forma de organização) É uma “página amarela”

22 22 Injeção de Dependência Para que serve? Diminui o esforço de localização de objetos/recursos os quais sua classe depende

23 23 Injeção de Dependência public class ClasseNegocio{ public String metodoNegocio(){ private DataSource meuDB; public metodoNegocio(){ InitialContext ic = new InitialContext(); meuDB = (DataSource) ic.lookup(“jdbc/meuDB”); } public class ClasseNegocio{ public String private DataSource meuDB; public ClasseNegocio(){} }

24 24 Injeção de public class ProcessPaymentBean implements ProcessPaymentRemote, ProcessPaymentLocal { final public static String CASH = "CASH"; final public static String CREDIT = "CREDIT"; final public static String CHECK = DataSource int minCheckNumber; :

25 25 Injeção de Dependência Acontece que... A injeção de basicamente está relacionada a recursos JNDI O que quer dizer que não consigo livremente injetar o POJO em um outro JNDI APPLICATION SESSION REQUEST

26 26 O Lugar das coisas

27 27 O Lugar das coisas DOMÍNIODOMÍNIO Apresentação Negócio Persistência Infra/ Util Infra/ Util

28 28 O Lugar das coisas Uma sugestão inocente Caso de Uso Interfaces de negócio Modelo de domínio Realização de cada caso de uso aplicando as soluções técnicas necessárias (ex.: design patterns) Testes Unitários Pode ser baseado na interface de negócio Mas também pode ser testado o modelo de domínio de forma separada Atenção especial aos requisitos não-funcionais, pois eles são transversais aos funcionais

29 29 Transação

30 30 Transação

31 31 Transação e Exceções

32 32 Transação e Exceções Tipicamente, uma exceção de aplicação é uma que o cliente deve tratar, para decidir que ação tomar, tem haver com a lógica de negócio. Um exceção de Sistema trata-se de uma falha maior (queda do BD) Em EJB Checked Exceptions – Aplicação Unchecked – Sistema (e java.rmi.RemoteException ) e são enviadas ao cliente uma javax.ejb.EJBException

33 33 Exercícios - Especial Considerando o modelo a seguir faça:

34 34 Exercícios - Especial 1) Crie todas as classes devidamente anotadas – padrão jpa – e crie o respectivo modelo físico no banco de dados 2) Crie os “Manager´s” para o modelo. Defina o seu critério e justifique a sua escolha para cada “manager” criado. 3) Defina uma padronização para as suas consultas nomeadas. 4) Crie consultas nomeadas para recuperar: a)Pessoas que nasceram num intervalo de datas; b)Lista de telefones de quem mora no bairro “COPACABANA”; c)A lista de pessoas que estão pendentes de devolução; d)A lista de pessoas que possuem contas começadas com “A”; e)Itens mais emprestados.

35 35 Exercícios - Especial 5) Crie consultas dinâmicas considerando os seguintes filtros: a) Pessoas com nome contendo uma letra qualquer e/ou nascimento em uma determinada data 6) Escolha duas consultas da questão 4 e as escreva usando consulta nomeada nativa. Compare com as consultas JPQL e dê sua impressão. 7) Escreva testes unitários para “exercitar” todos os métodos dos seus managers, inclusive para o acesso as consultas.

36 36 Exercícios - Especial 8) Considerando que tenho 3 grandes interesses de negócio para o modelo: a) cadastro de contatos; b) o controles de empréstimos e c) o controle das contas das pessoas jurídicas; defina: 8.1) As interfaces de negócio 8.2) A cada implementação de ejb considerando o tipo de transação que terá que ser usada para cada serviço de negócio, com a justificativa comentada no código.

37 JPA – Java Persistence API Perguntas e Respostas


Carregar ppt "Application Server & EJB3 Wesley Gonçalves da Silva"

Apresentações semelhantes


Anúncios Google