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.jar java:app/MyAppEJB/CustomerManager!br.com.waelson.CustomerManager MyApp.ear java: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
Contato www.waelson.com.br [email_address] waelson

EJB 3.1