Mini-curso Gratuito Globalcode Slide 1



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

EJB ainda tem vez no Java EE 6? Fernando Lozano Consultor 4Linux

ENTERPRISE JAVABEANS 3. Msc. Daniele Carvalho Oliveira

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

Enterprise Java Beans

Java e Banco de Dados: JDBC, Hibernate e JPA

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

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

Prof. Fellipe Araújo Aleixo

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

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

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

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

EJB 3.1: A Community Update

UFG - Instituto de Informática

Enterprise Java Bean. Enterprise JavaBeans

UFG - Instituto de Informática

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

Fundamentos da Plataforma Java EE. Prof. Fellipe Aleixo

Java 2 Enterprise Edition Fundamentos básicos de Transações

PROJETO PEDAGÓGICO DE CURSOS

HIBERNATE EM APLICAÇÃO JAVA WEB

Como sobreviver com Java 2? Saulo Arruda

Web Technologies. Tópicos da apresentação

DESENVOLVIMENTO COM JAVA EE E SUAS ESPECIFICAÇÕES

Serviço de Transação. Transação - Conceitos

ARQUITETURA DO SISTEMA ERP PEGASUS

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

4 - Padrões da Camada de Integração. Introdução

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

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

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

Componentes no Java EE

JPA: Persistência padronizada em Java

UFG - Instituto de Informática

J2EE. J2EE - Surgimento

NOME DA APRESENTAÇÃO

SISTEMA DE AGENDAMENTO E GERENCIAMENTO DE CONSULTAS CLÍNICAS

Enterprise JavaBeans. Java Deployment Course. por Jorge H. C. Fernandes DI-UFPE Julho de 1999

UNIDADE IV ENTERPRISE JAVABEANS

Java 2 Enterprise Edition Uma aplicação J2EE completa

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

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

Bancos de dados distribuídos Prof. Tiago Eugenio de Melo

Projeto Arquitetural do IEmbedded

Aplicação da Arquitetura Multicamadas Utilizando Java. Raquel Schlickmann Orientador: Marcel Hugo

4 Um Exemplo de Implementação

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

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

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

Adriano Reine Bueno Rafael Barros Silva

J2EE TM Java 2 Plataform, Enterprise Edition

UFG - Instituto de Informática

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

Boas Práticas no desenvol Aprenda a desenvolver componentes e serviços

Desenvolvimento WEB II. Professora: Kelly de Paula Cunha

Sistemas Distribuídos e Tolerância a Falhas Mestrado em Engenharia Informática 1ª ano / 2ª semestre

Mini-curso Gratuíto.

Enterprise Java Beans (III)

EXPLORE - UMA FERRAMENTA DE SOFTWARE PARA EXPERIMENTAÇÃO PRÁTICA COM TRANSAÇÕES DISTRIBUÍDAS EM SISTEMAS BASEADOS EM COMPONENTES

Considerações no Projeto de Sistemas Cliente/Servidor

EJB. Session Beans. J2EE (C. Geyer) Introdução a SessionBean 1

Artigo JavaMagazine (edição 58)

Padrões do Catálogo J2EE. Lincoln Souza Rocha, M.Sc.

MÓDULO. Linguagem de Programação para Web 2

Uma Abordagem sobre Mapeamento Objeto Relacional com Hibernate

Prova Específica Cargo Desenvolvimento

UNIVERSIDADE. Sistemas Distribuídos

? O SQL SERVER é um sistema de gerenciamento de banco de dados relacional que foi desenvolvido inicialmente pela Microsoft em parceria com a Sybase.

Padrões de Projeto Implementados em Infraestrturas de Componentes

Programação para a Internet. Prof. M.Sc. Sílvio Bacalá Jr sbacala@gmail.com

Java para Desenvolvimento Web

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

Resumo: Perguntas a fazer ao elaborar um projeto arquitetural

Projetos Corporativos Baseados na Tecnologia Java Que Falham: O Que Podemos Aprender Deles?

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

Apresentação. Fernando Lozano

J530 - Enterprise JavaBeans. Introdução a EJB e Stateless. Session Beans. argonavis.com.br. Helder da Rocha (helder@acm.org)

Explorando os novos recursos de EJB 3.1. Fabio Velloso

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

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

IMPLEMENTAÇÃO DE SOCKETS E THREADS NO DESENVOLVIMENTO DE SISTEMAS CLIENTE / SERVIDOR: UM ESTUDO EM VB.NET

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

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

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

Etc & Tal. Volume 2 - Número 1 - Abril 2009 SBC HORIZONTES 44

Tecnologias Web. Java Enterprise Edition

PROCEDIMENTOS PARA A INSTALAÇÃO E UTILIZAÇÃO DO APLICATIVO DE LEILÃO ELETRÔNICO DA CONAB

Introdução ao Modelos de Duas Camadas Cliente Servidor

Persistência de Dados em Java com JPA e Toplink

5 Estudo de caso: utilizando o sistema para requisição de material

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

Mapeamento Lógico/Relacional com JPA

Universidade da Beira Interior

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.

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

Transcrição:

Mini-curso Gratuito Slide 1

Mini-curso Gratuito Introdução Enterprise Java Beans (EJB) 3.0 Slide 2

Agenda Plataforma Java EE Conceitos Iniciais (EJB) Session Bean Message-Driven Bean (MDB) Java Persistence API (JPA) Serviços Disponíveis Injeção de Dependência Callback Methods Transações Segurança Interceptors Timers Conclusões Perguntas e Respostas Slide 3

Palestrante Rodrigo Cândido da Silva rcandidosilva@gmail.com Trabalha: : Arquiteto Java / Instrutor Experiência: : 8 anos na área de desenvolvimento de sistemas,, trabalhando com Java desde 2001; Certificações ões: : SCJA, SCJP, SCWCD, SCBCD, SCEA Hobby Favorito: : Futebol,, Praia, Filmes,, etc Slide 4

Agenda Plataforma Java EE Conceitos Iniciais (EJB) Session Bean Message-Driven Bean (MDB) Java Persistence API (JPA) Serviços Disponíveis Injeção de Dependência Callback Methods Transações Segurança Interceptors Timers Conclusões Perguntas e Respostas Slide 5

Plataforma Java EE Suporte ao desenvolvimento de aplicações enterprise Aplicações distribuídas, seguras, escaláveis, de alta disponibilidade e com baixo custo de manutenção Plataforma para desenvolvimento de componentes para aplicações em multicamadas Enterprise JavaBeans JavaServer Pages Servlets Componentes rodam em um servidor Java EE Gerencia e oferece serviços de alto nível aos componentes por meio de Containers container segue uma especificação padrão Slide 6

Plataforma Java EE Arquitetura em camadas Slide 7

Plataforma Java EE Containers Java EE Slide 8

Plataforma Java EE Serviços oferecidos pelos containers: Escalabilidade Gestão de memória, ciclo de vida de objetos e estado de objetos Conexões, Transações, Serviço de nomes Segurança Tolerância a falhas Integração WebServices Clustering Alta disponibilidade Confiabilidade Slide 9

Plataforma Java EE Servidores 100% compatíveis com a especificação Java EE 5 Slide 10

Agenda Plataforma Java EE Conceitos Iniciais (EJB) Session Bean Message-Driven Bean (MDB) Java Persistence API (JPA) Serviços Disponíveis Injeção de Dependência Callback Methods Transações Segurança Interceptors Timers Conclusões Perguntas e Respostas Slide 11

Conceitos Iniciais (EJB) Porque Precisamos de EJB? Cliente SOA / WS web Web Browser Swing / JavaFX Rede Local Regras de Negócio Java Web JVM + Container EE Slide 12

Conceitos Iniciais (EJB) Plataforma para criação de aplicações de negócio portáveis, robustas e reutilizáveis usando a linguagem de programação Java; Componente para construir aplicações sem precisar reinventar uma série de recursos e serviços (transações, segurança, persistência); Modelo de alto nível para objetos distribuídos (computação distribuída); Padrão de mercado para componentes de negócio; É o CICS do Java. Slide 13

Conceitos Iniciais (EJB) Componentes de Negócio Compartilhados Cliente SOA / WS web Web Browser Swing / JavaFX Rede Local EJB Session Bean Java Web JVM + Container EE Slide 14

Conceitos Iniciais (EJB) Nível programação EJB Server / Container JRMP / RMI - IIOP TCP / IP Aplicação Apresentação Transporte rede javax.ejb java.rmi java.net Slide 15

Conceitos Iniciais (EJB) Infra Estrutura do Container EJB Segurança Controle Transacional Escalabilidade Config. de Ambiente EJB Session Bean Dados Legados Middleware de Mensagens Slide 16

Conceitos Iniciais (EJB) Tipos de EJB: Session Bean Representa um simples processo de negócio Message-Driven Bean Trabalha de forma assíncrona Entity Bean Representa um objeto persistente Definido pela especificação JPA Slide 17

Agenda Plataforma Java EE Conceitos Iniciais (EJB) Session Bean Message-Driven Bean (MDB) Java Persistence API (JPA) Serviços Disponíveis Injeção de Dependência Callback Methods Transações Segurança Interceptors Timers Conclusões Perguntas e Respostas Slide 18

Session Bean Representa um processo de negócio (regra de negócio); Pode ser do tipo Stateless ou Stateful; Stateless Não mantém estado de conversão com o cliente; Não tem compromisso de manter uma sessão; Não devemos utilizar atributos de negócio, somente atributos técnicos em cache; É um EJB econômico; Stateful Mantém estado de conversão com o cliente; Cada cliente terá uma instancia do EJB exclusiva, desde a criação até a remoção; Podemos ter atributos de negócio com métodos getters e setters; Slide 19

Session Bean Stateless (sem estado) Período que uma instancia do EJB fica preso a um cliente Slide 20

Session Bean Stateless (sem estado) Slide 21

Session Bean Stateful (com estado) Período que uma instancia do EJB fica preso a um cliente Slide 22

Session Bean Stateful (com estado) Slide 23

Session Bean Clientes acessam o Session Bean através de uma interface Java simples (POJI); Métodos (serviços) são publicados através desta interface; A interface deve ser implementada pela classe do Bean; Tipos de Interfaces Local (@Local) Somente acesso local (mesma JVM); Cliente pode ser um componente Web ou outro EJB; Localização não é transparente (não suporta clusterização). Remota (@Remote) Suporta acesso remoto (fora da JVM); Cliente pode ser um componente Web, outro EJB ou aplicação desktop; Transparência de localização (suporta clusterização). Slide 24

Session Bean Local Interface Remote Interface Slide 25

Agenda Plataforma Java EE Conceitos Iniciais (EJB) Session Bean Message-Driven Bean (MDB) Java Persistence API (JPA) Serviços Disponíveis Injeção de Dependência Callback Methods Transações Segurança Interceptors Timers Conclusões Perguntas e Respostas Slide 26

Message-Driven Bean (MDB) EJB que é acionado de forma assíncrona; Trabalha totalmente vinculado ao conceito de utilização de um serviço de mensagens; Utiliza a API do Java Message Service (JMS) em conjunto com Session Beans; Facilita a quebra de acoplamento entre o cliente e o destino; Serviços de mensagens introduzem novos conceitos de arquiteturas e aumenta a confiabilidade da solução; Slide 27

Message-Driven Beans (MDB) Vejamos o comparativo de uma chamada síncrona, e uma chamada assíncrona utilizando um serviço de mensagens Síncrono Assíncrono Slide 28

Message-Driven Beans (MDB) Existem dois tipos de destinos JMS Point-to-point (queue): uma mensagem enviada para a fila será consumida apenas por um cliente; Publish-subscriber (topic): uma mensagem pode ser recepcionada por múltiplos clientes; Slide 29

Message-Driven Beans (MDB) MDB fica anexado a uma fila ou tópico; Ao receber uma mensagem, o EJB será acionado para consumir a mensagem, o container chama o método onmessage(...) do EJB; Vantagens: Limitar o número de EJBs consumidores, evitando super-consumo do servidor; Requisições dos usuários são armazenadas em filas e processadas conforme capacidade do servidor; Slide 30

Message-Driven Bean (MDB) Exemplo de um MDB Slide 31

Message-Driven Bean (MDB) Como enviar uma mensagem Configurar um repositório de conexões; Abrir uma nova conexão; Criar uma sessão de envio; Criar um produtor de mensagens associado a um destino; Criar uma nova mensagem; Solicitar ao produtor enviar a mensagem para o destino associado. Slide 32

Message-Driven Bean (MDB) Exemplo de um cliente JMS Slide 33

Agenda Plataforma Java EE Conceitos Iniciais (EJB) Session Bean Message-Driven Bean (MDB) Java Persistence API (JPA) Serviços Disponíveis Injeção de Dependência Callback Methods Transações Segurança Interceptors Timers Conclusões Perguntas e Respostas Slide 34

Java Persistence API Primeira especificação (padrão) de mapeamento de objetos Java para base de dados relacional Integração com outros frameworks Hibernate é uma implementação de JPA TopLink Essencials é uma implementação de JPA (RI) POJO (Plain Old Java Objects) Entidades Mapeamento via metadados (annotation Java 5) Pode ser utilizado fora de containres EJBs (ligthweigth container) Uso de injeção de dependência ao invés de lookups JNDI Slide 35

Java Persistence API Slide 36

Java Persistence API Entidades JPA Slide 37

Java Persistence API EntityManager (javax.persistence) Gerencia o ciclo de vida das entidades (B) find / query (C) persist (D) clear / serialização (E) merge (F) remove Slide 38

Java Persistence API PersistenceContext Conjunto de objetos managed associados a um EntityManager EntityManager PersistenceContext obj5 NEW / DETACHED obj1 obj2 obj3 obj4 MANAGED MANAGED MANAGED MANAGED Slide 39

Java Persistence API Persistence Unit Uma unidade de persistência define um contexto de funcionamento para os EntityManagers Slide 40

Java Persistence API Exemplo de utilização de JPA Slide 41

Agenda Plataforma Java EE Conceitos Iniciais (EJB) Session Bean Message-Driven Bean (MDB) Java Persistence API (JPA) Serviços Disponíveis Injeção de Dependência Callback Methods Transações Segurança Interceptors Timers Conclusões Perguntas e Respostas Slide 42

Injeção de Dependência Mecanismo de injeção de recursos necessários a um componente de forma automática Sem a presença de instruções explícitas para acessar o recurso Exemplo: O componente de negócios A depende do componente de negócios B e do pool de conexões C. A B C Slide 43

Injeção de Dependência Sem injeção de dependência: Código fonte do componente A contém instruções para buscar o componente B e o recurso C. Serviço de Nomes ejb/componenteb jdbc/datasourcec lookups A C B Slide 44

Injeção de Dependência Exemplo Sem Injeção de Dependência Slide 45

Injeção de Dependência Com injeção de dependência Código do componente A não busca recursos e outros componentes Devemos declarar as dependências de componentes e recursos nos atributos ou métodos setters do componente A Container (Java EE) interpreta as dependências declaradas no componente A e injeta os recursos e componentes necessários Slide 46

Injeção de Dependência class ComponenteA { @EJB(name= ejb/componenteb ) InterfaceB b; @Resource(name= jdbc/datasourcec ) DataSource c; } Serviço de Nomes ejb/componenteb jdbc/datasourcec injeção A C B Slide 47

Injeção de Dependência Exemplo de Utilização Slide 48

Injeção de Dependência Quem pode receber injeção? EJB, Interceptor Servlet, Filter, *Listener, JSP Tag Handler JSF Managed Beans Endpoints JAX-WS e Handlers O que pode ser injetado? Referências a EJBs e a Web Services DataSource JDBC Destination e ConnectionFactory JMS UserTransaction EntityManager (JPA) Slide 49

Agenda Plataforma Java EE Conceitos Iniciais (EJB) Session Bean Message-Driven Bean (MDB) Java Persistence API (JPA) Serviços Disponíveis Injeção de Dependência Callback Methods Transações Segurança Interceptors Timers Conclusões Perguntas e Respostas Slide 50

Callback Methods Anotações para tratamento de eventos nas fases do ciclo de vida dos EJBs; Gerenciados pelo container Java EE; Substitui os antigos métodos definidos nas interfaces do EJB 2.x e implementados pela classe EJB; @PostConstruct Após o container criar uma nova instância de um EJB @PrePassivate Imediatamente antes do EJB sofrer o processo de passivação @PostActivate Imediatamente depois do EJB sofrer o processo de ativação @PreDestroy Antes do EJB ser destruído pelo container Slide 51

Callback Methods Exemplo de Utilização Slide 52

Agenda Plataforma Java EE Conceitos Iniciais (EJB) Session Bean Message-Driven Bean (MDB) Java Persistence API (JPA) Serviços Disponíveis Injeção de Dependência Callback Methods Transações Segurança Interceptors Timers Conclusões Perguntas e Respostas Slide 53

Transações São unidades de trabalho com propriedades ACID Atomicidade Consistência Isolamento Durabilidade São gerenciadas pelo container EJB (JTA) Transações nos EJB podem ser Container Managed Transaction (CMT) - (default) Definida declarativamente Bean Managed Transaction (BMT) Programada através UserTransaction API Slide 54

Transações Configurações Transacionais para CMT Required (default) Sempre deve rodar dentro de uma transação RequiresNew Sempre deve rodar dentro de sua própria transação Mandatory Deve ser chamado dentro de uma transação já iniciada Supports Utiliza transação somente se uma transação já estiver acontecendo Not Supported Executa sem nenhuma transação Never Não poderá ser executado caso esteja acontecendo uma transação Slide 55

Transações Exemplo de Utilização de CMT Slide 56

Transações Exemplo de Utilização de BMT Slide 57

Agenda Plataforma Java EE Conceitos Iniciais (EJB) Session Bean Message-Driven Bean (MDB) Java Persistence API (JPA) Serviços Disponíveis Injeção de Dependência Callback Methods Transações Segurança Interceptors Timers Conclusões Perguntas e Respostas Slide 58

Segurança Java EE suporta todos os níveis de segurança; Utiliza o Java Authentication and Autorization Service (JAAS); Consiste no mecanismo de autenticação e autorização de usuários, baseado em uma identidade e roles (perfil de acesso) associados. Slide 59

Segurança Exemplo de Verificações de Segurança Declarativa Slide 60

Segurança Exemplo de Verificações de Segurança Programática Slide 61

Agenda Plataforma Java EE Conceitos Iniciais (EJB) Session Bean Message-Driven Bean (MDB) Java Persistence API (JPA) Serviços Disponíveis Injeção de Dependência Callback Methods Transações Segurança Interceptors Timers Conclusões Perguntas e Respostas Slide 62

Interceptors Novidade introduzida com o EJB 3.0; Permite que um código customizado seja aplicado para um EJB; Utiliza conceitos de programação orientada à aspectos (AOP); Intercepta a chamada do método do EJB para executar um código intermediário; Utiliza anotações plugáveis nos EJBs; Podem ser configurados no próprio Bean ou em classes externas; Exemplos de utilização Auditoria; Logging; Segurança customizada; Slide 63

Interceptors Exemplo de Classe Interceptor Slide 64

Interceptors Exemplo de Configuração para Interceptação Slide 65

Agenda Plataforma Java EE Conceitos Iniciais (EJB) Session Bean Message-Driven Bean (MDB) Java Persistence API (JPA) Serviços Disponíveis Injeção de Dependência Callback Methods Transações Segurança Interceptors Timers Conclusões Perguntas e Respostas Slide 66

Timers Desde a versão 1.4 foi criado o serviço de timer para os componentes EJB; Permite a programação de tarefas para serem executadas em um determinado horário (processos agendados); Equivalente a CRONTAB, Quartz, etc; É gerenciado pelo container Java EE; Os tipos de agendamentos suportados são: Tarefa para execução única (one-shot); Tarefas periódicas com taxa fixa (fixed-rate); Exemplos de utilização de agendamento Realizar backups periódicos; Rodar a folha de pagamento; Enviar e-mails de expiração de senhas para usuários. Slide 67

Timers Para criar o agendamento, o EJB deve se registrar no serviço de timer, criando um novo timer; Além disto o EJB precisa definir um método Timeout responsável por realizar a executação da tafera (utilizando @Timeout); O serviço de timer irá gerenciar o agendamento, e uma vez que identifique o target, ele deverá chamar o método responsável pela execução da tarefa. Slide 68

Timer Exemplo de EJB Timer Slide 69

Agenda Plataforma Java EE Conceitos Iniciais (EJB) Session Bean Message-Driven Bean (MDB) Java Persistence API (JPA) Serviços Disponíveis Injeção de Dependência Callback Methods Transações Segurança Interceptors Timers Conclusões Perguntas e Respostas Slide 70

Conclusões Problemas das especificações EJB < 3.0 Muitas Interfaces Interface Home Remota e Local Interfaces de Ciclo de Vida SessionBean EntityBean MessageDrivenBean Interface S.E.I. (Web Service JAX-RPC) Deployment Descriptors Alta Burocracia Slide 71

Conclusões Objetivos da especificação JSR-220 Simplificar o trabalho do desenvolvedor Defaults programáticos Meta-dados = Annotations javax.ejb.* Configuration by Exception Injeção de Dependência ( menos lookup ) Menos Interfaces Obrigatórias Interfaces Home Interfaces de ciclo de vida Mais Mais Produtividade Produtividade Slide 72

Conclusões EJB s: Componentes distribuídos que podem rodar em vários servidores; Clustering; Persistência automática utilizando JPA; Suporte transacional; Segurança declarativa; Programação AOP; Serviços de agendamento de tarefas; Tunning de Threads e entidades de banco; Otimização de memória e threads; E você ainda esta pensando se vale a pena? Slide 73

Perguntas & Respostas Slide 74

Mini-curso Gratuito Agradecemos a presença! vofficejava.googlecode.com Slide 75