Enterprise Java Beans

22
EJB Rubem Azenha

description

EJB Presentation (in portuguese) at USCR.Java 2008.

Transcript of Enterprise Java Beans

Page 1: Enterprise Java Beans

EJBRubem Azenha

Page 2: Enterprise Java Beans

Agenda

O que é EJB? Onde estamos? De onde viemos? Para onde vamos? Conclusão

Page 3: Enterprise Java Beans

O que é EJB?

Java EE = Java Enterprise Edition

Java para aplicações corporativas

Page 4: Enterprise Java Beans

O que é EJB?

Mas... o que são aplicações corporativas? Aplicações “Grandes” com Complicações

“Grandes”: Transação Segurança Balanceamento de Carga Agendamento de tarefas Gerenciamento de recursos Reusabilidade Disponibilidade

Page 5: Enterprise Java Beans

O que é EJB?

EJB é uma tecnologia Java que permite que reles mortais criem aplicações “corporativas”

Um EJB é classe Java “turbinada” Um EJB roda um Application Server (AS)

O AS fornece todos aqueles serviços “corporativos” O AS controla o acesso aos EJBs

EJBs devem ser empactados num arquivo .jar EJBs são acessados através de interfaces

pelos clientes EJB e por outros EJBs através de um mecanismo chamado JNDI

Page 6: Enterprise Java Beans

O que é EJB?

Existem 3 tipos de EJB: Session Bean – Execução das regras de negócio

Stateless Session Bean: Não guarda estado (EJB com amnésia)

Stateful Session Bean: Guarda estado

Entity Bean – Persistência (acesso ao banco de dados)

Message-Driven Beans – Execução de processos assíncronos

Page 7: Enterprise Java Beans

Onde estamos?

Enterprise JavaBeans 3.0!!! Simplificação do desenvolvimento EJB:

POJOs Annotations Injection Conventions

Page 8: Enterprise Java Beans

Onde Estamos?

Exemplo: Stateless Session Bean SLSB podem ser construídos em cima de

POJOS (Plain Old Java Objects) Para utilizar um SLSB, basta:

Anotar o com @Stateless Criar uma interface e anotar com @Local\

@Remote Não é necessário nenhum arquivo XML

adicional

Page 9: Enterprise Java Beans

Hello World EJB

@Remotepublic interface HelloWorldRemote {

public String helloWorld();}

@Statelesspublic class HelloWorldBean implements HelloWorldRemote {

public String helloWorld() { return "Hello World from a EJB"; }}

HANDS ON

Page 10: Enterprise Java Beans

Hello World EJB

EJB

Interface Remota

Aplicação Cliente

Configuração do JNDI

JARs do JBoss

Page 11: Enterprise Java Beans

Onde Estamos? Exemplo: Entity Bean Utilização da JPA (Java Persistence API) Muito parecido com o framework Hibernate Entity Beans são construidos em cima de

POJOs Para criar um Entity Bean:

Anotar o EJB com @Entity Mapear os atributos com as anotações da JPA

É necessário apenas um arquivo de configuração, o persistence.xml :(

Page 12: Enterprise Java Beans

Onde Estamos?@Entitypublic class Produto {

@Id@GeneratedValueprivate Long id;private String name;private BigDecimal price;

(getters & setters omitidos)}

HANDS ON

Page 13: Enterprise Java Beans

Onde Estamos?public void add(Product p) {

Connection c = null; PreparedStatement stm = null;try {

c = DriverManager.getConnection("jdbc:hsql:file://C:/teste.db");

stm = c.prepareStatement("INSERT INTO PRODUCT (NAME, PRICE) VALUES (?, ?)");

stm.setString(1, p.getName());stm.setBigDecimal(2, p.getPrice());stm.executeUpdate();

} catch (SQLException e) {// Não faça isso em casa...e.printStackTrace();

} finally {try {

if (stm != null) {stm.close();

}if (c != null) {

c.close();}

} catch (SQLException e) {// Não faça isso em casa...e.printStackTrace();

}}

}

Page 14: Enterprise Java Beans

Onde Estamos?

public void add(Product p) {em.persist(p);

}

E aí, comparando os dois exemplos, será que vale a pena usar EJB? :)

Page 15: Enterprise Java Beans

Onde estamos?

A JPA pode ser usado separadamente Em aplicaçõe EJB, geralmente se usa Session

Beans como “fachadas” para os Entity Beans Sistema de Injeção e Inversão de Controle

facilita o uso (@PersistenceContext)

Page 16: Enterprise Java Beans

De onde viemos? EJB 2 e EJB 1 – a história é BEM diferente

Necessidade de interface Home

Necessidade de estender API do EJB (no POJOs)

Necessidade de configurar EJBs em dois arquivos XML

Não tem mecanismo de injeção (sempre lookup)

Problemas de performance (Entity Beans)

Build complexa e demorada

Desenvolvimento e manutenções demoradas

Ferramentas miraculosas prometidas (estamos esperando por elas até hoje)

Arquiteturas procedurais (BO, VO, DTO) Resultado...

Page 17: Enterprise Java Beans
Page 18: Enterprise Java Beans

Culpado?

Page 19: Enterprise Java Beans

Para onde vamos?

Versão “lite” do EJB EJBs dentro de aplicações web EJBs singleton Interfaces serão opcionais Opção mais simples para serviços assíncronos Endereço JNDI portável entre AS EJB para aplicações mais simples!

Page 20: Enterprise Java Beans

Conclusão

EJB 3.0 é uma solução viável para aplicações “corporativas”

Desenvolvimento EJB vem melhorando muito EJB 3.1 irá simplificar mais ainda o

desenvolvimento EJB. Dar manutenção em legado EJB 2.X é muito

trabalhoso

Page 21: Enterprise Java Beans

Conclusão – Alguns Cuidados

Os Application Servers são uma carroça A maioria das aplicações não precisam de

tanta escalabilidade Para as aplicações que precisam, é possível

conseguir escalar a aplicação sem usar EJBs Utilização de frameworks mais leves (como

Spring) é mais produtivo A especificação sempre vai estar um passo

atrás dos frameworks open source

Page 22: Enterprise Java Beans

Obrigado!

Rubem [email protected]

Os slides e os exemplos serão disponibilizados no site do evento