SlideShare uma empresa Scribd logo
Mini-curso Gratuito




Globalcode             Slide 1
Mini-curso Gratuito


                       Introdução
             Enterprise Java Beans (EJB) 3.0




Globalcode                                     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

Globalcode                                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: SCJA, SCJP, SCWCD, SCBCD, SCEA

             Hobby Favorito: Futebol, Praia, Filmes, etc


Globalcode                                                    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

Globalcode                                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



Globalcode                                                                           Slide 6
Plataforma Java EE
  • Arquitetura em camadas




Globalcode                   Slide 7
Plataforma Java EE
  • Containers Java EE




Globalcode               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
             …




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




Globalcode                                                 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

Globalcode                                Slide 11
Conceitos Iniciais (EJB)

    Porque Precisamos de EJB?

         Cliente
        SOA / WS
                                    Regras de
                                      Negócio
             web
                      Swing /
                       JavaFX
      Web Browser                   Java Web

                                 JVM + Container EE
                    Rede Local



Globalcode                                            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.

Globalcode                                                       Slide 13
Conceitos Iniciais (EJB)

    Componentes de Negócio Compartilhados

         Cliente
        SOA / WS
                                       EJB
                                   Session Bean
             web
                      Swing /
                       JavaFX
      Web Browser                    Java Web

                                 JVM + Container EE
                    Rede Local



Globalcode                                            Slide 14
Conceitos Iniciais (EJB)



                                                  javax.ejb
                         EJB Server / Container
     Nível programação




                           JRMP / RMI - IIOP

                                 TCP / IP           java.rmi
                                Aplicação
                               Apresentação
                                Transporte
                                   rede

                                                      java.net




Globalcode                                                       Slide 15
Conceitos Iniciais (EJB)

     Infra Estrutura do Container
                                                                                          EJB
                         Controle Transacional
                                                 Escalabilidade
             Segurança




                                                                                   EJB
                                                                               Session Bean


                                                                  Config. de                  Dados
                                                                   Ambiente                   Legados
                                                                           Middleware
                                                                                de
                                                                            Mensagens


Globalcode                                                                                              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




Globalcode                                                  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

Globalcode                                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;


Globalcode                                                                        Slide 19
Session Bean
  • Stateless (sem estado)




                             Período que uma instancia do
                             EJB fica “preso” a um cliente




Globalcode                                                   Slide 20
Session Bean
  • Stateless (sem estado)




Globalcode                   Slide 21
Session Bean
  • Stateful (com estado)




                              Período que uma
                            instancia do EJB fica
                            “preso” a um cliente



Globalcode                                     Slide 22
Session Bean
  • Stateful (com estado)




Globalcode                  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).




Globalcode                                                                            Slide 24
Session Bean
  • Local Interface




  • Remote Interface




Globalcode             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

Globalcode                                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;



Globalcode                                          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




Globalcode                                                  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;




Globalcode                                                                      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;




Globalcode                                                                            Slide 30
Message-Driven Bean (MDB)
  • Exemplo de um MDB




Globalcode                  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.




Globalcode                                            Slide 32
Message-Driven Bean (MDB)
  • Exemplo de um cliente JMS




Globalcode                      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

Globalcode                                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


Globalcode                                                              Slide 35
Java Persistence API




Globalcode             Slide 36
Java Persistence API
  • Entidades JPA




Globalcode             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




Globalcode                                                                  Slide 38
Java Persistence API
  • PersistenceContext
             Conjunto de objetos “managed” associados a um
             EntityManager




             EntityManager         PersistenceContext


                  obj5             obj1     obj2      obj3      obj4
                NEW / DETACHED
                                  MANAGED   MANAGED   MANAGED   MANAGED




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




Globalcode                                                       Slide 40
Java Persistence API
  • Exemplo de utilização de JPA




Globalcode                         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

Globalcode                                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.

                                             B
                             A
                                             C


Globalcode                                                            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.



                                      lookups
             Serviço de Nomes
                                                 A
               “ejb/componenteB”
               “jdbc/dataSourceC”


                                                       B
                                         C

Globalcode                                                         Slide 44
Injeção de Dependência
  • Exemplo Sem Injeção de Dependência




Globalcode                               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




Globalcode                                                           Slide 46
Injeção de Dependência

     class ComponenteA {
             @EJB(name=“ejb/componenteB”) InterfaceB b;
             @Resource(name=“jdbc/dataSourceC”) DataSource c;
     }

                                     injeção
              Serviço de Nomes
                                               A
                “ejb/componenteB”
                “jdbc/dataSourceC”


                                                    B
                                        C
Globalcode                                                      Slide 47
Injeção de Dependência
  • Exemplo de Utilização




Globalcode                  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)




Globalcode                                                    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

Globalcode                                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




Globalcode                                                                   Slide 51
Callback Methods
  • Exemplo de Utilização




Globalcode                  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

Globalcode                                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



Globalcode                                                     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



Globalcode                                                                          Slide 55
Transações
  • Exemplo de Utilização de CMT




Globalcode                         Slide 56
Transações
  • Exemplo de Utilização de BMT




Globalcode                         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

Globalcode                                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.




Globalcode                                                     Slide 59
Segurança
  • Exemplo de Verificações de Segurança Declarativa




Globalcode                                             Slide 60
Segurança
  • Exemplo de Verificações de Segurança Programática




Globalcode                                         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

Globalcode                                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;


Globalcode                                                  Slide 63
Interceptors
  • Exemplo de Classe Interceptor




Globalcode                          Slide 64
Interceptors
  • Exemplo de Configuração para Interceptação




Globalcode                                       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

Globalcode                                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.



Globalcode                                                          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.




Globalcode                                                    Slide 68
Timer
  • Exemplo de EJB Timer




Globalcode                 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

Globalcode                                Slide 70
Conclusões
  Problemas das especificações EJB < 3.0

  • Muitas Interfaces            ia
    • Interface Home Remota e Local
                                c
                              ra
    • Interfaces de Ciclo de Vida
                             c
       • SessionBean       ro
       • EntityBean      u
       • MessageDrivenBean
                      B
                 lta
    • Interface S.E.I. (Web Service JAX-RPC)
               ADescriptors
  •   Deployment




Globalcode                                     Slide 71
Conclusões

 Objetivos da especificação JSR-220

 •    Simplificar o trabalho do desenvolvedor
                                            d e
       • Defaults programáticos
                                        id a
       • Meta-dados = Annotations javax.ejb.*
                                      iv
       • Configuration by Exception  t
 •    Injeção de Dependência dmenos
                                   u lookup )
 •
                             ro(
      Menos Interfaces Obrigatórias
       • Interfaces Home
                          P
       • Interfaces de
                   a  isciclo de vida
               M
Globalcode                                        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?


Globalcode                                                  Slide 73
Perguntas & Respostas




Globalcode               Slide 74
Mini-curso Gratuito


              Agradecemos a presença!




             vofficejava.googlecode.com



Globalcode                                Slide 75

Mais conteúdo relacionado

Mais procurados

TP Git avancé DevoxxFR 2018 (exercices)
TP Git avancé DevoxxFR 2018 (exercices)TP Git avancé DevoxxFR 2018 (exercices)
TP Git avancé DevoxxFR 2018 (exercices)
Jérôme Tamborini
 
헤테로지니어스 컴퓨팅 : CPU 에서 GPU 로 옮겨가기
헤테로지니어스 컴퓨팅 :  CPU 에서 GPU 로 옮겨가기헤테로지니어스 컴퓨팅 :  CPU 에서 GPU 로 옮겨가기
헤테로지니어스 컴퓨팅 : CPU 에서 GPU 로 옮겨가기zupet
 
Windev
WindevWindev
Introduction à React
Introduction à ReactIntroduction à React
Introduction à React
Abdoulaye Dieng
 
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Adriano Teixeira de Souza
 
Design patterns - Exemples en Java
Design patterns - Exemples en JavaDesign patterns - Exemples en Java
Design patterns - Exemples en Java
Oussama BEN KHIROUN
 
Jsf 110530152515-phpapp01
Jsf 110530152515-phpapp01Jsf 110530152515-phpapp01
Jsf 110530152515-phpapp01
Eric Bourdet
 
[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)
[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)
[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)MinGeun Park
 
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...
ENSET, Université Hassan II Casablanca
 
SRE/DevOps 신입으로 1년간 근무하며 겪은 경험담
SRE/DevOps 신입으로 1년간 근무하며 겪은 경험담SRE/DevOps 신입으로 1년간 근무하며 겪은 경험담
SRE/DevOps 신입으로 1년간 근무하며 겪은 경험담
Juhyun Kim
 
Owasp top-10-2013-french
Owasp top-10-2013-frenchOwasp top-10-2013-french
Owasp top-10-2013-french
vangogue
 
Nginx Testing in NAVER
Nginx Testing in NAVERNginx Testing in NAVER
Nginx Testing in NAVER
형근 송
 
les style d'architecture
les style d'architecture les style d'architecture
les style d'architecture
Mouna Maazoun
 
Support de cours entrepise java beans ejb m.youssfi
Support de cours entrepise java beans ejb m.youssfiSupport de cours entrepise java beans ejb m.youssfi
Support de cours entrepise java beans ejb m.youssfi
ENSET, Université Hassan II Casablanca
 
언리얼 서밋 2016 프로젝트 A1의 구형 월드 라이팅 기술
언리얼 서밋 2016 프로젝트 A1의 구형 월드 라이팅 기술언리얼 서밋 2016 프로젝트 A1의 구형 월드 라이팅 기술
언리얼 서밋 2016 프로젝트 A1의 구형 월드 라이팅 기술
Ki Hyunwoo
 
Vue and React Comparison
Vue and React ComparisonVue and React Comparison
Vue and React Comparison
Viet Tran
 
Java Spring framework, Dependency Injection, DI, IoC, Inversion of Control
Java Spring framework, Dependency Injection, DI, IoC, Inversion of ControlJava Spring framework, Dependency Injection, DI, IoC, Inversion of Control
Java Spring framework, Dependency Injection, DI, IoC, Inversion of Control
Arjun Thakur
 
O (papel do) Arquiteto de Software
O (papel do) Arquiteto de SoftwareO (papel do) Arquiteto de Software
O (papel do) Arquiteto de Software
Peter Jandl Junior
 
Support de cours technologie et application m.youssfi
Support de cours technologie et application m.youssfiSupport de cours technologie et application m.youssfi
Support de cours technologie et application m.youssfi
ENSET, Université Hassan II Casablanca
 
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games ConferenceKGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
Xionglong Jin
 

Mais procurados (20)

TP Git avancé DevoxxFR 2018 (exercices)
TP Git avancé DevoxxFR 2018 (exercices)TP Git avancé DevoxxFR 2018 (exercices)
TP Git avancé DevoxxFR 2018 (exercices)
 
헤테로지니어스 컴퓨팅 : CPU 에서 GPU 로 옮겨가기
헤테로지니어스 컴퓨팅 :  CPU 에서 GPU 로 옮겨가기헤테로지니어스 컴퓨팅 :  CPU 에서 GPU 로 옮겨가기
헤테로지니어스 컴퓨팅 : CPU 에서 GPU 로 옮겨가기
 
Windev
WindevWindev
Windev
 
Introduction à React
Introduction à ReactIntroduction à React
Introduction à React
 
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
 
Design patterns - Exemples en Java
Design patterns - Exemples en JavaDesign patterns - Exemples en Java
Design patterns - Exemples en Java
 
Jsf 110530152515-phpapp01
Jsf 110530152515-phpapp01Jsf 110530152515-phpapp01
Jsf 110530152515-phpapp01
 
[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)
[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)
[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)
 
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...
 
SRE/DevOps 신입으로 1년간 근무하며 겪은 경험담
SRE/DevOps 신입으로 1년간 근무하며 겪은 경험담SRE/DevOps 신입으로 1년간 근무하며 겪은 경험담
SRE/DevOps 신입으로 1년간 근무하며 겪은 경험담
 
Owasp top-10-2013-french
Owasp top-10-2013-frenchOwasp top-10-2013-french
Owasp top-10-2013-french
 
Nginx Testing in NAVER
Nginx Testing in NAVERNginx Testing in NAVER
Nginx Testing in NAVER
 
les style d'architecture
les style d'architecture les style d'architecture
les style d'architecture
 
Support de cours entrepise java beans ejb m.youssfi
Support de cours entrepise java beans ejb m.youssfiSupport de cours entrepise java beans ejb m.youssfi
Support de cours entrepise java beans ejb m.youssfi
 
언리얼 서밋 2016 프로젝트 A1의 구형 월드 라이팅 기술
언리얼 서밋 2016 프로젝트 A1의 구형 월드 라이팅 기술언리얼 서밋 2016 프로젝트 A1의 구형 월드 라이팅 기술
언리얼 서밋 2016 프로젝트 A1의 구형 월드 라이팅 기술
 
Vue and React Comparison
Vue and React ComparisonVue and React Comparison
Vue and React Comparison
 
Java Spring framework, Dependency Injection, DI, IoC, Inversion of Control
Java Spring framework, Dependency Injection, DI, IoC, Inversion of ControlJava Spring framework, Dependency Injection, DI, IoC, Inversion of Control
Java Spring framework, Dependency Injection, DI, IoC, Inversion of Control
 
O (papel do) Arquiteto de Software
O (papel do) Arquiteto de SoftwareO (papel do) Arquiteto de Software
O (papel do) Arquiteto de Software
 
Support de cours technologie et application m.youssfi
Support de cours technologie et application m.youssfiSupport de cours technologie et application m.youssfi
Support de cours technologie et application m.youssfi
 
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games ConferenceKGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
 

Destaque

EJB 3.1
EJB 3.1EJB 3.1
Visão Geral de EJB 3.0
Visão Geral de EJB 3.0Visão Geral de EJB 3.0
Visão Geral de EJB 3.0
Fábio Nogueira de Lucena
 
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrõesMC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
Rodrigo Cândido da Silva
 
Apostila JavaEE 5 Componentes Distribuídos EJB 3 e JBoss
Apostila JavaEE 5 Componentes Distribuídos EJB 3 e JBossApostila JavaEE 5 Componentes Distribuídos EJB 3 e JBoss
Apostila JavaEE 5 Componentes Distribuídos EJB 3 e JBoss
Gilberto Holms
 
ApresentaçãO Ejb (Enterprise Java Beans)
ApresentaçãO Ejb (Enterprise Java Beans)ApresentaçãO Ejb (Enterprise Java Beans)
ApresentaçãO Ejb (Enterprise Java Beans)
mauriciopel
 
Java ee com ejb 3
Java ee com ejb 3Java ee com ejb 3
Java ee com ejb 3
Juarez Junior
 
Sistemas Distribuídos - Comunicação Distribuída - EJB
Sistemas Distribuídos - Comunicação Distribuída - EJBSistemas Distribuídos - Comunicação Distribuída - EJB
Sistemas Distribuídos - Comunicação Distribuída - EJB
Adriano Teixeira de Souza
 
Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0
Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0
Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0
Rafael Carneiro
 

Destaque (8)

EJB 3.1
EJB 3.1EJB 3.1
EJB 3.1
 
Visão Geral de EJB 3.0
Visão Geral de EJB 3.0Visão Geral de EJB 3.0
Visão Geral de EJB 3.0
 
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrõesMC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
 
Apostila JavaEE 5 Componentes Distribuídos EJB 3 e JBoss
Apostila JavaEE 5 Componentes Distribuídos EJB 3 e JBossApostila JavaEE 5 Componentes Distribuídos EJB 3 e JBoss
Apostila JavaEE 5 Componentes Distribuídos EJB 3 e JBoss
 
ApresentaçãO Ejb (Enterprise Java Beans)
ApresentaçãO Ejb (Enterprise Java Beans)ApresentaçãO Ejb (Enterprise Java Beans)
ApresentaçãO Ejb (Enterprise Java Beans)
 
Java ee com ejb 3
Java ee com ejb 3Java ee com ejb 3
Java ee com ejb 3
 
Sistemas Distribuídos - Comunicação Distribuída - EJB
Sistemas Distribuídos - Comunicação Distribuída - EJBSistemas Distribuídos - Comunicação Distribuída - EJB
Sistemas Distribuídos - Comunicação Distribuída - EJB
 
Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0
Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0
Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0
 

Semelhante a Introducao EJB 3

Enterprise JavaBeans simples e descomplicado, na prática
Enterprise JavaBeans simples e descomplicado, na práticaEnterprise JavaBeans simples e descomplicado, na prática
Enterprise JavaBeans simples e descomplicado, na prática
Globalcode
 
Serra StarTec 2013 - Java EE
Serra StarTec 2013 - Java EESerra StarTec 2013 - Java EE
Serra StarTec 2013 - Java EE
Rodrigo Cândido da Silva
 
Java OO Middleware - JEE / EJB / RMI
Java OO Middleware - JEE / EJB / RMIJava OO Middleware - JEE / EJB / RMI
Java OO Middleware - JEE / EJB / RMI
Yitzhak Stone
 
GUJavaSC - Mini-curso Java EE
GUJavaSC - Mini-curso Java EEGUJavaSC - Mini-curso Java EE
GUJavaSC - Mini-curso Java EE
Rodrigo Cândido da Silva
 
MC - Java Enterprise Edition 6 (Java EE)
MC - Java Enterprise Edition 6 (Java EE)MC - Java Enterprise Edition 6 (Java EE)
MC - Java Enterprise Edition 6 (Java EE)
Rodrigo Cândido da Silva
 
GUJavaSC - Desenvolvendo uma Aplicação com Java EE
GUJavaSC - Desenvolvendo uma Aplicação com Java EEGUJavaSC - Desenvolvendo uma Aplicação com Java EE
GUJavaSC - Desenvolvendo uma Aplicação com Java EE
Rodrigo Cândido da Silva
 
JUDCon Brazil 2013
JUDCon Brazil 2013JUDCon Brazil 2013
JUDCon Brazil 2013
George Gastaldi
 
Tutorial Java EE
Tutorial Java EETutorial Java EE
Tutorial Java EE
Rodrigo Cândido da Silva
 
TDC2012 - Implementando aplicativos Web com JSF, CDI e JPA
TDC2012 - Implementando aplicativos Web com JSF, CDI e JPA  TDC2012 - Implementando aplicativos Web com JSF, CDI e JPA
TDC2012 - Implementando aplicativos Web com JSF, CDI e JPA
Rodrigo Cândido da Silva
 
Anatomia do JSF, JavaServer Faces
Anatomia do JSF, JavaServer FacesAnatomia do JSF, JavaServer Faces
Anatomia do JSF, JavaServer Faces
Rafael Ponte
 
GlassFish, Maven, Cloud e o futuro do Java EE
GlassFish, Maven, Cloud e o futuro do Java EEGlassFish, Maven, Cloud e o futuro do Java EE
GlassFish, Maven, Cloud e o futuro do Java EE
Bruno Borges
 
Spring: Overview do framework mais popular para desenvolvimento em Java
Spring: Overview do framework mais popular para desenvolvimento em JavaSpring: Overview do framework mais popular para desenvolvimento em Java
Spring: Overview do framework mais popular para desenvolvimento em Java
Mariana de Azevedo Santos
 
JBoss Forge TDC - 2012 Florianópolis
JBoss Forge TDC - 2012 FlorianópolisJBoss Forge TDC - 2012 Florianópolis
JBoss Forge TDC - 2012 Florianópolis
George Gastaldi
 
O que ganhamos com Java e Cloud Computing?
O que ganhamos com Java e Cloud Computing?O que ganhamos com Java e Cloud Computing?
O que ganhamos com Java e Cloud Computing?
Bruno Borges
 
Repensando padrões e boas práticas java ee
Repensando padrões e boas práticas java eeRepensando padrões e boas práticas java ee
Repensando padrões e boas práticas java ee
Adriano Tavares
 
GlassFish, Maven, Cloud e Java EE
GlassFish, Maven, Cloud e Java EEGlassFish, Maven, Cloud e Java EE
GlassFish, Maven, Cloud e Java EE
Bruno Borges
 
TDC 2011 - HornetQ e SwitchYard
TDC 2011 - HornetQ e SwitchYardTDC 2011 - HornetQ e SwitchYard
TDC 2011 - HornetQ e SwitchYard
Samuel Tauil
 
Arquitetura jee bp_overview
Arquitetura jee bp_overviewArquitetura jee bp_overview
Arquitetura jee bp_overview
Juarez Junior
 
Curso jsf
Curso jsfCurso jsf
Curso jsf
Miguel Vilaca
 
As Novidades do JMS 2.0
As Novidades do JMS 2.0As Novidades do JMS 2.0
As Novidades do JMS 2.0
Bruno Borges
 

Semelhante a Introducao EJB 3 (20)

Enterprise JavaBeans simples e descomplicado, na prática
Enterprise JavaBeans simples e descomplicado, na práticaEnterprise JavaBeans simples e descomplicado, na prática
Enterprise JavaBeans simples e descomplicado, na prática
 
Serra StarTec 2013 - Java EE
Serra StarTec 2013 - Java EESerra StarTec 2013 - Java EE
Serra StarTec 2013 - Java EE
 
Java OO Middleware - JEE / EJB / RMI
Java OO Middleware - JEE / EJB / RMIJava OO Middleware - JEE / EJB / RMI
Java OO Middleware - JEE / EJB / RMI
 
GUJavaSC - Mini-curso Java EE
GUJavaSC - Mini-curso Java EEGUJavaSC - Mini-curso Java EE
GUJavaSC - Mini-curso Java EE
 
MC - Java Enterprise Edition 6 (Java EE)
MC - Java Enterprise Edition 6 (Java EE)MC - Java Enterprise Edition 6 (Java EE)
MC - Java Enterprise Edition 6 (Java EE)
 
GUJavaSC - Desenvolvendo uma Aplicação com Java EE
GUJavaSC - Desenvolvendo uma Aplicação com Java EEGUJavaSC - Desenvolvendo uma Aplicação com Java EE
GUJavaSC - Desenvolvendo uma Aplicação com Java EE
 
JUDCon Brazil 2013
JUDCon Brazil 2013JUDCon Brazil 2013
JUDCon Brazil 2013
 
Tutorial Java EE
Tutorial Java EETutorial Java EE
Tutorial Java EE
 
TDC2012 - Implementando aplicativos Web com JSF, CDI e JPA
TDC2012 - Implementando aplicativos Web com JSF, CDI e JPA  TDC2012 - Implementando aplicativos Web com JSF, CDI e JPA
TDC2012 - Implementando aplicativos Web com JSF, CDI e JPA
 
Anatomia do JSF, JavaServer Faces
Anatomia do JSF, JavaServer FacesAnatomia do JSF, JavaServer Faces
Anatomia do JSF, JavaServer Faces
 
GlassFish, Maven, Cloud e o futuro do Java EE
GlassFish, Maven, Cloud e o futuro do Java EEGlassFish, Maven, Cloud e o futuro do Java EE
GlassFish, Maven, Cloud e o futuro do Java EE
 
Spring: Overview do framework mais popular para desenvolvimento em Java
Spring: Overview do framework mais popular para desenvolvimento em JavaSpring: Overview do framework mais popular para desenvolvimento em Java
Spring: Overview do framework mais popular para desenvolvimento em Java
 
JBoss Forge TDC - 2012 Florianópolis
JBoss Forge TDC - 2012 FlorianópolisJBoss Forge TDC - 2012 Florianópolis
JBoss Forge TDC - 2012 Florianópolis
 
O que ganhamos com Java e Cloud Computing?
O que ganhamos com Java e Cloud Computing?O que ganhamos com Java e Cloud Computing?
O que ganhamos com Java e Cloud Computing?
 
Repensando padrões e boas práticas java ee
Repensando padrões e boas práticas java eeRepensando padrões e boas práticas java ee
Repensando padrões e boas práticas java ee
 
GlassFish, Maven, Cloud e Java EE
GlassFish, Maven, Cloud e Java EEGlassFish, Maven, Cloud e Java EE
GlassFish, Maven, Cloud e Java EE
 
TDC 2011 - HornetQ e SwitchYard
TDC 2011 - HornetQ e SwitchYardTDC 2011 - HornetQ e SwitchYard
TDC 2011 - HornetQ e SwitchYard
 
Arquitetura jee bp_overview
Arquitetura jee bp_overviewArquitetura jee bp_overview
Arquitetura jee bp_overview
 
Curso jsf
Curso jsfCurso jsf
Curso jsf
 
As Novidades do JMS 2.0
As Novidades do JMS 2.0As Novidades do JMS 2.0
As Novidades do JMS 2.0
 

Mais de Rodrigo Cândido da Silva

Java 9, 10 e ... 11
Java 9, 10 e ... 11Java 9, 10 e ... 11
Java 9, 10 e ... 11
Rodrigo Cândido da Silva
 
Cloud Native Java EE
Cloud Native Java EECloud Native Java EE
Cloud Native Java EE
Rodrigo Cândido da Silva
 
Protegendo Microservices: Boas Práticas e Estratégias de Implementação
Protegendo Microservices: Boas Práticas e Estratégias de ImplementaçãoProtegendo Microservices: Boas Práticas e Estratégias de Implementação
Protegendo Microservices: Boas Práticas e Estratégias de Implementação
Rodrigo Cândido da Silva
 
Protecting Java Microservices: Best Practices and Strategies
Protecting Java Microservices: Best Practices and StrategiesProtecting Java Microservices: Best Practices and Strategies
Protecting Java Microservices: Best Practices and Strategies
Rodrigo Cândido da Silva
 
As novidades da nova versão do Java 9
As novidades da nova versão do Java 9As novidades da nova versão do Java 9
As novidades da nova versão do Java 9
Rodrigo Cândido da Silva
 
Workshop Microservices - Distribuindo os Microservices com Docker e Kubernetes
Workshop Microservices - Distribuindo os Microservices com Docker e KubernetesWorkshop Microservices - Distribuindo os Microservices com Docker e Kubernetes
Workshop Microservices - Distribuindo os Microservices com Docker e Kubernetes
Rodrigo Cândido da Silva
 
Workshop Microservices - Microservices com Spring Cloud e Netflix OSS
Workshop Microservices - Microservices com Spring Cloud e Netflix OSSWorkshop Microservices - Microservices com Spring Cloud e Netflix OSS
Workshop Microservices - Microservices com Spring Cloud e Netflix OSS
Rodrigo Cândido da Silva
 
Workshop Microservices - Construindo APIs RESTful com Spring Boot
Workshop Microservices - Construindo APIs RESTful com Spring BootWorkshop Microservices - Construindo APIs RESTful com Spring Boot
Workshop Microservices - Construindo APIs RESTful com Spring Boot
Rodrigo Cândido da Silva
 
Workshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura MicroservicesWorkshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura Microservices
Rodrigo Cândido da Silva
 
GUJavaSC - Protegendo Microservices em Java
GUJavaSC - Protegendo Microservices em JavaGUJavaSC - Protegendo Microservices em Java
GUJavaSC - Protegendo Microservices em Java
Rodrigo Cândido da Silva
 
TDC Floripa 2017 - Criando Microservices Reativos com Java
TDC Floripa 2017 - Criando Microservices Reativos com JavaTDC Floripa 2017 - Criando Microservices Reativos com Java
TDC Floripa 2017 - Criando Microservices Reativos com Java
Rodrigo Cândido da Silva
 
GUJavaSC - Combinando Micro-serviços com Práticas DevOps
GUJavaSC - Combinando Micro-serviços com Práticas DevOpsGUJavaSC - Combinando Micro-serviços com Práticas DevOps
GUJavaSC - Combinando Micro-serviços com Práticas DevOps
Rodrigo Cândido da Silva
 
GUJavaSC - Criando Micro-serviços Reativos com Java
GUJavaSC - Criando Micro-serviços Reativos com JavaGUJavaSC - Criando Micro-serviços Reativos com Java
GUJavaSC - Criando Micro-serviços Reativos com Java
Rodrigo Cândido da Silva
 
JavaOne 2016 - Reactive Microservices with Java and Java EE
JavaOne 2016 - Reactive Microservices with Java and Java EEJavaOne 2016 - Reactive Microservices with Java and Java EE
JavaOne 2016 - Reactive Microservices with Java and Java EE
Rodrigo Cândido da Silva
 
JavaOne LATAM 2016 - Combinando AngularJS com Java EE
JavaOne LATAM 2016 - Combinando AngularJS com Java EEJavaOne LATAM 2016 - Combinando AngularJS com Java EE
JavaOne LATAM 2016 - Combinando AngularJS com Java EE
Rodrigo Cândido da Silva
 
JavaOne LATAM 2016 - RESTful Services Simplificado com Spring Data REST
JavaOne LATAM 2016 - RESTful Services Simplificado com Spring Data RESTJavaOne LATAM 2016 - RESTful Services Simplificado com Spring Data REST
JavaOne LATAM 2016 - RESTful Services Simplificado com Spring Data REST
Rodrigo Cândido da Silva
 
TDC Floripa 2016 - Decolando seus micro-serviços na Spring Cloud
TDC Floripa 2016 - Decolando seus micro-serviços na Spring CloudTDC Floripa 2016 - Decolando seus micro-serviços na Spring Cloud
TDC Floripa 2016 - Decolando seus micro-serviços na Spring Cloud
Rodrigo Cândido da Silva
 
GUJavaSC - Combinando AngularJS com Java EE
GUJavaSC - Combinando AngularJS com Java EEGUJavaSC - Combinando AngularJS com Java EE
GUJavaSC - Combinando AngularJS com Java EE
Rodrigo Cândido da Silva
 
QCon SP 2016 - Construindo Microservices Auto-curáveis com Spring Cloud e Net...
QCon SP 2016 - Construindo Microservices Auto-curáveis com Spring Cloud e Net...QCon SP 2016 - Construindo Microservices Auto-curáveis com Spring Cloud e Net...
QCon SP 2016 - Construindo Microservices Auto-curáveis com Spring Cloud e Net...
Rodrigo Cândido da Silva
 
QCon 2015 - Combinando AngularJS com Java EE
QCon 2015 - Combinando AngularJS com Java EEQCon 2015 - Combinando AngularJS com Java EE
QCon 2015 - Combinando AngularJS com Java EE
Rodrigo Cândido da Silva
 

Mais de Rodrigo Cândido da Silva (20)

Java 9, 10 e ... 11
Java 9, 10 e ... 11Java 9, 10 e ... 11
Java 9, 10 e ... 11
 
Cloud Native Java EE
Cloud Native Java EECloud Native Java EE
Cloud Native Java EE
 
Protegendo Microservices: Boas Práticas e Estratégias de Implementação
Protegendo Microservices: Boas Práticas e Estratégias de ImplementaçãoProtegendo Microservices: Boas Práticas e Estratégias de Implementação
Protegendo Microservices: Boas Práticas e Estratégias de Implementação
 
Protecting Java Microservices: Best Practices and Strategies
Protecting Java Microservices: Best Practices and StrategiesProtecting Java Microservices: Best Practices and Strategies
Protecting Java Microservices: Best Practices and Strategies
 
As novidades da nova versão do Java 9
As novidades da nova versão do Java 9As novidades da nova versão do Java 9
As novidades da nova versão do Java 9
 
Workshop Microservices - Distribuindo os Microservices com Docker e Kubernetes
Workshop Microservices - Distribuindo os Microservices com Docker e KubernetesWorkshop Microservices - Distribuindo os Microservices com Docker e Kubernetes
Workshop Microservices - Distribuindo os Microservices com Docker e Kubernetes
 
Workshop Microservices - Microservices com Spring Cloud e Netflix OSS
Workshop Microservices - Microservices com Spring Cloud e Netflix OSSWorkshop Microservices - Microservices com Spring Cloud e Netflix OSS
Workshop Microservices - Microservices com Spring Cloud e Netflix OSS
 
Workshop Microservices - Construindo APIs RESTful com Spring Boot
Workshop Microservices - Construindo APIs RESTful com Spring BootWorkshop Microservices - Construindo APIs RESTful com Spring Boot
Workshop Microservices - Construindo APIs RESTful com Spring Boot
 
Workshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura MicroservicesWorkshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura Microservices
 
GUJavaSC - Protegendo Microservices em Java
GUJavaSC - Protegendo Microservices em JavaGUJavaSC - Protegendo Microservices em Java
GUJavaSC - Protegendo Microservices em Java
 
TDC Floripa 2017 - Criando Microservices Reativos com Java
TDC Floripa 2017 - Criando Microservices Reativos com JavaTDC Floripa 2017 - Criando Microservices Reativos com Java
TDC Floripa 2017 - Criando Microservices Reativos com Java
 
GUJavaSC - Combinando Micro-serviços com Práticas DevOps
GUJavaSC - Combinando Micro-serviços com Práticas DevOpsGUJavaSC - Combinando Micro-serviços com Práticas DevOps
GUJavaSC - Combinando Micro-serviços com Práticas DevOps
 
GUJavaSC - Criando Micro-serviços Reativos com Java
GUJavaSC - Criando Micro-serviços Reativos com JavaGUJavaSC - Criando Micro-serviços Reativos com Java
GUJavaSC - Criando Micro-serviços Reativos com Java
 
JavaOne 2016 - Reactive Microservices with Java and Java EE
JavaOne 2016 - Reactive Microservices with Java and Java EEJavaOne 2016 - Reactive Microservices with Java and Java EE
JavaOne 2016 - Reactive Microservices with Java and Java EE
 
JavaOne LATAM 2016 - Combinando AngularJS com Java EE
JavaOne LATAM 2016 - Combinando AngularJS com Java EEJavaOne LATAM 2016 - Combinando AngularJS com Java EE
JavaOne LATAM 2016 - Combinando AngularJS com Java EE
 
JavaOne LATAM 2016 - RESTful Services Simplificado com Spring Data REST
JavaOne LATAM 2016 - RESTful Services Simplificado com Spring Data RESTJavaOne LATAM 2016 - RESTful Services Simplificado com Spring Data REST
JavaOne LATAM 2016 - RESTful Services Simplificado com Spring Data REST
 
TDC Floripa 2016 - Decolando seus micro-serviços na Spring Cloud
TDC Floripa 2016 - Decolando seus micro-serviços na Spring CloudTDC Floripa 2016 - Decolando seus micro-serviços na Spring Cloud
TDC Floripa 2016 - Decolando seus micro-serviços na Spring Cloud
 
GUJavaSC - Combinando AngularJS com Java EE
GUJavaSC - Combinando AngularJS com Java EEGUJavaSC - Combinando AngularJS com Java EE
GUJavaSC - Combinando AngularJS com Java EE
 
QCon SP 2016 - Construindo Microservices Auto-curáveis com Spring Cloud e Net...
QCon SP 2016 - Construindo Microservices Auto-curáveis com Spring Cloud e Net...QCon SP 2016 - Construindo Microservices Auto-curáveis com Spring Cloud e Net...
QCon SP 2016 - Construindo Microservices Auto-curáveis com Spring Cloud e Net...
 
QCon 2015 - Combinando AngularJS com Java EE
QCon 2015 - Combinando AngularJS com Java EEQCon 2015 - Combinando AngularJS com Java EE
QCon 2015 - Combinando AngularJS com Java EE
 

Introducao EJB 3

  • 2. Mini-curso Gratuito Introdução Enterprise Java Beans (EJB) 3.0 Globalcode Slide 2
  • 3. 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 Globalcode Slide 3
  • 4. 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: SCJA, SCJP, SCWCD, SCBCD, SCEA Hobby Favorito: Futebol, Praia, Filmes, etc Globalcode Slide 4
  • 5. 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 Globalcode Slide 5
  • 6. 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 Globalcode Slide 6
  • 7. Plataforma Java EE • Arquitetura em camadas Globalcode Slide 7
  • 8. Plataforma Java EE • Containers Java EE Globalcode Slide 8
  • 9. 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 … Globalcode Slide 9
  • 10. Plataforma Java EE • Servidores 100% compatíveis com a especificação Java EE 5 Globalcode Slide 10
  • 11. 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 Globalcode Slide 11
  • 12. Conceitos Iniciais (EJB) Porque Precisamos de EJB? Cliente SOA / WS Regras de Negócio web Swing / JavaFX Web Browser Java Web JVM + Container EE Rede Local Globalcode Slide 12
  • 13. 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. Globalcode Slide 13
  • 14. Conceitos Iniciais (EJB) Componentes de Negócio Compartilhados Cliente SOA / WS EJB Session Bean web Swing / JavaFX Web Browser Java Web JVM + Container EE Rede Local Globalcode Slide 14
  • 15. Conceitos Iniciais (EJB) javax.ejb EJB Server / Container Nível programação JRMP / RMI - IIOP TCP / IP java.rmi Aplicação Apresentação Transporte rede java.net Globalcode Slide 15
  • 16. Conceitos Iniciais (EJB) Infra Estrutura do Container EJB Controle Transacional Escalabilidade Segurança EJB Session Bean Config. de Dados Ambiente Legados Middleware de Mensagens Globalcode Slide 16
  • 17. 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 Globalcode Slide 17
  • 18. 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 Globalcode Slide 18
  • 19. 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; Globalcode Slide 19
  • 20. Session Bean • Stateless (sem estado) Período que uma instancia do EJB fica “preso” a um cliente Globalcode Slide 20
  • 21. Session Bean • Stateless (sem estado) Globalcode Slide 21
  • 22. Session Bean • Stateful (com estado) Período que uma instancia do EJB fica “preso” a um cliente Globalcode Slide 22
  • 23. Session Bean • Stateful (com estado) Globalcode Slide 23
  • 24. 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). Globalcode Slide 24
  • 25. Session Bean • Local Interface • Remote Interface Globalcode Slide 25
  • 26. 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 Globalcode Slide 26
  • 27. 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; Globalcode Slide 27
  • 28. 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 Globalcode Slide 28
  • 29. 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; Globalcode Slide 29
  • 30. 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; Globalcode Slide 30
  • 31. Message-Driven Bean (MDB) • Exemplo de um MDB Globalcode Slide 31
  • 32. 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. Globalcode Slide 32
  • 33. Message-Driven Bean (MDB) • Exemplo de um cliente JMS Globalcode Slide 33
  • 34. 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 Globalcode Slide 34
  • 35. 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 Globalcode Slide 35
  • 37. Java Persistence API • Entidades JPA Globalcode Slide 37
  • 38. 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 Globalcode Slide 38
  • 39. Java Persistence API • PersistenceContext Conjunto de objetos “managed” associados a um EntityManager EntityManager PersistenceContext obj5 obj1 obj2 obj3 obj4 NEW / DETACHED MANAGED MANAGED MANAGED MANAGED Globalcode Slide 39
  • 40. Java Persistence API • Persistence Unit Uma unidade de persistência define um contexto de funcionamento para os EntityManagers Globalcode Slide 40
  • 41. Java Persistence API • Exemplo de utilização de JPA Globalcode Slide 41
  • 42. 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 Globalcode Slide 42
  • 43. 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. B A C Globalcode Slide 43
  • 44. 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. lookups Serviço de Nomes A “ejb/componenteB” “jdbc/dataSourceC” B C Globalcode Slide 44
  • 45. Injeção de Dependência • Exemplo Sem Injeção de Dependência Globalcode Slide 45
  • 46. 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 Globalcode Slide 46
  • 47. Injeção de Dependência class ComponenteA { @EJB(name=“ejb/componenteB”) InterfaceB b; @Resource(name=“jdbc/dataSourceC”) DataSource c; } injeção Serviço de Nomes A “ejb/componenteB” “jdbc/dataSourceC” B C Globalcode Slide 47
  • 48. Injeção de Dependência • Exemplo de Utilização Globalcode Slide 48
  • 49. 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) Globalcode Slide 49
  • 50. 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 Globalcode Slide 50
  • 51. 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 Globalcode Slide 51
  • 52. Callback Methods • Exemplo de Utilização Globalcode Slide 52
  • 53. 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 Globalcode Slide 53
  • 54. 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 Globalcode Slide 54
  • 55. 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 Globalcode Slide 55
  • 56. Transações • Exemplo de Utilização de CMT Globalcode Slide 56
  • 57. Transações • Exemplo de Utilização de BMT Globalcode Slide 57
  • 58. 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 Globalcode Slide 58
  • 59. 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. Globalcode Slide 59
  • 60. Segurança • Exemplo de Verificações de Segurança Declarativa Globalcode Slide 60
  • 61. Segurança • Exemplo de Verificações de Segurança Programática Globalcode Slide 61
  • 62. 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 Globalcode Slide 62
  • 63. 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; Globalcode Slide 63
  • 64. Interceptors • Exemplo de Classe Interceptor Globalcode Slide 64
  • 65. Interceptors • Exemplo de Configuração para Interceptação Globalcode Slide 65
  • 66. 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 Globalcode Slide 66
  • 67. 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. Globalcode Slide 67
  • 68. 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. Globalcode Slide 68
  • 69. Timer • Exemplo de EJB Timer Globalcode Slide 69
  • 70. 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 Globalcode Slide 70
  • 71. Conclusões Problemas das especificações EJB < 3.0 • Muitas Interfaces ia • Interface Home Remota e Local c ra • Interfaces de Ciclo de Vida c • SessionBean ro • EntityBean u • MessageDrivenBean B lta • Interface S.E.I. (Web Service JAX-RPC) ADescriptors • Deployment Globalcode Slide 71
  • 72. Conclusões Objetivos da especificação JSR-220 • Simplificar o trabalho do desenvolvedor d e • Defaults programáticos id a • Meta-dados = Annotations javax.ejb.* iv • Configuration by Exception t • Injeção de Dependência dmenos u lookup ) • ro( Menos Interfaces Obrigatórias • Interfaces Home P • Interfaces de a isciclo de vida M Globalcode Slide 72
  • 73. 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? Globalcode Slide 73
  • 75. Mini-curso Gratuito Agradecemos a presença! vofficejava.googlecode.com Globalcode Slide 75