Você está na página 1de 75

Mini-curso Gratuito

Globalcode

Slide 1

Mini-curso Gratuito

Introduo Enterprise Java Beans (EJB) 3.0

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

Plataforma para desenvolvimento de componentes para aplicaes em multicamadas


Enterprise JavaBeans JavaServer Pages Servlets

Componentes rodam em um servidor Java EE


Gerencia e oferece servios de alto nvel aos componentes por meio de Containers container segue uma especificao padro

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

Conceitos Iniciais (EJB)


Porque Precisamos de EJB?
Cliente SOA / WS Regras de Negcio

web
Swing / JavaFX Web Browser Rede Local Java Web JVM + Container EE

Globalcode

Slide 12

Conceitos Iniciais (EJB)


Plataforma para criao de aplicaes de negcio portveis, robustas e reutilizveis usando a linguagem de programao Java; Componente para construir aplicaes sem precisar reinventar uma srie de recursos e servios (transaes, segurana, persistncia); Modelo de alto nvel para objetos distribudos (computao distribuda); Padro de mercado para componentes de negcio; o CICS do Java.
Globalcode Slide 13

Conceitos Iniciais (EJB)


Componentes de Negcio Compartilhados
Cliente SOA / WS EJB Session Bean

web
Swing / JavaFX Web Browser Rede Local Java Web JVM + Container EE

Globalcode

Slide 14

Conceitos Iniciais (EJB)

javax.ejb
EJB Server / Container

Globalcode

Nvel programao

JRMP / RMI - IIOP


TCP / IP Aplicao Apresentao Transporte rede

java.rmi

java.net

Slide 15

Conceitos Iniciais (EJB)


Infra Estrutura do Container
EJB Controle Transacional Escalabilidade

Segurana

EJB Session Bean

Config. de Ambiente Middleware de Mensagens

Dados Legados

Globalcode

Slide 16

Conceitos Iniciais (EJB)


Tipos de EJB:
Session Bean
Representa um simples processo de negcio

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)

Perodo que uma instancia do EJB fica preso a um cliente

Globalcode

Slide 20

Session Bean
Stateless (sem estado)

Globalcode

Slide 21

Session Bean
Stateful (com estado)

Perodo que uma instancia do EJB fica preso a um cliente

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

Message-Driven Bean (MDB)


EJB que acionado de forma assncrona; Trabalha totalmente vinculado ao conceito de utilizao de um servio 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; Servios de mensagens introduzem novos conceitos de arquiteturas e aumenta a confiabilidade da soluo;

Globalcode

Slide 27

Message-Driven Beans (MDB)


Vejamos o comparativo de uma chamada sncrona, e uma chamada assncrona utilizando um servio de mensagens
Sncrono

Assncrono

Globalcode

Slide 28

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 mltiplos clientes;

Globalcode

Slide 29

Message-Driven Beans (MDB)


MDB fica anexado a uma fila ou tpico; Ao receber uma mensagem, o EJB ser acionado para consumir a mensagem, o container chama o mtodo onMessage(...) do EJB; Vantagens:
Limitar o nmero de EJBs consumidores, evitando super-consumo do servidor; Requisies dos usurios so armazenadas em filas e processadas conforme capacidade do servidor;

Globalcode

Slide 30

Message-Driven Bean (MDB)


Exemplo de um MDB

Globalcode

Slide 31

Message-Driven Bean (MDB)


Como enviar uma mensagem
Configurar um repositrio de conexes; Abrir uma nova conexo; Criar uma sesso 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

Message-Driven Bean (MDB)


Exemplo de um cliente JMS

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

Java Persistence API


Primeira especificao (padro) de mapeamento de objetos Java para base de dados relacional
Integrao com outros frameworks
Hibernate uma implementao de JPA TopLink Essencials uma implementao 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 injeo de dependncia ao invs de lookups JNDI

Globalcode

Slide 35

Java Persistence API

Globalcode

Slide 36

Java Persistence API


Entidades JPA

Globalcode

Slide 37

Java Persistence API


EntityManager
(javax.persistence)

Gerencia o ciclo de vida das entidades

(B) find / query (C) persist (D) clear / serializao (E) merge (F) remove

Globalcode

Slide 38

Java Persistence API


PersistenceContext
Conjunto de objetos managed associados a um EntityManager

EntityManager obj5
NEW / DETACHED

PersistenceContext

obj1
MANAGED

obj2
MANAGED

obj3
MANAGED

obj4
MANAGED

Globalcode

Slide 39

Java Persistence API


Persistence Unit
Uma unidade de persistncia define um contexto de funcionamento para os EntityManagers

Globalcode

Slide 40

Java Persistence API


Exemplo de utilizao de JPA

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

O que pode ser injetado ?


Referncias a EJBs e a Web Services DataSource JDBC Destination e ConnectionFactory JMS UserTransaction EntityManager (JPA)

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

Bean Managed Transaction (BMT)


Programada atravs UserTransaction API

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);

Exemplos de utilizao de agendamento


Realizar backups peridicos; Rodar a folha de pagamento; Enviar e-mails de expirao de senhas para usurios.

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

Perguntas & Respostas

Globalcode

Slide 74

Mini-curso Gratuito Agradecemos a presena!

vofficejava.googlecode.com

Globalcode

Slide 75

Você também pode gostar