Introducao EJB 3

15,065 views

Published on

MC09 - Introdução EJB 3
Globalcode / VOffice

Published in: Technology
2 Comments
20 Likes
Statistics
Notes
No Downloads
Views
Total views
15,065
On SlideShare
0
From Embeds
0
Number of Embeds
1,346
Actions
Shares
0
Downloads
917
Comments
2
Likes
20
Embeds 0
No embeds

No notes for slide

Introducao EJB 3

  1. 1. Mini-curso Gratuito Globalcode Slide 1
  2. 2. Mini-curso Gratuito Introdução Enterprise Java Beans (EJB) 3.0 Globalcode Slide 2
  3. 3. Agenda Plataforma Java EE Conceitos Iniciais (EJB) Session Bean Message-Driven Bean (MDB) Java Persistence API (JPA) Serviços Disponíveis Injeção de Dependência Callback Methods Transações Segurança Interceptors Timers Conclusões Perguntas e Respostas Globalcode Slide 3
  4. 4. Palestrante Rodrigo Cândido da Silva – rcandidosilva@gmail.com Trabalha: Arquiteto Java / Instrutor Experiência: 8 anos na área de desenvolvimento de sistemas, trabalhando com Java desde 2001; Certificações: SCJA, SCJP, SCWCD, SCBCD, SCEA Hobby Favorito: Futebol, Praia, Filmes, etc Globalcode Slide 4
  5. 5. Agenda Plataforma Java EE Conceitos Iniciais (EJB) Session Bean Message-Driven Bean (MDB) Java Persistence API (JPA) Serviços Disponíveis Injeção de Dependência Callback Methods Transações Segurança Interceptors Timers Conclusões Perguntas e Respostas Globalcode Slide 5
  6. 6. Plataforma Java EE • Suporte ao desenvolvimento de aplicações “enterprise” Aplicações distribuídas, seguras, escaláveis, de alta disponibilidade e com baixo custo de manutenção • Plataforma para desenvolvimento de componentes para aplicações em multicamadas Enterprise JavaBeans JavaServer Pages Servlets • Componentes “rodam” em um servidor Java EE Gerencia e oferece serviços de alto nível aos componentes por meio de Containers container segue uma especificação padrão Globalcode Slide 6
  7. 7. Plataforma Java EE • Arquitetura em camadas Globalcode Slide 7
  8. 8. Plataforma Java EE • Containers Java EE Globalcode Slide 8
  9. 9. Plataforma Java EE • Serviços oferecidos pelos containers: Escalabilidade Gestão de memória, ciclo de vida de objetos e estado de objetos Conexões, Transações, Serviço de nomes Segurança Tolerância a falhas Integração WebServices Clustering Alta disponibilidade Confiabilidade … Globalcode Slide 9
  10. 10. Plataforma Java EE • Servidores 100% compatíveis com a especificação Java EE 5 Globalcode Slide 10
  11. 11. Agenda Plataforma Java EE Conceitos Iniciais (EJB) Session Bean Message-Driven Bean (MDB) Java Persistence API (JPA) Serviços Disponíveis Injeção de Dependência Callback Methods Transações Segurança Interceptors Timers Conclusões Perguntas e Respostas Globalcode Slide 11
  12. 12. Conceitos Iniciais (EJB) Porque Precisamos de EJB? Cliente SOA / WS Regras de Negócio web Swing / JavaFX Web Browser Java Web JVM + Container EE Rede Local Globalcode Slide 12
  13. 13. Conceitos Iniciais (EJB) • Plataforma para criação de aplicações de negócio portáveis, robustas e reutilizáveis usando a linguagem de programação Java; • Componente para construir aplicações sem precisar reinventar uma série de recursos e serviços (transações, segurança, persistência); • Modelo de alto nível para objetos distribuídos (computação distribuída); • Padrão de mercado para componentes de negócio; • É o CICS do Java. Globalcode Slide 13
  14. 14. Conceitos Iniciais (EJB) Componentes de Negócio Compartilhados Cliente SOA / WS EJB Session Bean web Swing / JavaFX Web Browser Java Web JVM + Container EE Rede Local Globalcode Slide 14
  15. 15. Conceitos Iniciais (EJB) javax.ejb EJB Server / Container Nível programação JRMP / RMI - IIOP TCP / IP java.rmi Aplicação Apresentação Transporte rede java.net Globalcode Slide 15
  16. 16. Conceitos Iniciais (EJB) Infra Estrutura do Container EJB Controle Transacional Escalabilidade Segurança EJB Session Bean Config. de Dados Ambiente Legados Middleware de Mensagens Globalcode Slide 16
  17. 17. Conceitos Iniciais (EJB) • Tipos de EJB: Session Bean Representa um simples processo de negócio Message-Driven Bean Trabalha de forma assíncrona Entity Bean Representa um objeto persistente Definido pela especificação JPA Globalcode Slide 17
  18. 18. Agenda Plataforma Java EE Conceitos Iniciais (EJB) Session Bean Message-Driven Bean (MDB) Java Persistence API (JPA) Serviços Disponíveis Injeção de Dependência Callback Methods Transações Segurança Interceptors Timers Conclusões Perguntas e Respostas Globalcode Slide 18
  19. 19. Session Bean • Representa um processo de negócio (regra de negócio); • Pode ser do tipo Stateless ou Stateful; • Stateless Não mantém estado de conversão com o cliente; Não tem compromisso de manter uma sessão; Não devemos utilizar atributos de negócio, somente atributos técnicos em cache; É um EJB econômico; • Stateful Mantém estado de conversão com o cliente; Cada cliente terá uma instancia do EJB exclusiva, desde a criação até a remoção; Podemos ter atributos de negócio com métodos getters e setters; Globalcode Slide 19
  20. 20. Session Bean • Stateless (sem estado) Período que uma instancia do EJB fica “preso” a um cliente Globalcode Slide 20
  21. 21. Session Bean • Stateless (sem estado) Globalcode Slide 21
  22. 22. Session Bean • Stateful (com estado) Período que uma instancia do EJB fica “preso” a um cliente Globalcode Slide 22
  23. 23. Session Bean • Stateful (com estado) Globalcode Slide 23
  24. 24. Session Bean • Clientes acessam o Session Bean através de uma interface Java simples (POJI); • Métodos (serviços) são publicados através desta interface; • A interface deve ser implementada pela classe do Bean; • Tipos de Interfaces Local (@Local) Somente acesso local (mesma JVM); Cliente pode ser um componente Web ou outro EJB; Localização não é transparente (não suporta clusterização). Remota (@Remote) Suporta acesso remoto (fora da JVM); Cliente pode ser um componente Web, outro EJB ou aplicação desktop; Transparência de localização (suporta clusterização). Globalcode Slide 24
  25. 25. Session Bean • Local Interface • Remote Interface Globalcode Slide 25
  26. 26. Agenda Plataforma Java EE Conceitos Iniciais (EJB) Session Bean Message-Driven Bean (MDB) Java Persistence API (JPA) Serviços Disponíveis Injeção de Dependência Callback Methods Transações Segurança Interceptors Timers Conclusões Perguntas e Respostas Globalcode Slide 26
  27. 27. Message-Driven Bean (MDB) • EJB que é acionado de forma assíncrona; • Trabalha totalmente vinculado ao conceito de utilização de um serviço de mensagens; • Utiliza a API do Java Message Service (JMS) em conjunto com Session Beans; • Facilita a quebra de acoplamento entre o cliente e o destino; • Serviços de mensagens introduzem novos conceitos de arquiteturas e aumenta a confiabilidade da solução; Globalcode Slide 27
  28. 28. Message-Driven Beans (MDB) • Vejamos o comparativo de uma chamada síncrona, e uma chamada assíncrona utilizando um serviço de mensagens Síncrono Assíncrono Globalcode Slide 28
  29. 29. Message-Driven Beans (MDB) • Existem dois tipos de destinos JMS Point-to-point (queue): uma mensagem enviada para a fila será consumida apenas por um cliente; Publish-subscriber (topic): uma mensagem pode ser recepcionada por múltiplos clientes; Globalcode Slide 29
  30. 30. Message-Driven Beans (MDB) • MDB fica anexado a uma fila ou tópico; • Ao receber uma mensagem, o EJB será acionado para consumir a mensagem, o container chama o método onMessage(...) do EJB; • Vantagens: Limitar o número de EJBs consumidores, evitando super-consumo do servidor; Requisições dos usuários são armazenadas em filas e processadas conforme capacidade do servidor; Globalcode Slide 30
  31. 31. Message-Driven Bean (MDB) • Exemplo de um MDB Globalcode Slide 31
  32. 32. Message-Driven Bean (MDB) • Como enviar uma mensagem Configurar um repositório de conexões; Abrir uma nova conexão; Criar uma sessão de envio; Criar um produtor de mensagens associado a um destino; Criar uma nova mensagem; Solicitar ao produtor enviar a mensagem para o destino associado. Globalcode Slide 32
  33. 33. Message-Driven Bean (MDB) • Exemplo de um cliente JMS Globalcode Slide 33
  34. 34. Agenda Plataforma Java EE Conceitos Iniciais (EJB) Session Bean Message-Driven Bean (MDB) Java Persistence API (JPA) Serviços Disponíveis Injeção de Dependência Callback Methods Transações Segurança Interceptors Timers Conclusões Perguntas e Respostas Globalcode Slide 34
  35. 35. Java Persistence API • Primeira especificação (padrão) de mapeamento de objetos Java para base de dados relacional Integração com outros frameworks Hibernate é uma implementação de JPA TopLink Essencials é uma implementação de JPA (RI) • POJO (Plain Old Java Objects) Entidades Mapeamento via metadados (annotation Java 5) • Pode ser utilizado fora de containres EJBs (ligthweigth container) • Uso de injeção de dependência ao invés de lookups JNDI Globalcode Slide 35
  36. 36. Java Persistence API Globalcode Slide 36
  37. 37. Java Persistence API • Entidades JPA Globalcode Slide 37
  38. 38. Java Persistence API • EntityManager (javax.persistence) Gerencia o ciclo de vida das entidades (B) find / query (C) persist (D) clear / serialização (E) merge (F) remove Globalcode Slide 38
  39. 39. Java Persistence API • PersistenceContext Conjunto de objetos “managed” associados a um EntityManager EntityManager PersistenceContext obj5 obj1 obj2 obj3 obj4 NEW / DETACHED MANAGED MANAGED MANAGED MANAGED Globalcode Slide 39
  40. 40. Java Persistence API • Persistence Unit Uma unidade de persistência define um contexto de funcionamento para os EntityManagers Globalcode Slide 40
  41. 41. Java Persistence API • Exemplo de utilização de JPA Globalcode Slide 41
  42. 42. Agenda Plataforma Java EE Conceitos Iniciais (EJB) Session Bean Message-Driven Bean (MDB) Java Persistence API (JPA) Serviços Disponíveis Injeção de Dependência Callback Methods Transações Segurança Interceptors Timers Conclusões Perguntas e Respostas Globalcode Slide 42
  43. 43. Injeção de Dependência • Mecanismo de “injeção” de recursos necessários a um componente de forma automática Sem a presença de instruções explícitas para acessar o recurso • Exemplo: O componente de negócios A depende do componente de negócios B e do pool de conexões C. B A C Globalcode Slide 43
  44. 44. Injeção de Dependência • Sem injeção de dependência: Código fonte do componente A contém instruções para “buscar” o componente B e o recurso C. lookups Serviço de Nomes A “ejb/componenteB” “jdbc/dataSourceC” B C Globalcode Slide 44
  45. 45. Injeção de Dependência • Exemplo Sem Injeção de Dependência Globalcode Slide 45
  46. 46. Injeção de Dependência • Com injeção de dependência Código do componente A não busca recursos e outros componentes Devemos declarar as dependências de componentes e recursos nos atributos ou métodos setters do componente A Container (Java EE) interpreta as dependências declaradas no componente A e “injeta” os recursos e componentes necessários Globalcode Slide 46
  47. 47. Injeção de Dependência class ComponenteA { @EJB(name=“ejb/componenteB”) InterfaceB b; @Resource(name=“jdbc/dataSourceC”) DataSource c; } injeção Serviço de Nomes A “ejb/componenteB” “jdbc/dataSourceC” B C Globalcode Slide 47
  48. 48. Injeção de Dependência • Exemplo de Utilização Globalcode Slide 48
  49. 49. Injeção de Dependência Quem pode receber injeção ? EJB, Interceptor Servlet, Filter, *Listener, JSP Tag Handler JSF Managed Beans Endpoints JAX-WS e Handlers O que pode ser injetado ? Referências a EJBs e a Web Services DataSource JDBC Destination e ConnectionFactory JMS UserTransaction EntityManager (JPA) Globalcode Slide 49
  50. 50. Agenda Plataforma Java EE Conceitos Iniciais (EJB) Session Bean Message-Driven Bean (MDB) Java Persistence API (JPA) Serviços Disponíveis Injeção de Dependência Callback Methods Transações Segurança Interceptors Timers Conclusões Perguntas e Respostas Globalcode Slide 50
  51. 51. Callback Methods • Anotações para tratamento de eventos nas fases do ciclo de vida dos EJBs; • Gerenciados pelo container Java EE; • Substitui os antigos métodos definidos nas interfaces do EJB 2.x e implementados pela classe EJB; @PostConstruct Após o container criar uma nova instância de um EJB @PrePassivate Imediatamente antes do EJB sofrer o processo de passivação @PostActivate Imediatamente depois do EJB sofrer o processo de ativação @PreDestroy Antes do EJB ser destruído pelo container Globalcode Slide 51
  52. 52. Callback Methods • Exemplo de Utilização Globalcode Slide 52
  53. 53. Agenda Plataforma Java EE Conceitos Iniciais (EJB) Session Bean Message-Driven Bean (MDB) Java Persistence API (JPA) Serviços Disponíveis Injeção de Dependência Callback Methods Transações Segurança Interceptors Timers Conclusões Perguntas e Respostas Globalcode Slide 53
  54. 54. Transações • São unidades de trabalho com propriedades ACID Atomicidade Consistência Isolamento Durabilidade • São gerenciadas pelo container EJB (JTA) • Transações nos EJB podem ser Container Managed Transaction (CMT) - (default) Definida declarativamente Bean Managed Transaction (BMT) Programada através UserTransaction API Globalcode Slide 54
  55. 55. Transações • Configurações Transacionais para CMT Required (default) Sempre deve rodar dentro de uma transação RequiresNew Sempre deve rodar dentro de sua própria transação Mandatory Deve ser chamado dentro de uma transação já iniciada Supports Utiliza transação somente se uma transação já estiver acontecendo Not Supported Executa sem nenhuma transação Never Não poderá ser executado caso esteja acontecendo uma transação Globalcode Slide 55
  56. 56. Transações • Exemplo de Utilização de CMT Globalcode Slide 56
  57. 57. Transações • Exemplo de Utilização de BMT Globalcode Slide 57
  58. 58. Agenda Plataforma Java EE Conceitos Iniciais (EJB) Session Bean Message-Driven Bean (MDB) Java Persistence API (JPA) Serviços Disponíveis Injeção de Dependência Callback Methods Transações Segurança Interceptors Timers Conclusões Perguntas e Respostas Globalcode Slide 58
  59. 59. Segurança • Java EE suporta todos os níveis de segurança; • Utiliza o Java Authentication and Autorization Service (JAAS); • Consiste no mecanismo de autenticação e autorização de usuários, baseado em uma identidade e roles (perfil de acesso) associados. Globalcode Slide 59
  60. 60. Segurança • Exemplo de Verificações de Segurança Declarativa Globalcode Slide 60
  61. 61. Segurança • Exemplo de Verificações de Segurança Programática Globalcode Slide 61
  62. 62. Agenda Plataforma Java EE Conceitos Iniciais (EJB) Session Bean Message-Driven Bean (MDB) Java Persistence API (JPA) Serviços Disponíveis Injeção de Dependência Callback Methods Transações Segurança Interceptors Timers Conclusões Perguntas e Respostas Globalcode Slide 62
  63. 63. Interceptors • Novidade introduzida com o EJB 3.0; • Permite que um código customizado seja aplicado para um EJB; • Utiliza conceitos de programação orientada à aspectos (AOP); • Intercepta a chamada do método do EJB para executar um código intermediário; • Utiliza anotações plugáveis nos EJBs; • Podem ser configurados no próprio Bean ou em classes externas; • Exemplos de utilização Auditoria; Logging; Segurança customizada; Globalcode Slide 63
  64. 64. Interceptors • Exemplo de Classe Interceptor Globalcode Slide 64
  65. 65. Interceptors • Exemplo de Configuração para Interceptação Globalcode Slide 65
  66. 66. Agenda Plataforma Java EE Conceitos Iniciais (EJB) Session Bean Message-Driven Bean (MDB) Java Persistence API (JPA) Serviços Disponíveis Injeção de Dependência Callback Methods Transações Segurança Interceptors Timers Conclusões Perguntas e Respostas Globalcode Slide 66
  67. 67. Timers • Desde a versão 1.4 foi criado o serviço de timer para os componentes EJB; • Permite a programação de tarefas para serem executadas em um determinado horário (processos agendados); • Equivalente a CRONTAB, Quartz, etc; • É gerenciado pelo container Java EE; • Os tipos de agendamentos suportados são: Tarefa para execução única (one-shot); Tarefas periódicas com taxa fixa (fixed-rate); • Exemplos de utilização de agendamento Realizar backups periódicos; Rodar a folha de pagamento; Enviar e-mails de expiração de senhas para usuários. Globalcode Slide 67
  68. 68. Timers • Para criar o agendamento, o EJB deve se registrar no serviço de timer, criando um novo timer; • Além disto o EJB precisa definir um método Timeout responsável por realizar a executação da tafera (utilizando @Timeout); • O serviço de timer irá gerenciar o agendamento, e uma vez que identifique o target, ele deverá chamar o método responsável pela execução da tarefa. Globalcode Slide 68
  69. 69. Timer • Exemplo de EJB Timer Globalcode Slide 69
  70. 70. Agenda Plataforma Java EE Conceitos Iniciais (EJB) Session Bean Message-Driven Bean (MDB) Java Persistence API (JPA) Serviços Disponíveis Injeção de Dependência Callback Methods Transações Segurança Interceptors Timers Conclusões Perguntas e Respostas Globalcode Slide 70
  71. 71. Conclusões Problemas das especificações EJB < 3.0 • Muitas Interfaces ia • Interface Home Remota e Local c ra • Interfaces de Ciclo de Vida c • SessionBean ro • EntityBean u • MessageDrivenBean B lta • Interface S.E.I. (Web Service JAX-RPC) ADescriptors • Deployment Globalcode Slide 71
  72. 72. Conclusões Objetivos da especificação JSR-220 • Simplificar o trabalho do desenvolvedor d e • Defaults programáticos id a • Meta-dados = Annotations javax.ejb.* iv • Configuration by Exception t • Injeção de Dependência dmenos u lookup ) • ro( Menos Interfaces Obrigatórias • Interfaces Home P • Interfaces de a isciclo de vida M Globalcode Slide 72
  73. 73. Conclusões • EJB’s: Componentes distribuídos que podem rodar em vários servidores; Clustering; Persistência automática utilizando JPA; Suporte transacional; Segurança declarativa; Programação AOP; Serviços de agendamento de tarefas; Tunning de Threads e entidades de banco; Otimização de memória e threads; • E você ainda esta pensando se vale a pena? Globalcode Slide 73
  74. 74. Perguntas & Respostas Globalcode Slide 74
  75. 75. Mini-curso Gratuito Agradecemos a presença! vofficejava.googlecode.com Globalcode Slide 75

×