Upload
waelson-negreiros
View
2.933
Download
8
Embed Size (px)
DESCRIPTION
Slide da palestra EJB 3.1 apresentado no auditório do Uniceub pelo DFJUG (DF Java User Group) no dia 14/07/2010.
Citation preview
Sobre Mim
Trabalha com EJB desde a versão 2.1 Possui mais de 10 anos de
experiência em TI Arquiteto de Software Sênior Instrutor da Bluestar Tecnologia
desde 2006 Possui várias certificações Java
Sobre Você
Quantas pessoas utilizam ou já utilizaram EJB (qualquer versão)?
Quantas pessoas já precisaram escalar suas aplicações?
Quantas pessoas utilizam produtos não padronizados com as mesmas características?
Agenda
Visão Geral Novas Características Conclusão Dúvidas e Perguntas
Visão Geral
Visão Geral
A comunidade foi ouvida
Visão Geral
Spec EJB 3.1• JSR 318• Iniciou em 17/07/2007• Release final liberada em 10/12/2009• Liderada por Kenneth Saks, Sun
Microsystens• JPA definida pela JSR 317
Visão Geral
Objetivos• Simplificar a arquitetura EJB• Reduzir a complexidade• Adicionar novas funcionalidade
Novas Características
Novas Características
Singleton Interface Opcional Timer Service Melhorado EJB na Camada Web Session Bean Assíncronos EJB Lite Nomes JNDI Padronizados EJB 3 Java SE Runtime
Novas Características
Singleton• Novo EJB• Similar ao pattern Singleton (GOF)• Boa opção para cache• Dispõem dos serviços do container
Novas Características
Singleton• É necessário controlar:
• Concorrência• Integridade dos dados
• Dois métodos• Container Managed Concurrency
– O container controla concorrência baseada em annotation ao nível de método
• Bean Managed Concurrency– O desenvolvedor é responsável pelo controle de
concorrência
Novas Características
Novas Características
Singleton• Container Managed Concurrency
• @Lock(READ)– Habilita leitura a todos os acessos
• @Lock(WRITE)– Permite apenas um único acesso
• @AccessTimeout(value=1, unit=SECONDS)– Aplicável a classes e métodos– Especifica o tempo que o método pode ficar
bloqueado
Novas Características
Novas Características
Novas Características
Singleton• O Singleton pode ser iniciado junto com
o container• Basta usar a annotation @Startup
Novas Características
Novas Características
Singleton• Um Singleton pode depender de outro
durante a subida do container• @DependsOn – Define a sequência de
inicialização dos EJBs
Novas Características
Novas Características
Interface Opcional• EJBs parecidos com POJO• Interfaces as vezes são desnecessárias
Novas Características
Novas Características
Time Service melhorado• Uso simplificado• Pode-se utilizar Annotations• Similar a Cron Linux
Novas Características
Time Service melhorado• Exemplo de limitações do EJB 3.0
• Agendamento feito programaticamente• Tarefas executados apenas um vez ou em
ciclos bem definidos
Novas Características
Novas Características
Novas Características
Novas Características
Novas Características
EJB na Camada Web• Modelo de empacotamento diferenciado
para aplicações Web-Centric• EJBs dentro de WAR• JAR e WAR continuam existindo
Novas Características
Novas Características
Novas Características
Session Bean Assíncrono• Alternativa ao JMS• Uso de Annotations• APIs Future e AsyncResult
Novas Características
Novas Características
Novas Características
EJB Lite• Subconjunto da API EJB3.1 para Web
Profile• Expansão da portabilidade do EJBs• Publicação do EJB podem ser feitas em
• Web Profile• Full Profile
Novas Características
Novas Características
Nome JNDI Padronizado• Problema
• Portabilidade dos EJBs não transparente para o cliente
Novas Características
Nome JNDI Padronizado• OC4J
• Usa o nome especificado na annotation @Stateless
• JBOSS• Usa application EAR + Nome do EJB +
/remote– App/CustomerManager/remote
Novas Características
Nome JNDI Padronizado• Padrão
java:global[/application-name]/<module-name>/<bean-name>[!<fully-qualified-interface-name>]
java:app[/<module-name>]/<bean-name>[!<fully-qualified-interface-name>]
java:module/<bean-name>[!<fully-qualified-interface-name>]
Novas Características
Nome JNDI Padronizado• MyWebApp.war
java:global/MyWebApp/CustomerManager! br.com.waelson.CustomerManager
• MyAppEJB.jarjava:app/MyAppEJB/CustomerManager!
br.com.waelson.CustomerManager
• MyApp.earjava:module/MyApp/MyAppEJB/
CustomerManager! br.com.waelson.CustomerManager
EJB 3 Java SE Runtime
Principais motivações:• Dificuldade em testes locais com EJB• Necessidade de rodar EJBs sobre a
mesma JVM do cliente
EJB 3 Java SE Runtime
EJB 3 Java SE Runtime
São necessários 3 jars• accountEJB.jar• clienteAccount.jar• vendor-provider.jar
% java -cp account.jar:client.jar:vendor-provider.jar br.com.waelson.AccountTest
Conclusão
Conclusão
A cada versão torna-se mais fácil trabalhar com EJBs
JNDI Names portável Novas funcionalidades
• Asynchronous Beans e Singleton
Dúvidas e Perguntas