EJB ainda tem vez no Java EE 6? Fernando Lozano Consultor 4Linux lozano@4linux.com.br



Documentos relacionados
Experiência em missão crítica de missão crítica

Spring: Um suite de novas opções para Java EE

TDC2012. EJB simples e descomplicado, na prática. Slide 1

Mini-curso Gratuito Globalcode Slide 1

Fundamentos da Plataforma Java EE. Prof. Fellipe Aleixo

EJB 3.1: A Community Update

Como sobreviver com Java 2? Saulo Arruda

Programação e Configuração de Aplicações JEE. Edilmar Alves

UFG - Instituto de Informática

Java e Banco de Dados: JDBC, Hibernate e JPA

Como criar um EJB. Criando um projeto EJB com um cliente WEB no Eclipse

ENTERPRISE JAVABEANS 3. Msc. Daniele Carvalho Oliveira

Framework. Marcos Paulo de Souza Brito João Paulo Raittes

ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE

SISTEMA DE AGENDAMENTO E GERENCIAMENTO DE CONSULTAS CLÍNICAS

JSF e PrimeFaces. Professor: Ricardo Luis dos Santos IFSUL Campus Sapucaia do Sul

PROJETO PEDAGÓGICO DE CURSOS

Capítulo 1 - Java EE 6 por alto - 1

NOME DA APRESENTAÇÃO

Resumo: Perguntas a fazer ao elaborar um projeto arquitetural

Tuning de Servidores de Aplicação Java EE

UM ESTUDO SOBRE ARQUITETURA PARA DESENVOLVIMENTO DE SOFTWARE WEB UTILIZANDO NOVAS TECNOLOGIAS

Enterprise Java Beans

Argo Navis J931 - Padrões de Design J2EE. Introdução. Objetivos de aprender padrões J2EE. Conhecer padrões para uso na plataforma J2EE

Arquitetura JEE Introdução à Camada de Negócios: Enterprise Java Beans (EJB) Marcos Kalinowski

Desenvolvimento de aplicação web com framework JavaServer Faces e Hibernate

Fatos e Mitos do Java EE. Fernando Lozano Consultor 4Linux lozano@4linux.com.br

Capítulo 04: Persistência com SQLite

ARQUITETURA DO SISTEMA ERP PEGASUS

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

Java EE 6. A revolução do. Um overview sobre as novidades da JSR 316. a r t i g o

Fernando Kasten Peinado

Este livro é dedicado a minha esposa Edna e a todos os desenvolvedores que fizeram do software livre um meio profissional levado a sério.

Desenvolvendo aplicações desktop em Java: presente e futuro

DESENVOLVIMENTO COM JAVA EE E SUAS ESPECIFICAÇÕES

SCE-557. Técnicas de Programação para WEB. Rodrigo Fernandes de Mello

Sistemas Distribuídos na WEB (Plataformas para Aplicações Distribuídas) Sumário. Java 2 Enterprise Edition. J2EE (Java 2 Enterprise Edition)

PROGRAMAÇÃO SERVIDOR PADRÕES MVC E DAO EM SISTEMAS WEB. Prof. Dr. Daniel Caetano

Prof. Fellipe Araújo Aleixo

Prática da Disciplina de Sistemas Distribuídos Serviços Web IFMA DAI Professor Mauro Lopes C. Silva

1 Criar uma entity a partir de uma web application que usa a Framework JavaServer Faces (JSF)

Enterprise Java Bean. Enterprise JavaBeans

Linguagem de Programação JAVA. Professora Michelle Nery Nomeclaturas

Documento de Projeto de Sistema

Laboratório EJB e J2EE Uma aplicação completa

CURSO DESENVOLVEDOR JAVA Edição 2010

PadrãoIX. Módulo II JAVA. Marcio de Carvalho Victorino. Servlets A,L,F,M

UFG - Instituto de Informática

HIBERNATE EM APLICAÇÃO JAVA WEB

Projeto Demoiselle. Para perguntas e respostas, utilizem a lista de discussões de usuários da comunidade: demoiselle-users@lists.sourceforge.

Demoiselle Report Guide. Demoiselle Report. Marlon Carvalho. Rodrigo Hjort. Robson Ximenes

CURSO DESENVOLVEDOR JAVA WEB E FLEX Setembro de 2010 à Janeiro de 2011

ORDEM DE SERVIÇO OS 003/DINFO/ /09/2013

PLANO DE ENSINO INSTITUTO FEDERAL SUL-RIO-GRANDENSE CAMPUS SAPUCAIA DO SUL PRÓ-REITORIA DE ENSINO

UTILIZAÇÃO DA TECNOLOGIA ENTERPRISE JAVABEANS NO DESENVOLVIMENTO DE APLICAÇÕES DISTRÍBUIDAS

Spring Framework Luiz Daniel Creão Augusto Sistemas de Middleware Avançados IME-USP /02

SISTEMA DE GESTÃO DE PRODUÇÃO DE EVENTOS

Arquiteturas de Aplicações Web. Leonardo Gresta Paulino Murta

Formando Desenvolvedores Efetivos. Fernando Lozano Arquiteto de Soluções 4Linux

Java 2 Enterprise Edition Uma aplicação J2EE completa

DESENVOLVIMENTO WEB UTILIZANDO FRAMEWORK PRIMEFACES E OUTRAS TECNOLOGIAS ATUAIS

Apresentação. Fernando Lozano

UNIVERSIDADE FEDERAL DA BAHIA INSTITUTO DE MATEMÁTICA CIÊNCIA DA COMPUTAÇÃO LINGUAGENS PARA APLICAÇÃO COMERCIAL. Java Peristence API 1.

FACULDADE SENAC-RS PELOTAS RODRIGO ALMEIDA PEREIRA. Sistemas de Informação

Artigo JavaMagazine (edição 58)

Desenvolvendo Portlets utilizando JSF, Ajax, Richfaces. Gustavo Lira Consultor 4Linux

Java II. Sérgio Luiz Ruivace Cerqueira

J550 Padrões de Projeto J2EE para Aplicações Web

WebApps em Java com uso de Frameworks

Arquitetura de Aplicações JSP/Web. Padrão Arquitetural MVC

Fábrica de Software 29/04/2015

JPA: Persistência padronizada em Java

UFG - Instituto de Informática

Web Technologies. Tópicos da apresentação

Padrões de Projeto WEB e o MVC

A ferramenta que você necessitava para seu Buffet Infantil.

Oracle WebLogic Server 11g: Conceitos Básicos de Administração

Palavras-chave: clínica de psicologia, Java EE 6, Web Profile, EBJ Lite, sistema de gerenciamento.

Explorando os novos recursos de EJB 3.1. Fabio Velloso

Adriano Reine Bueno Rafael Barros Silva

Desktop em minutos com genesis, Matisse, Java WebStart e JSR-296

JPA Passo a Passo. Henrique Eduardo M. Oliveira henrique@voffice.com.br. Globalcode Open4Education

BlackBerry Mobile Voice System

J2EE TM Java 2 Plataform, Enterprise Edition

Prevayler. Perola. André Luís Sales de Moraes Juliana Keiko Yamaguchi Tatiana Yuka Takaki

Desenvolvimento WEB II. Professora: Kelly de Paula Cunha

Desenvolvendo Portlets utilizando JSF, Ajax, Richfaces. Gustavo Lira Consultor 4Linux

Integração de sistemas utilizando Web Services do tipo REST

CURSO DESENVOLVEDOR JAVA Edição Intensiva de Férias

Um Processo para Desenvolvimento de Aplicações Web Baseado em Serviços. Autores: Fábio Zaupa, Itana Gimenes, Don Cowan, Paulo Alencar e Carlos Lucena

Java Server Faces 2.0 Rich Faces 4.0

Unidade 8: Padrão MVC e DAO Prof. Daniel Caetano

Powerlogic Agosto / 2011.

UM ESTUDO SOBRE OS FRAMEWORKS JSF E PRIMEFACES NO DESENVOLVIMENTO DE SOFTWARE WEB

Agenda. Desenvolvimento um aplicativo completo usando JSF, EJB e padrões Rodrigo Cândido e Vinny Nunes Instrutores Globalcode / VOffice.

INTEGRAÇÃO DE TÉCNICAS DE SISTEMAS DISTRIBUÍDOS APLICADA AO DESENVOLVIMENTO DE UM AMBIENTE PARA O JOGO DE XADREZ

Transcrição:

EJB ainda tem vez no Java EE 6? Fernando Lozano Consultor 4Linux lozano@4linux.com.br

Você Gosta do EJB? O EJB esteve por muito tempo na berlinda do mundo Java É pesado... É complicado... Código muito verboso Não aguento mais aqueles XMLs! É mais moderno usar IoC com Spring ou Guice!

Você gosta do EJB 3? O EJB 3, apesar de todas as melhorias e simplificações, foi ignorado por muitos desenvolvedores JSF + JPA fazem tudo o que eu preciso (CRUD) Spring já faz tudo o que eu preciso (apesar dos XMLs) Eu uso Guice! Eu uso Seam!

A Grande Novidade do Java EE 6 CDI Contexts and Dependency Injection Generaliza injeção de dependências e gerenciamento de contextos (ciclo de vida) para beans gerenciados Quase tudo é um managed bean do CDI Quase tudo pode ser injetado em um managed bean Tem @PreDestroy, interceptadores, decoradores e eventos Então pra que EJB?

Cadê a Camada de Negócios? Há muito se estabeleceu que uma boa aplicação separa responsabilidades em três camadas: Apresentação / Negócios / Persistência JSF: camada de apresentação JPA: camada de persistência Spring, Guice, Seam, CDI: cola entre as camadas Será que você não está misturando a lógica de negócios com as lógicas de apresentação e persistência, gerando código espaguetti em vez de três camadas ou MVC?

EJB == Camada de Negócios EJB é a única tecnologia do Java EE que foi criada para atender as necessidades da camada de negócios EJBs remotos formam uma implementação perfeitamente válida (e leve!) para uma arquitetura SOA É melhor criar Web Services usando EJB do que POJOs Extensões SOAP (WS-Transactions e WS-Security) se integram naturamente às capacidades do EJB Por que não REST com EJB?

Benefícios do EJB Deixando de lado o JPA, que deveria ser desde o início uma especificação à parte: Independência de localização ou remoting (distribuição / escalabilidade horizontal) Gerência de transações automática Reversão (programática) do estado em memória após um roolback Segurança declarativa baseada em roles Thread-safe sem sincronização Instâncias em pool

Mais Benefícios do EJB EJBs ainda oferecem integração facilitada com outros serviços do servidor de aplicação: Integração com JMS (MDBs) Agendamento (Timers) Gerenciabilidade (JMX) Alta disponibilidade / Clusterização

Extensões portáveis do CDI Vários recursos do EJB, por exemplo transações, poderão virar, em futuras versões do Java EE, extensões do CDI [Reza Rahman, CDI JSR member] Injected Beans do CDI == acesso via proxies Client view do EJB == acesso via proxies A implementação de EJB 2 e 3 em alguns servidores já era feita via proxies e em alguns casos até mesmo usando frameworks de AOP Então se o EJB for re-especificado em termos de CDI, ainda continua sendo o velho EJB ;-)

EJB + CDI == Evolução!= Revolução EJB 2: InitialContext + lookups EJB 3: @EJB, @Resource, @PersistenceContext Mas apenas em componentes Servlets, EJBs e às vezes Managed Beans JSF JSF Converters, Actions Struts, Helpers Classes, etc continuam usando InitialContext + lookup :-( Frameworks como Seam fazem sua própria injeção CDI: @EJB, @Resource, @PersistenceContext Funciona em qualquer POJO! Os frameworks não precisam mais reinventar a injeção! JNDI continua sendo usado por baixo dos panos

@Inject x @EJB, @etc CDI @Inject Type-safe Estereótipos Mesmo Classloader (mesmo pacote, mesma JVM) @EJB, @Resource, @PersistenceContext Strings (nomes JNDI) Compartilham recursos com outros pacotes dentro da mesma JVM Podem acessar componentes / serviços (EJB) em outras JVMs (outros app servers)

@Inject + @EJB, @etc Type safe + independente de localização Defina recursos JNDI como Producer Fields Injete os Managed Beans resultantes Use @Alternative para múltiplas implementações Se seus EJBs forem sempre locais, você pode usar @Inject em vez de @EJB, mas aí perde a independência de localização

CDI e EJB se complementam O CDI olha para dentro da aplicação Para que ficar mapeando um monte de <ejb-ref> entre componentes que nunca foram criados para reuso fora da sua aplicação de origem? O EJB olha para fora da aplicação Por que não reusar serviços oferecidos por outras aplicações Por que não aproveitar serviços de outros servidores de aplicações? Nenhuma aplicação verdadeiramente enterprise é isolada!

Uma Arquitetura com EJB + CDI Facelets Visão #{EL} POJO Controlador @EJB Fila JMS @Resource EJB Negócios @EJB @Inject JPA EntityManager @Persistence Context EJB ou POJO DAO Persistência Outro EJB

Programação x Configuração Algumas coisas ficam melhor gerenciadas pelo servidor de aplicações (e pelo administrador do servidor) Qual Datasource / Servidor de BD / Dimensionamento de pool para cada aplicação e cada ambiente? Onde está o EJB que fornece o serviço XPTO? Onde está o Web Service que fornece o serviço XPTO? Se tudo for feito via CDI puro, tudo é programação e recompilação (gerenciado pela aplicação)

Um pouco de XML faz bem Configurações devem ser externalizadas, portanto não deveriam ser anotações em código Java CDI beans.xml para implementações alternativas de um Managed Bean Descritor proprietário para linkar referências JNDI no ambiente local (java:comp/env) aos recursos globais ou remotos Mapeamentos completos JPA para facilitar a intervenção do DBA e otimizações do modelo físico

Conclusão EJB continuará sendo parte das próximas versões do Java EE... e não será como legado! Há vários benefícios em se usar também EJB nas suas aplicações O CDI não substitui o EJB O CDI torna o EJB mais fácil e mais acessível

Obrigado lozano@4linux.com.br www.4linux.com.br twitter.com/4linuxbr Tel: 55-11-2125-4747