EJB Rubem Azenha
Agenda <ul><li>O que é EJB? </li></ul><ul><li>Onde estamos? </li></ul><ul><li>De onde viemos? </li></ul><ul><li>Para onde ...
O que é EJB? Java EE = Java   Enterprise   Edition Java para aplicações  corporativas
O que é EJB? <ul><li>Mas... o que são aplicações corporativas? </li></ul><ul><li>Aplicações “Grandes” com Complicações “Gr...
O que é EJB? <ul><li>EJB é uma tecnologia Java que permite que reles mortais criem aplicações “corporativas” </li></ul><ul...
O que é EJB? <ul><li>Existem 3 tipos de EJB: </li></ul><ul><ul><li>Session Bean – Execução das regras de negócio </li></ul...
Onde estamos? <ul><li>Enterprise JavaBeans 3.0!!! </li></ul><ul><li>Simplificação do desenvolvimento EJB: </li></ul><ul><u...
Onde Estamos? <ul><li>Exemplo: Stateless Session Bean </li></ul><ul><li>SLSB podem ser construídos em cima de POJOS (Plain...
Hello World EJB @Remote public   interface   HelloWorldRemote { public   String   helloWorld(); } @ Stateless public   cla...
Hello World EJB EJB Interface Remota Aplicação Cliente Configuração do JNDI JARs do JBoss
Onde Estamos? <ul><li>Exemplo: Entity Bean </li></ul><ul><li>Utilização da JPA (Java Persistence API) ‏ </li></ul><ul><li>...
Onde Estamos? @Entity public   class   Produto { @Id @GeneratedValue private   Long id; private   String name; private   B...
Onde Estamos? public   void   add(Product p) { Connection c =   null ;   PreparedStatement stm =   null ; try   { c  = Dri...
Onde Estamos? public   void   add(Product p) { em.persist(p); } E aí, comparando os dois exemplos,  será que vale a pena u...
Onde estamos? <ul><li>A JPA pode ser usado separadamente </li></ul><ul><li>Em aplicaçõe EJB, geralmente se usa Session Bea...
De onde viemos? <ul><li>EJB 2 e EJB 1 – a história é BEM diferente </li></ul><ul><ul><li>Necessidade de interface Home </l...
 
Culpado?
Para onde vamos? <ul><li>Versão “lite” do EJB </li></ul><ul><li>EJBs dentro de aplicações web </li></ul><ul><li>EJBs singl...
Conclusão <ul><li>EJB 3.0 é uma solução viável para aplicações “corporativas” </li></ul><ul><li>Desenvolvimento EJB vem me...
Conclusão – Alguns Cuidados <ul><li>Os Application Servers são uma carroça </li></ul><ul><li>A maioria das aplicações não ...
Obrigado! Rubem Azenha [email_address] Os slides e os exemplos serão disponibilizados no site do evento
Upcoming SlideShare
Loading in...5
×

Enterprise Java Beans

6,070

Published on

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

Published in: Economy & Finance, Technology
0 Comments
7 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
6,070
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
462
Comments
0
Likes
7
Embeds 0
No embeds

No notes for slide

Enterprise Java Beans

  1. 1. EJB Rubem Azenha
  2. 2. Agenda <ul><li>O que é EJB? </li></ul><ul><li>Onde estamos? </li></ul><ul><li>De onde viemos? </li></ul><ul><li>Para onde vamos? </li></ul><ul><li>Conclusão </li></ul>
  3. 3. O que é EJB? Java EE = Java Enterprise Edition Java para aplicações corporativas
  4. 4. O que é EJB? <ul><li>Mas... o que são aplicações corporativas? </li></ul><ul><li>Aplicações “Grandes” com Complicações “Grandes”: </li></ul><ul><ul><li>Transação </li></ul></ul><ul><ul><li>Segurança </li></ul></ul><ul><ul><li>Balanceamento de Carga </li></ul></ul><ul><ul><li>Agendamento de tarefas </li></ul></ul><ul><ul><li>Gerenciamento de recursos </li></ul></ul><ul><ul><li>Reusabilidade </li></ul></ul><ul><ul><li>Disponibilidade </li></ul></ul>
  5. 5. O que é EJB? <ul><li>EJB é uma tecnologia Java que permite que reles mortais criem aplicações “corporativas” </li></ul><ul><li>Um EJB é classe Java “turbinada” </li></ul><ul><li>Um EJB roda um Application Server (AS) ‏ </li></ul><ul><ul><li>O AS fornece todos aqueles serviços “corporativos” </li></ul></ul><ul><ul><li>O AS controla o acesso aos EJBs </li></ul></ul><ul><li>EJBs devem ser empactados num arquivo .jar </li></ul><ul><li>EJBs são acessados através de interfaces pelos clientes EJB e por outros EJBs através de um mecanismo chamado JNDI </li></ul>
  6. 6. O que é EJB? <ul><li>Existem 3 tipos de EJB: </li></ul><ul><ul><li>Session Bean – Execução das regras de negócio </li></ul></ul><ul><ul><ul><li>Stateless Session Bean: Não guarda estado (EJB com amnésia) ‏ </li></ul></ul></ul><ul><ul><ul><li>Stateful Session Bean: Guarda estado </li></ul></ul></ul><ul><ul><li>Entity Bean – Persistência (acesso ao banco de dados) ‏ </li></ul></ul><ul><ul><li>Message-Driven Beans – Execução de processos assíncronos </li></ul></ul>
  7. 7. Onde estamos? <ul><li>Enterprise JavaBeans 3.0!!! </li></ul><ul><li>Simplificação do desenvolvimento EJB: </li></ul><ul><ul><li>POJOs </li></ul></ul><ul><ul><li>Annotations </li></ul></ul><ul><ul><li>Injection </li></ul></ul><ul><ul><li>Conventions </li></ul></ul>
  8. 8. Onde Estamos? <ul><li>Exemplo: Stateless Session Bean </li></ul><ul><li>SLSB podem ser construídos em cima de POJOS (Plain Old Java Objects) ‏ </li></ul><ul><li>Para utilizar um SLSB, basta: </li></ul><ul><ul><li>Anotar o com @Stateless </li></ul></ul><ul><ul><li>Criar uma interface e anotar com @Local@Remote </li></ul></ul><ul><li>Não é necessário nenhum arquivo XML adicional </li></ul>
  9. 9. Hello World EJB @Remote public interface HelloWorldRemote { public String helloWorld(); } @ Stateless public class HelloWorldBean implements HelloWorldRemote { public String helloWorld() { return &quot;Hello World from a EJB&quot;; } } HANDS ON
  10. 10. Hello World EJB EJB Interface Remota Aplicação Cliente Configuração do JNDI JARs do JBoss
  11. 11. Onde Estamos? <ul><li>Exemplo: Entity Bean </li></ul><ul><li>Utilização da JPA (Java Persistence API) ‏ </li></ul><ul><li>Muito parecido com o framework Hibernate </li></ul><ul><li>Entity Beans são construidos em cima de POJOs </li></ul><ul><li>Para criar um Entity Bean: </li></ul><ul><ul><li>Anotar o EJB com @Entity </li></ul></ul><ul><ul><li>Mapear os atributos com as anotações da JPA </li></ul></ul><ul><li>É necessário apenas um arquivo de configuração, o persistence.xml :( </li></ul>
  12. 12. Onde Estamos? @Entity public class Produto { @Id @GeneratedValue private Long id; private String name; private BigDecimal price; (getters & setters omitidos) ‏ } HANDS ON
  13. 13. Onde Estamos? public void add(Product p) { Connection c = null ; PreparedStatement stm = null ; try { c = DriverManager. getConnection (&quot; jdbc:hsql:file://C:/teste.db&quot; ) ; stm = c.prepareStatement( &quot;INSERT INTO PRODUCT (NAME, PRICE) VALUES (?, ?)&quot; ) ; 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(); } } }
  14. 14. Onde Estamos? public void add(Product p) { em.persist(p); } E aí, comparando os dois exemplos, será que vale a pena usar EJB? :) ‏
  15. 15. Onde estamos? <ul><li>A JPA pode ser usado separadamente </li></ul><ul><li>Em aplicaçõe EJB, geralmente se usa Session Beans como “fachadas” para os Entity Beans </li></ul><ul><li>Sistema de Injeção e Inversão de Controle facilita o uso (@PersistenceContext) ‏ </li></ul>
  16. 16. De onde viemos? <ul><li>EJB 2 e EJB 1 – a história é BEM diferente </li></ul><ul><ul><li>Necessidade de interface Home </li></ul></ul><ul><ul><li>Necessidade de estender API do EJB (no POJOs) ‏ </li></ul></ul><ul><ul><li>Necessidade de configurar EJBs em dois arquivos XML </li></ul></ul><ul><ul><li>Não tem mecanismo de injeção (sempre lookup) ‏ </li></ul></ul><ul><ul><li>Problemas de performance (Entity Beans) ‏ </li></ul></ul><ul><ul><li>Build complexa e demorada </li></ul></ul><ul><ul><li>Desenvolvimento e manutenções demoradas </li></ul></ul><ul><ul><li>Ferramentas miraculosas prometidas (estamos esperando por elas até hoje) ‏ </li></ul></ul><ul><ul><li>Arquiteturas procedurais (BO, VO, DTO) ‏ </li></ul></ul><ul><li>Resultado... </li></ul>
  17. 18. Culpado?
  18. 19. Para onde vamos? <ul><li>Versão “lite” do EJB </li></ul><ul><li>EJBs dentro de aplicações web </li></ul><ul><li>EJBs singleton </li></ul><ul><li>Interfaces serão opcionais </li></ul><ul><li>Opção mais simples para serviços assíncronos </li></ul><ul><li>Endereço JNDI portável entre AS </li></ul><ul><li>EJB para aplicações mais simples! </li></ul>
  19. 20. Conclusão <ul><li>EJB 3.0 é uma solução viável para aplicações “corporativas” </li></ul><ul><li>Desenvolvimento EJB vem melhorando muito </li></ul><ul><li>EJB 3.1 irá simplificar mais ainda o desenvolvimento EJB. </li></ul><ul><li>Dar manutenção em legado EJB 2.X é muito trabalhoso </li></ul>
  20. 21. Conclusão – Alguns Cuidados <ul><li>Os Application Servers são uma carroça </li></ul><ul><li>A maioria das aplicações não precisam de tanta escalabilidade </li></ul><ul><li>Para as aplicações que precisam, é possível conseguir escalar a aplicação sem usar EJBs </li></ul><ul><li>Utilização de frameworks mais leves (como Spring) é mais produtivo </li></ul><ul><li>A especificação sempre vai estar um passo atrás dos frameworks open source </li></ul>
  21. 22. Obrigado! Rubem Azenha [email_address] Os slides e os exemplos serão disponibilizados no site do evento
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×