Você está na página 1de 24

TDC2012

TDC2012 EJB simples e descomplicado, na prática Slide 1
TDC2012 EJB simples e descomplicado, na prática Slide 1

EJB simples e descomplicado, na prática

Slide 1
Slide 1
Slide 1

Slide 1

Palestrantes

Palestrantes Kleber Xavier – Arquiteto Senior / Globalcode kleber@globalcode.com.br Vinicius Senger – Arquiteto
Palestrantes Kleber Xavier – Arquiteto Senior / Globalcode kleber@globalcode.com.br Vinicius Senger – Arquiteto

Kleber Xavier – Arquiteto Senior / Globalcode kleber@globalcode.com.br

Vinicius Senger – Arquiteto Senior / Globalcode vinicius@globalcode.com.br @vsenger

Autores Livro Gratuito: “33 patterns com Java”

http://www.slideshare.net/vsenger/33-design-patterns-com-java

Slide 2
Slide 2
Slide 2

Slide 2

Agenda

Agenda • Introdução • Por que EJB • Tipos de EJB Slide 3
Agenda • Introdução • Por que EJB • Tipos de EJB Slide 3

• Introdução

• Por que EJB

• Tipos de EJB

Slide 3
Slide 3
Slide 3

Slide 3

Características do EJB

Características do EJB • EJB é um modelo de componentes com foco em arquiteturas multi-camadas (baseado
Características do EJB • EJB é um modelo de componentes com foco em arquiteturas multi-camadas (baseado

• EJB é um modelo de componentes com foco em arquiteturas multi-camadas (baseado em princípios básicos de rede)

– RMI (Remote Method Invocation)

– JNDI (Java Naming and Directory Interface)

• Responsável pela regra de negócio das aplicações Web e não Web

• EJB é um modelo de alto nível para objetos distribuídos / computação distribuída

Slide 4
Slide 4
Slide 4

Slide 4

Por que EJB ?

Por que EJB ? • Componentes de Negócio Distribuídos • Vários tipos de aplicações clientes podem
Por que EJB ? • Componentes de Negócio Distribuídos • Vários tipos de aplicações clientes podem

• Componentes de Negócio Distribuídos

• Vários tipos de aplicações clientes podem utilizar as mesmas regras de negócio;

• Infra-estrutura do Container de EJBs

• Segurança

• Controle Transacional

• Gerenciamento de recursos

• Agendamento de tarefas

• Padrão de Mercado para Componentes de Negócio

Slide 5
Slide 5
Slide 5

Slide 5

Por que EJB ?

Por que EJB ? • Componentes de Negócio Distribuídos Cliente SOA / WS Regras de Negócio
Por que EJB ? • Componentes de Negócio Distribuídos Cliente SOA / WS Regras de Negócio

• Componentes de Negócio Distribuídos

Cliente SOA / WS Regras de Negócio web Swing / JavaFX Web Browser Java Web
Cliente
SOA / WS
Regras de
Negócio
web
Swing /
JavaFX
Web Browser
Java Web
JVM + Container EE
Rede Local
Slide 6
Slide 6
Slide 6

Slide 6

Por que EJB ?

Por que EJB ? • Infra-estrutura do Container de EJBs +regras Regras de Negócio Config. de
Por que EJB ? • Infra-estrutura do Container de EJBs +regras Regras de Negócio Config. de

• Infra-estrutura do Container de EJBs

+regras Regras de Negócio Config. de Ambiente Dados Legados Middleware de Mensagens Segurança Controle
+regras
Regras
de Negócio
Config. de
Ambiente
Dados
Legados
Middleware de
Mensagens
Segurança
Controle Transacional
Escalabilidade
Slide 7
Slide 7
Slide 7

Slide 7

Por que EJB ?

Por que EJB ? • Padrão de Mercado para Componentes de Negócio: • Oracle Glassfish e
Por que EJB ? • Padrão de Mercado para Componentes de Negócio: • Oracle Glassfish e

• Padrão de Mercado para Componentes de Negócio:

• Oracle Glassfish e WebLogic;

• Red Hat JBoss AS;

• IBM WebSphere;

• Apache Geronimo;

• etc

Slide 8
Slide 8
Slide 8

Slide 8

programaçãoNível programaçãoNível programaçãoNível

Nível programação

Remote Method Invocation

p r o g r a m a ç ã o Remote Method Invocation EJBEJBEJBEJB ServerServerServerServer
p r o g r a m a ç ã o Remote Method Invocation EJBEJBEJBEJB ServerServerServerServer
p r o g r a m a ç ã o Remote Method Invocation EJBEJBEJBEJB ServerServerServerServer
EJBEJBEJBEJB ServerServerServerServer //// ContainerContainerContainerContainer
EJBEJBEJBEJB ServerServerServerServer //// ContainerContainerContainerContainer
JRMPJRMPJRMPJRMP //// RMIRMIRMIRMI ---- IIOPIIOPIIOPIIOP
JRMPJRMPJRMPJRMP //// RMIRMIRMIRMI ---- IIOPIIOPIIOPIIOP
TCPTCPTCPTCP //// IPIPIPIP AplicaçãoAplicaçãoAplicaçãoAplicação
TCPTCPTCPTCP //// IPIPIPIP
AplicaçãoAplicaçãoAplicaçãoAplicação
ApresentaçãoApresentaçãoApresentaçãoApresentação
TransporteTransporteTransporteTransporte
rederederederede
TransporteTransporteTransporteTransporte rederederederede javax.ejbjavax.ejbjavax.ejbjavax.ejb

javax.ejbjavax.ejbjavax.ejbjavax.ejb

rederederederede javax.ejbjavax.ejbjavax.ejbjavax.ejb java.rmijava.rmijava.rmijava.rmi

java.rmijava.rmijava.rmijava.rmi

javax.ejbjavax.ejbjavax.ejbjavax.ejb java.rmijava.rmijava.rmijava.rmi java.netjava.netjava.netjava.net Slide 9

java.netjava.netjava.netjava.net

Slide 9
Slide 9
Slide 9

Slide 9

Tipos de EJBs

Tipos de EJBs • Java EE 1.4 – Session Bean (Stateless/Stateful) – Entity Bean (BMP/CMP) –
Tipos de EJBs • Java EE 1.4 – Session Bean (Stateless/Stateful) – Entity Bean (BMP/CMP) –

• Java EE 1.4

– Session Bean (Stateless/Stateful)

– Entity Bean (BMP/CMP)

– Message Driven Bean

• Java EE 5

– Session Bean (Stateless/Stateful)

– Message Driven Bean

• OBS.: JPA (API de persistência que substitui Entity Bean, mas não é um EJB)

Slide 10
Slide 10
Slide 10

Slide 10

EJB 3.x

EJB 3.x • Tipos: – Session beans (Stateless e Stateful) – Message-driven beans • Interface de
EJB 3.x • Tipos: – Session beans (Stateless e Stateful) – Message-driven beans • Interface de

• Tipos:

– Session beans (Stateless e Stateful)

– Message-driven beans

• Interface de negócio

– Local

– Remota

– Service Endpoint (web services)

• Classe de implementação do componente

– POJO somente com métodos do componente

• Uso simplificado

Slide 11
Slide 11
Slide 11

Slide 11

EJB 3.x

EJB 3.x • Interface de negócio – Anotada com o tipo da interface: @Local ( javax.ejb
EJB 3.x • Interface de negócio – Anotada com o tipo da interface: @Local ( javax.ejb

• Interface de negócio

– Anotada com o tipo da interface:

@Local

(javax.ejb)

@Remote

(javax.ejb)

@WebService (JAX-WS )

(javax.jws)

da interface: @Local ( javax.ejb ) @Remote ( javax.ejb ) @WebService (JAX-WS ) ( javax.jws )
Slide 12
Slide 12
Slide 12

Slide 12

EJB 3.x

EJB 3.x • Classe de implementação do componente – Anotada com o tipo do componente: @Stateless
EJB 3.x • Classe de implementação do componente – Anotada com o tipo do componente: @Stateless

• Classe de implementação do componente

– Anotada com o tipo do componente:

@Stateless

(javax.ejb)

@Stateful

(javax.ejb)

@MessageDriven

(javax.ejb)

Slide 13
Slide 13
Slide 13

Slide 13

EJB 3.x

EJB 3.x • Classe de implementação: import br.com.globalcode.model.Item; import java.util.*; import
EJB 3.x • Classe de implementação: import br.com.globalcode.model.Item; import java.util.*; import
• Classe de implementação: import br.com.globalcode.model.Item; import java.util.*; import javax.ejb.Stateful;
• Classe de implementação:
import br.com.globalcode.model.Item;
import java.util.*;
import javax.ejb.Stateful;
@Stateful
public class CarrinhoBean implements CarrinhoRemote {
List<Item> itens = new ArrayList<Item>();
public void addProduto(int codigo, int qtd) {
itens.add(new Item(codigo,qtd);
}
public List getProdutos() {
return itens;
}
}
codigo, int qtd) { itens.add(new Item(codigo,qtd); } public List getProdutos() { return itens; } } Slide
codigo, int qtd) { itens.add(new Item(codigo,qtd); } public List getProdutos() { return itens; } } Slide

Slide 14

codigo, int qtd) { itens.add(new Item(codigo,qtd); } public List getProdutos() { return itens; } } Slide

Programação para EJBs

Programação para EJBs • Empacotamento / Deployment: – É um jar com a classes dentro do
Programação para EJBs • Empacotamento / Deployment: – É um jar com a classes dentro do

• Empacotamento / Deployment:

– É um jar com a classes dentro do seus respectivos pacotes; – Contém um diretório META-INF com os deployment descriptors;

Slide 15
Slide 15
Slide 15

Slide 15

EJB 3.x

EJB 3.x • Uso: – Componentes são injetados dentro dos clientes – Anotações definem a dependência
EJB 3.x • Uso: – Componentes são injetados dentro dos clientes – Anotações definem a dependência

• Uso:

– Componentes são injetados dentro dos clientes – Anotações definem a dependência com o componente

Slide 16
Slide 16
Slide 16

Slide 16

EJB 3.x

EJB 3.x • Usando o EJB na versão 3.x Injeção de dependência Slide 17
EJB 3.x • Usando o EJB na versão 3.x Injeção de dependência Slide 17

• Usando o EJB na versão 3.x

Injeção de dependência

EJB 3.x • Usando o EJB na versão 3.x Injeção de dependência Slide 17
Slide 17
Slide 17
Slide 17

Slide 17

Enterprise Java Beans 3.1

Enterprise Java Beans 3.1 • JSR 318 – Melhora ainda mais EJBs 3.0 – Menor curva
Enterprise Java Beans 3.1 • JSR 318 – Melhora ainda mais EJBs 3.0 – Menor curva

• JSR 318

– Melhora ainda mais EJBs 3.0

– Menor curva de aprendizado

– Maior simplicidade para aplicações menos complexas

– Novos recursos promissores

• Principais mudanças

– Novo componente Singleton Bean

– Melhoria no agendamento de tarefas

– Alternativa simplificada a MDBs

– Simplicidade no uso em aplicações Web / Desktop

Slide 18
Slide 18
Slide 18

Slide 18

EJB Lite

EJB Lite • Subconjunto da EJB 3.1 API • Não define API adicional • Permite servidores
EJB Lite • Subconjunto da EJB 3.1 API • Não define API adicional • Permite servidores

• Subconjunto da EJB 3.1 API

• Não define API adicional

• Permite servidores mais leves para cenários simplificados – Nem toda aplicação utiliza 100% dos recursos EJB

Slide 19
Slide 19
Slide 19

Slide 19

EJB Lite

EJB Lite   EJB LITE EJB FULL Interface Local/NoInterface SIM SIM Interface Remota SIM
EJB Lite   EJB LITE EJB FULL Interface Local/NoInterface SIM SIM Interface Remota SIM
 

EJB LITE

EJB FULL

Interface Local/NoInterface

SIM

SIM

Interface Remota

SIM

Stateless, Stateful, Singleton

SIM

SIM

JPA 2.0

SIM

SIM

Chamadas Assíncronas

SIM

MDBs

SIM

Web Services EndPoints

SIM

Compatibilidade EJB 2.x

SIM

Interoperabilidade RMI-IIOP

SIM

Timer Service

SIM

Entity Beans

SIM

CMT/BMT

SIM

SIM

Segurança Declarativa

SIM

SIM

Interceptors

SIM

SIM

Slide 20
Slide 20
Slide 20

Slide 20

Deploy de EJBs na camada Web

Deploy de EJBs na camada Web • Facilita o uso de EJBs com aplicações baseadas na
Deploy de EJBs na camada Web • Facilita o uso de EJBs com aplicações baseadas na

• Facilita o uso de EJBs com aplicações baseadas na Web

• Menor curva de aprendizado

• Simplicidade

• Agora é possível empacotar EJBs diretamente no arquivo .war

• Em aplicações n-camadas recomenda-se o uso de módulos EJBs, como na 3.0.

Slide 21
Slide 21
Slide 21

Slide 21

Deploy de EJBs na camada Web

Deploy de EJBs na camada Web JAVAJAVAJAVAJAVA EEEEEEEE 5555 JAVAJAVAJAVAJAVA EEEEEEEE 6666
Deploy de EJBs na camada Web JAVAJAVAJAVAJAVA EEEEEEEE 5555 JAVAJAVAJAVAJAVA EEEEEEEE 6666

JAVAJAVAJAVAJAVA EEEEEEEE 5555

JAVAJAVAJAVAJAVA EEEEEEEE 6666

<<EJB>><<EJB>><<EJB>><<EJB>> jspjsp,jspjsp,,,
<<EJB>><<EJB>><<EJB>><<EJB>>
jspjsp,jspjsp,,,
CarrinhoComprasCarrinhoComprasCarrinhoComprasCarrinhoCompras
servletsservlets,servletsservlets,,,
imgimg,imgimg,,, etc.etc.etc.etc.
<<EJB>><<EJB>><<EJB>><<EJB>>
jspjsp,jspjsp,,,
CarrinhoComprasCarrinhoComprasCarrinhoComprasCarrinhoCompras
servletsservlets,servletsservlets,,,
imgimg,imgimg,,, etc.etc.etc.etc.
ecommerce.waecommerce.waecommerce.waecommerce.wa
carrinho.jacarrinho.jacarrinho.jacarrinho.ja
rrrr
rrrr
ecommerce.waecommerce.waecommerce.waecommerce.wa
rrrr
ecommerce.eaecommerce.eaecommerce.eaecommerce.ea
rrrr
Slide 22
Slide 22
Slide 22

Slide 22

Conclusões

Conclusões • Java EE 5 e 6 apresentaram muitas melhorias em relação às versões anteriores, facilitando
Conclusões • Java EE 5 e 6 apresentaram muitas melhorias em relação às versões anteriores, facilitando

Java EE 5 e 6 apresentaram muitas melhorias em relação às versões anteriores, facilitando bastante o desenvolvimento de aplicativos;

Alguns recursos não especificados são complementados por frameworks de mercado como Spring

Parte dos recursos que faltavam foram acrescentados no Java EE 6

Java EE 7 terá recursos para Cloud:

@MultiTenancy

Slide 23
Slide 23
Slide 23

Slide 23

Mais Informações

Mais Informações http://www.oracle.com/technetwork/java/javaee/overview/index.html
Mais Informações http://www.oracle.com/technetwork/java/javaee/overview/index.html

http://www.oracle.com/technetwork/java/javaee/overview/index.html

http://docs.oracle.com/javaee/5/tutorial/doc/

http://docs.oracle.com/javaee/6/tutorial/doc/

Slide 24
Slide 24
Slide 24

Slide 24