Escolar Documentos
Profissional Documentos
Cultura Documentos
mc9 Introducaoejb3
mc9 Introducaoejb3
Globalcode
Slide 1
Mini-curso Gratuito
Globalcode
Slide 2
Agenda
Plataforma Java EE Conceitos Iniciais (EJB) Session Bean Message-Driven Bean (MDB) Java Persistence API (JPA) Servios Disponveis Injeo de Dependncia Callback Methods Transaes Segurana Interceptors Timers Concluses Perguntas e Respostas
Globalcode Slide 3
Palestrante
Rodrigo Cndido da Silva rcandidosilva@gmail.com Trabalha: Arquiteto Java / Instrutor Experincia: 8 anos na rea de desenvolvimento de sistemas, trabalhando com Java desde 2001; Certificaes: SCJA, SCJP, SCWCD, SCBCD, SCEA Hobby Favorito: Futebol, Praia, Filmes, etc
Globalcode Slide 4
Agenda
Plataforma Java EE Conceitos Iniciais (EJB) Session Bean Message-Driven Bean (MDB) Java Persistence API (JPA) Servios Disponveis Injeo de Dependncia Callback Methods Transaes Segurana Interceptors Timers Concluses Perguntas e Respostas
Globalcode Slide 5
Plataforma Java EE
Suporte ao desenvolvimento de aplicaes enterprise
Aplicaes distribudas, seguras, escalveis, de alta disponibilidade e com baixo custo de manuteno
Globalcode
Slide 6
Plataforma Java EE
Arquitetura em camadas
Globalcode
Slide 7
Plataforma Java EE
Containers Java EE
Globalcode
Slide 8
Plataforma Java EE
Servios oferecidos pelos containers:
Escalabilidade Gesto de memria, ciclo de vida de objetos e estado de objetos Conexes, Transaes, Servio de nomes Segurana Tolerncia a falhas Integrao WebServices Clustering Alta disponibilidade Confiabilidade
Globalcode
Slide 9
Plataforma Java EE
Servidores 100% compatveis com a especificao Java EE 5
Globalcode
Slide 10
Agenda
Plataforma Java EE Conceitos Iniciais (EJB) Session Bean Message-Driven Bean (MDB) Java Persistence API (JPA) Servios Disponveis Injeo de Dependncia Callback Methods Transaes Segurana Interceptors Timers Concluses Perguntas e Respostas
Globalcode Slide 11
web
Swing / JavaFX Web Browser Rede Local Java Web JVM + Container EE
Globalcode
Slide 12
web
Swing / JavaFX Web Browser Rede Local Java Web JVM + Container EE
Globalcode
Slide 14
javax.ejb
EJB Server / Container
Globalcode
Nvel programao
java.rmi
java.net
Slide 15
Segurana
Dados Legados
Globalcode
Slide 16
Message-Driven Bean
Trabalha de forma assncrona
Entity Bean
Representa um objeto persistente Definido pela especificao JPA
Globalcode
Slide 17
Agenda
Plataforma Java EE Conceitos Iniciais (EJB) Session Bean Message-Driven Bean (MDB) Java Persistence API (JPA) Servios Disponveis Injeo de Dependncia Callback Methods Transaes Segurana Interceptors Timers Concluses Perguntas e Respostas
Globalcode Slide 18
Session Bean
Representa um processo de negcio (regra de negcio); Pode ser do tipo Stateless ou Stateful; Stateless
No mantm estado de converso com o cliente; No tem compromisso de manter uma sesso; No devemos utilizar atributos de negcio, somente atributos tcnicos em cache; um EJB econmico;
Stateful
Mantm estado de converso com o cliente; Cada cliente ter uma instancia do EJB exclusiva, desde a criao at a remoo; Podemos ter atributos de negcio com mtodos getters e setters;
Globalcode
Slide 19
Session Bean
Stateless (sem estado)
Globalcode
Slide 20
Session Bean
Stateless (sem estado)
Globalcode
Slide 21
Session Bean
Stateful (com estado)
Globalcode
Slide 22
Session Bean
Stateful (com estado)
Globalcode
Slide 23
Session Bean
Clientes acessam o Session Bean atravs de uma interface Java simples (POJI); Mtodos (servios) so publicados atravs 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; Localizao no transparente (no suporta clusterizao).
Remota (@Remote)
Suporta acesso remoto (fora da JVM); Cliente pode ser um componente Web, outro EJB ou aplicao desktop; Transparncia de localizao (suporta clusterizao).
Globalcode
Slide 24
Session Bean
Local Interface
Remote Interface
Globalcode
Slide 25
Agenda
Plataforma Java EE Conceitos Iniciais (EJB) Session Bean Message-Driven Bean (MDB) Java Persistence API (JPA) Servios Disponveis Injeo de Dependncia Callback Methods Transaes Segurana Interceptors Timers Concluses Perguntas e Respostas
Globalcode Slide 26
Globalcode
Slide 27
Assncrono
Globalcode
Slide 28
Globalcode
Slide 29
Globalcode
Slide 30
Globalcode
Slide 31
Globalcode
Slide 32
Globalcode
Slide 33
Agenda
Plataforma Java EE Conceitos Iniciais (EJB) Session Bean Message-Driven Bean (MDB) Java Persistence API (JPA) Servios Disponveis Injeo de Dependncia Callback Methods Transaes Segurana Interceptors Timers Concluses Perguntas e Respostas
Globalcode Slide 34
Entidades
Pode ser utilizado fora de containres EJBs (ligthweigth container) Uso de injeo de dependncia ao invs de lookups JNDI
Globalcode
Slide 35
Globalcode
Slide 36
Globalcode
Slide 37
(B) find / query (C) persist (D) clear / serializao (E) merge (F) remove
Globalcode
Slide 38
EntityManager obj5
NEW / DETACHED
PersistenceContext
obj1
MANAGED
obj2
MANAGED
obj3
MANAGED
obj4
MANAGED
Globalcode
Slide 39
Globalcode
Slide 40
Globalcode
Slide 41
Agenda
Plataforma Java EE Conceitos Iniciais (EJB) Session Bean Message-Driven Bean (MDB) Java Persistence API (JPA) Servios Disponveis Injeo de Dependncia Callback Methods Transaes Segurana Interceptors Timers Concluses Perguntas e Respostas
Globalcode Slide 42
Injeo de Dependncia
Mecanismo de injeo de recursos necessrios a um componente de forma automtica
Sem a presena de instrues explcitas para acessar o recurso
Exemplo:
O componente de negcios A depende do componente de negcios B e do pool de conexes C.
B C
Globalcode
Slide 43
Injeo de Dependncia
Sem injeo de dependncia:
Cdigo fonte do componente A contm instrues para buscar o componente B e o recurso C.
lookups
Servio de Nomes ejb/componenteB jdbc/dataSourceC
B C
Globalcode Slide 44
Injeo de Dependncia
Exemplo Sem Injeo de Dependncia
Globalcode
Slide 45
Injeo de Dependncia
Com injeo de dependncia
Cdigo do componente A no busca recursos e outros componentes Devemos declarar as dependncias de componentes e recursos nos atributos ou mtodos setters do componente A Container (Java EE) interpreta as dependncias declaradas no componente A e injeta os recursos e componentes necessrios
Globalcode
Slide 46
Injeo de Dependncia
class ComponenteA { @EJB(name=ejb/componenteB) InterfaceB b; @Resource(name=jdbc/dataSourceC) DataSource c; }
injeo
Servio de Nomes ejb/componenteB jdbc/dataSourceC
B C
Globalcode Slide 47
Injeo de Dependncia
Exemplo de Utilizao
Globalcode
Slide 48
Injeo de Dependncia
Quem pode receber injeo ?
EJB, Interceptor Servlet, Filter, *Listener, JSP Tag Handler JSF Managed Beans Endpoints JAX-WS e Handlers
Globalcode
Slide 49
Agenda
Plataforma Java EE Conceitos Iniciais (EJB) Session Bean Message-Driven Bean (MDB) Java Persistence API (JPA) Servios Disponveis Injeo de Dependncia Callback Methods Transaes Segurana Interceptors Timers Concluses Perguntas e Respostas
Globalcode Slide 50
Callback Methods
Anotaes para tratamento de eventos nas fases do ciclo de vida dos EJBs; Gerenciados pelo container Java EE; Substitui os antigos mtodos definidos nas interfaces do EJB 2.x e implementados pela classe EJB;
@PostConstruct
Aps o container criar uma nova instncia de um EJB
@PrePassivate
Imediatamente antes do EJB sofrer o processo de passivao
@PostActivate
Imediatamente depois do EJB sofrer o processo de ativao
@PreDestroy
Antes do EJB ser destrudo pelo container
Globalcode
Slide 51
Callback Methods
Exemplo de Utilizao
Globalcode
Slide 52
Agenda
Plataforma Java EE Conceitos Iniciais (EJB) Session Bean Message-Driven Bean (MDB) Java Persistence API (JPA) Servios Disponveis Injeo de Dependncia Callback Methods Transaes Segurana Interceptors Timers Concluses Perguntas e Respostas
Globalcode Slide 53
Transaes
So unidades de trabalho com propriedades ACID
Atomicidade Consistncia Isolamento Durabilidade
So gerenciadas pelo container EJB (JTA) Transaes nos EJB podem ser
Container Managed Transaction (CMT) - (default)
Definida declarativamente
Globalcode
Slide 54
Transaes
Configuraes Transacionais para CMT
Required (default)
Sempre deve rodar dentro de uma transao
RequiresNew
Sempre deve rodar dentro de sua prpria transao
Mandatory
Deve ser chamado dentro de uma transao j iniciada
Supports
Utiliza transao somente se uma transao j estiver acontecendo
Not Supported
Executa sem nenhuma transao
Never
No poder ser executado caso esteja acontecendo uma transao
Globalcode
Slide 55
Transaes
Exemplo de Utilizao de CMT
Globalcode
Slide 56
Transaes
Exemplo de Utilizao de BMT
Globalcode
Slide 57
Agenda
Plataforma Java EE Conceitos Iniciais (EJB) Session Bean Message-Driven Bean (MDB) Java Persistence API (JPA) Servios Disponveis Injeo de Dependncia Callback Methods Transaes Segurana Interceptors Timers Concluses Perguntas e Respostas
Globalcode Slide 58
Segurana
Java EE suporta todos os nveis de segurana; Utiliza o Java Authentication and Autorization Service (JAAS); Consiste no mecanismo de autenticao e autorizao de usurios, baseado em uma identidade e roles (perfil de acesso) associados.
Globalcode
Slide 59
Segurana
Exemplo de Verificaes de Segurana Declarativa
Globalcode
Slide 60
Segurana
Exemplo de Verificaes de Segurana Programtica
Globalcode
Slide 61
Agenda
Plataforma Java EE Conceitos Iniciais (EJB) Session Bean Message-Driven Bean (MDB) Java Persistence API (JPA) Servios Disponveis Injeo de Dependncia Callback Methods Transaes Segurana Interceptors Timers Concluses Perguntas e Respostas
Globalcode Slide 62
Interceptors
Novidade introduzida com o EJB 3.0; Permite que um cdigo customizado seja aplicado para um EJB; Utiliza conceitos de programao orientada aspectos (AOP); Intercepta a chamada do mtodo do EJB para executar um cdigo intermedirio; Utiliza anotaes plugveis nos EJBs; Podem ser configurados no prprio Bean ou em classes externas; Exemplos de utilizao
Auditoria; Logging; Segurana customizada;
Globalcode
Slide 63
Interceptors
Exemplo de Classe Interceptor
Globalcode
Slide 64
Interceptors
Exemplo de Configurao para Interceptao
Globalcode
Slide 65
Agenda
Plataforma Java EE Conceitos Iniciais (EJB) Session Bean Message-Driven Bean (MDB) Java Persistence API (JPA) Servios Disponveis Injeo de Dependncia Callback Methods Transaes Segurana Interceptors Timers Concluses Perguntas e Respostas
Globalcode Slide 66
Timers
Desde a verso 1.4 foi criado o servio de timer para os componentes EJB; Permite a programao de tarefas para serem executadas em um determinado horrio (processos agendados); Equivalente a CRONTAB, Quartz, etc; gerenciado pelo container Java EE; Os tipos de agendamentos suportados so:
Tarefa para execuo nica (one-shot); Tarefas peridicas com taxa fixa (fixed-rate);
Globalcode
Slide 67
Timers
Para criar o agendamento, o EJB deve se registrar no servio de timer, criando um novo timer; Alm disto o EJB precisa definir um mtodo Timeout responsvel por realizar a executao da tafera (utilizando @Timeout); O servio de timer ir gerenciar o agendamento, e uma vez que identifique o target, ele dever chamar o mtodo responsvel pela execuo da tarefa.
Globalcode
Slide 68
Timer
Exemplo de EJB Timer
Globalcode
Slide 69
Agenda
Plataforma Java EE Conceitos Iniciais (EJB) Session Bean Message-Driven Bean (MDB) Java Persistence API (JPA) Servios Disponveis Injeo de Dependncia Callback Methods Transaes Segurana Interceptors Timers Concluses Perguntas e Respostas
Globalcode Slide 70
Concluses
Problemas das especificaes EJB < 3.0
Muitas Interfaces Interface Home Remota e Local Interfaces de Ciclo de Vida SessionBean EntityBean MessageDrivenBean Interface S.E.I. (Web Service JAX-RPC)
ia c ra c ro u B ta l ADescriptors Deployment
Globalcode
Slide 71
Concluses
Objetivos da especificao JSR-220
e d Simplificar o trabalho do desenvolvedor a Defaults programticos id Meta-dados = Annotations javax.ejb.* iv t Configuration by Exception u lookup ) Injeo de Dependncia dmenos o( r Menos Interfaces Obrigatrias P Interfaces Home isciclo de vida Interfaces de a M
Slide 72
Globalcode
Concluses
EJBs: Componentes distribudos que podem rodar em vrios servidores; Clustering; Persistncia automtica utilizando JPA; Suporte transacional; Segurana declarativa; Programao AOP; Servios de agendamento de tarefas; Tunning de Threads e entidades de banco; Otimizao de memria e threads; E voc ainda esta pensando se vale a pena?
Globalcode
Slide 73
Globalcode
Slide 74
vofficejava.googlecode.com
Globalcode
Slide 75