EJBRubem Azenha
Agenda
O que é EJB? Onde estamos? De onde viemos? Para onde vamos? Conclusão
O que é EJB?
Java EE = Java Enterprise Edition
Java para aplicações corporativas
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
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
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
Onde estamos?
Enterprise JavaBeans 3.0!!! Simplificação do desenvolvimento EJB:
POJOs Annotations Injection Conventions
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
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
Hello World EJB
EJB
Interface Remota
Aplicação Cliente
Configuração do JNDI
JARs do JBoss
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 :(
Onde Estamos?@Entitypublic class Produto {
@Id@GeneratedValueprivate Long id;private String name;private BigDecimal price;
(getters & setters omitidos)}
HANDS ON
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();
}}
}
Onde Estamos?
public void add(Product p) {em.persist(p);
}
E aí, comparando os dois exemplos, será que vale a pena usar EJB? :)
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)
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...
Culpado?
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!
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
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
Top Related