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

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

Application Server & EJB3

Apresentações semelhantes


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

1 Application Server & EJB3
Wesley Gonçalves da Silva

2 Enterprise Javabeans Visão Geral

3 Visão Geral 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 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 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 Exercício I

7 Exercício II

8 Exemplo

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

10 EJB e o seu lugar no “mundo”

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 O EJB na sua vida! EJB: O que significa dizer que o EJB é um POJO?

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 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 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 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) public boolean byCredit(Customer customer, CreditCardDO card, double amount) throws PaymentException; } @Remote public interface ProcessPaymentRemote extends ProcessPayment{ @Local public interface ProcessPaymentLocal extends ProcessPayment{

17 Tipos de EJB – Session Beans
@Stateless public class ProcessPaymentBean implements ProcessPaymentRemote, ProcessPaymentLocal { final public static String CASH = "CASH"; final public static String CREDIT = "CREDIT"; final public static String CHECK = "CHECK"; @Resource(mappedName="titanDB") DataSource dataSource; @Resource(name="min") 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) 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 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 Tipos de EJB – Session Beans

20 Tipos de EJB – Session Beans

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 Injeção de Dependência
Para que serve? Diminui o esforço de localização de objetos/recursos os quais sua classe depende

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 metodoNegocio(){ @Resource private DataSource meuDB; public ClasseNegocio(){} }

24 Injeção de Dependência
@Stateless public class ProcessPaymentBean implements ProcessPaymentRemote, ProcessPaymentLocal { final public static String CASH = "CASH"; final public static String CREDIT = "CREDIT"; final public static String CHECK = "CHECK"; @Resource(mappedName="titanDB") DataSource dataSource; @Resource(name="min") int minCheckNumber; :

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 O Lugar das coisas

27 O Lugar das coisas Apresentação D O M Í N I Negócio Infra/ Util
Persistência Infra/ Util

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 Transação

30 Transação

31 Transação e Exceções

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 Exercícios - Especial Considerando o modelo a seguir faça:

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 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 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"

Apresentações semelhantes


Anúncios Google