SlideShare une entreprise Scribd logo
1  sur  127
Télécharger pour lire hors ligne
Mini-curso Gratuito




             Rodrigo Cândido da Silva
                 VOffice / Globalcode




Globalcode                              Slide 1
Mini-curso Gratuito




             http://open4education.googlecode.com/



Globalcode                                           Slide 2
Doações
  •  Entidade
        Orionópolis Catarinense
               É uma entidade filantrópica, sem fins lucrativos, que abriga gratuitamente em
                sistema de vila e regime de internato: idosos, crianças e adultos portadores de
                deficiências e multideficiencias física e mental que vivem em estado de
                abandono familiar e econômico.
               Atualmente abrigam 67 pessoas
        Para Maiores Informações
               http://orionopolis.floripa.com.br
               orione@fastlane.com.br
               Telefone – (048) 3343-0087


  •  MUITO OBRIGADO À TODOS !!!


Globalcode                                                                                Slide 3
Palestrante




Globalcode    Slide 4
Objetivo


             Conhecer a plataforma Java Enterprise Edition 6
             e entender as principais diferenças desta versão
                    em relação as versões anteriores




Globalcode                                                      Slide 5
Agenda
     "     Plataforma Java EE
     "     Principais Tecnologias (APIs)
           "   Profiles
           "   Java Servlet 3.0
           "   JSF 2.0
           "   CDI
           "   EJB 3.1
           "   JPA 2.0
     "     Comparativo de Versões
     "     Perguntas e Respostas




Globalcode                                 Slide 6
Jogo Rápido
  •  Quem trabalha com Java EE?
        Servlet?
        JSF?
        JPA?
        EJB?
  •  Quem já estudou alguma funcionalidade do Java EE 6?
  •  Quem está interessado em se atualizar?
  •  Quem gostou do jogo do Brasil ontem? :/




Globalcode                                           Slide 7
Agenda
     "     Plataforma Java EE
     "     Principais Tecnologias (APIs)
           "   Profiles
           "   Java Servlet 3.0
           "   JSF 2.0
           "   CDI
           "   EJB 3.1
           "   JPA 2.0
     "     Comparativo de Versões
     "     Perguntas e Respostas




Globalcode                                 Slide 8
Plataforma Java
  •  Desenvolvimento de software robusto para diferentes tipos de dispositivos
        PC, celular, palmtop, robôs, etc.

  •  Software Multiplataforma
        “Escreva uma vez e execute em qualquer lugar...”
        Código não precisa ser recompilado para executar em outro sistema
         operacional

  •  Máquina Virtual (Java Virtual Machine - JVM)
        Responsável por oferecer a flexibilidade de sistema operacional para um
         software Java

  •  Mantida pela comunidade de desenvolvedores por meio do JCP (Java
     Community Process)


Globalcode                                                                    Slide 9
Plataforma Java
  •  A plataforma é dividida em três partes:

        Java Standard Edition (Java SE)
               Base do Java que contém as principais APIs


        Java Enterprise Editon (Java EE)
               Versão de Java para desenvolvimento de aplicações Web e enterprise que
                rodam em servidores padronizados


        Java Micro Edition (Java ME)
               Redução da plataforma Standard para dispositivos móveis como PDA e
                celulares




Globalcode                                                                           Slide 10
Java Enterprise Edition
  •  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 software de
     pequeno, médio e grande porte em múltiplas camadas
     de componentes
        Componentes “rodam” em um servidor Java EE




Globalcode                                                       Slide 11
Java Enterprise Edition




Globalcode                Slide 12
Java Enterprise Edition
  •  Containers Java EE




Globalcode                Slide 13
Java Enterprise Edition
  •  Serviços oferecidos pelos containeres Java EE:
        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 14
Agenda
     "     Plataforma Java EE
     "     Principais Tecnologias (APIs)
           "   Profiles
           "   Java Servlet 3.0
           "   JSF 2.0
           "   CDI
           "   EJB 3.1
           "   JPA 2.0
     "     Comparativo de Versões
     "     Perguntas e Respostas




Globalcode                                 Slide 15
Containers (Java EE 5)




Globalcode               Slide 16
Containers (Java EE 5)
  •  Web Container
        Trabalha em conjunto com um Servidor HTTP para oferecer
         suporte aos componentes da camada Web
               Tomcat (Apache)
               Jetty
               JRun (Adobe)

  •  EJB Container
        É o servidor de componentes transacionais EJB
               OpenEJB (Apache) *
        Containeres específicos dos fabricantes de servidores de
         aplicação



Globalcode                                                          Slide 17
Profiles
  •  Define um sub-set de APIs do Java EE para rodar
     determinado tipo de aplicação (arquitetura)
  •  Dois profiles foram definidos neste momento pela
     especificação do Java Enterprise
        Web Profile
               Semelhante a idéia do Web container, mas com mais funcionalidades
                incorporadas
        Full Profile
               Servidor Java EE completo




Globalcode                                                                          Slide 18
Profiles




Globalcode   Slide 19
Profiles




Globalcode   Slide 20
Agenda
     "     Plataforma Java EE
     "     Principais Tecnologias (APIs)
           "   Profiles
           "   Java Servlet 3.0
           "   JSF 2.0
           "   CDI
           "   EJB 3.1
           "   JPA 2.0
     "     Comparativo de Versões
     "     Perguntas e Respostas




Globalcode                                 Slide 21
Java Servlet
  •  Aplicações que rodam no servidor e respondem requisições de clientes Web




Globalcode                                                               Slide 22
Java Servlet 3.0
  •  Novos Recursos
        Configuração por Anotações
        Registro Dinâmico de Componentes
        Web Fragments
        Servlet Container Initializer
        Resources Sharing
        Programatic Login / Logout
        Asynchronous Support




Globalcode                                  Slide 23
Java Servlet 3.0
  •  Configuração por Anotações
        @WebServlet
               Define o mapeamento do componente Servlet
        @WebFilter
               Define o mapeamento do componente Filter
        @WebListener
               Define o mapeamento do componente Listener
        @WebInitParam
               Define um parâmetro de inicialização
        @ServletSecurity
               Define as constraints de segurança
        @MultipartConfig
               Utilizado para upload de arquivos


Globalcode                                                   Slide 24
Java Servlet 3.0
  •  @WebServlet




Globalcode         Slide 25
Java Servlet 3.0
  •  @WebFilter




Globalcode         Slide 26
Java Servlet 3.0
  •  @WebListener




Globalcode          Slide 27
Java Servlet 3.0
  •  @WebInitParam




Globalcode           Slide 28
Java Servlet 3.0
  •  @ServletSecurity




Globalcode              Slide 29
Java Servlet 3.0
  •  Registro Dinâmico de Componentes
        Carregamento dinâmico de Servlets, Filters e Listeners
        Executado durante a inicialização do ServletContext
        Registro
               ServletContext#addServlet (#addFilter | #addListener)
        Criação e Registro
               ServletContext#createServlet (#createFilter | #createListener)
        Lookup
               ServletContext#getServlet (#getFilter | #getListener)




Globalcode                                                                       Slide 30
Java Servlet 3.0
  •  Registro Dinâmico de Componentes




Globalcode                              Slide 31
Java Servlet 3.0
  •  Web Fragments
        Define um pedaço do arquivo à ser incorporado ao web.xml
        Pode ser definido em diretórios META-INF de arquivos JARs
         adicionados no classpath da aplicação web (WEB-INF/lib)
               Ideal para configuração de frameworks (Struts, Spring, GWT)
        Sintaxe praticamente idêntica ao arquivo web.xml tradicional,
         com pequenas modificações na ordem dos elementos
        Caso haja conflito de nomes (Servlets, Filters, etc) os
         componentes definidos no web.xml tem prioridade
        Uma aplicação web pode ter múltiplos web fragments
        É definido pela tag <web-fragment>



Globalcode                                                                    Slide 32
Java Servlet 3.0
  •  Web Fragments




Globalcode           Slide 33
Java Servlet 3.0
  •  Servlet Container Initializer
        Mecanismo para inicialização de recursos (objetos) através de
         bibliotecas “terceiras” incorporados na aplicação web
        Executado antes de qualquer Listener durante a fase de
         inicialização da aplicação
        Para implementação
               Implementar a interface
                  –  ServletContainerInitializer
               Definir quais tipos (anotações) de classes serão inspecionadas
                  –  @HandlesTypes
        Esta classe intercepta os componentes de acordo com os
         handles types definidos e executa o método onStartup(…)


Globalcode                                                                       Slide 34
Java Servlet 3.0
  •  Servlet Container Initializer




Globalcode                           Slide 35
Java Servlet 3.0
  •  Resources Sharing
        Possibilidade de adicionar JSPs dentro de arquivos JARs
         existentes no classpath (WEB-INF/lib) da aplicação web
        Devem ser organizados na seguinte estrutura
               WEB-INF/lib/[*.jar]/META-INF/resources
        JSPs definidos com o mesmo nome no diretório da aplicação
         web terão prioridade
        Exemplo de utilização
               mywebapp.war
                  –  /WEB-INF/lib/shared.jar!/META-INF/resources/shared.jsp
               Endereço de acesso
                  –  http://server/mywebapp/shared.jsp




Globalcode                                                                    Slide 36
Java Servlet 3.0
  •  Programatic Login / Logout
        Adicionados novos métodos na Servlet API para tratamento de
         login e logout da aplicação
        Todo processo de login e logout da aplicação pode ser
         manipulado através de programação
               Não tem mais necessidade da definição <login-config>
        Métodos disponíveis
               HttpServletRequest.login(String username, String password)
               HttpServletRequest.authenticate(HttpServletResponse)
               HttpServletRequest.logout()




Globalcode                                                                   Slide 37
Java Servlet 3.0
  •  Asynchronous Support
        Modelo avançado para execução the Threads
        Servlet não precisa mais esperar pela resposta de um outro
         recurso demorado para que sua Thread possa continuar
         executando
        Exemplos para utilização
               Conexões JDBC não disponíveis, retorno JMS, processos longos
        Servlets e Filters suportam esta funcionalidade, mas devem
         ser sinalizados como assíncronos
        Para sinalizar suporte a este mecanismo
               @WebServlet(asynchSupported=true)
               <async-supported>true</async-supported>
               registration.setAsyncSupported(true);


Globalcode                                                                     Slide 38
Java Servlet 3.0
  •  Asynchronous Support




Globalcode                  Slide 39
Java Servlet 3.0
  •  Asynchronous Support




Globalcode                  Slide 40
Java Servlet 3.0
  •  Asynchronous Support




Globalcode                  Slide 41
Agenda
     "     Plataforma Java EE
     "     Principais Tecnologias (APIs)
           "   Profiles
           "   Java Servlet 3.0
           "   JSF 2.0
           "   CDI
           "   EJB 3.1
           "   JPA 2.0
     "     Comparativo de Versões
     "     Perguntas e Respostas




Globalcode                                 Slide 42
JavaServer Faces (JSF)
  •  Características
        Framework para implementação de interfaces gráficas das
         aplicações Web baseado no modelo de componentes
        Incorpora características de um framework MVC para Web e
         um modelo de interfaces baseados em eventos
               Separação entre visualização e regras de negócio
               Visualização pode ser feita por diferente renderizadores
        Padrão de implementação para camada Web
               Especificação Java EE
        Amplo suporte das IDEs (Eclipse, NetBeans)
               “Toolability = Ferramentabilidade”




Globalcode                                                                 Slide 43
JavaServer Faces (JSF)
  J2EE Web Container                          J2EE EJB
                                              Container


     JavaServer Faces




   Controller   View              Model

    Servlet     Java     Custom   JavaBeans     EJB
                Server   Tag
                Pages




Globalcode                                            Slide 44
JavaServer Faces (JSF) 2.0
  •  Novos Recursos
        Configuração por Anotações
        Integração com Facelets
        AJAX Support
        Composite Components
        Novas Regras de Navegação
        View Parameters




Globalcode                            Slide 45
JavaServer Faces (JSF) 2.0
  •  Configuração por Anotações
        @ManagedBean
        @ManagedProperty
        JSF Scopes
               @ApplicationScoped, @RequestScoped, @SessionScoped, @NoneScoped,
                @ViewScoped, @CustomScoped
        @FacesConverter
        @FacesValidator
        @FacesRenderer
        @FacesBehavior
        @ResourceDependency
        @ListenerFor

Globalcode                                                                         Slide 46
JavaServer Faces (JSF) 2.0
  •  @ManagedBean




Globalcode                   Slide 47
JavaServer Faces (JSF) 2.0
  •  @FacesConverter




Globalcode                   Slide 48
JavaServer Faces (JSF) 2.0
  •  @FacesValidator




Globalcode                   Slide 49
JavaServer Faces (JSF) 2.0
  •  @FacesBehavior




  •  @FacesRenderer




Globalcode                   Slide 50
JavaServer Faces (JSF) 2.0
  •  Integração com Facelets
        Define o padrão para templating e visualização
        Utiliza XHTML ao invés de JSP
               JSP encontra-se @Deprecated
               Não podemos adicionar código Java no XTHML
        Incorporação das classes do Facelets na JSF API
        Mantém compatibilidade com versões anteriores
        Definido pela biblioteca (ui)
               http://java.sun.com/jsf/facelets
        Principais Facelets tags
                 <ui:composition>
                 <ui:define>
                 <ui:insert>
                 <ui:param>
Globalcode                                                   Slide 51
JavaServer Faces (JSF) 2.0




Globalcode                   Slide 52
JavaServer Faces (JSF) 2.0
  •  AJAX Support
        Suporte à processamento de requisições AJAX integrado ao
         ciclo de vida dos componentes JSF
        Inspirado nos frameworks RichFaces, IceFaces, DynaFaces…
        Define uma Javascript API padronizada
               Homologada na Open AJAX Alliance
               Suporta AJAX request, callbacks, error handling
        Define a tag <f:ajax> para suporte AJAX aos componentes




Globalcode                                                         Slide 53
JavaServer Faces (JSF) 2.0
  •  AJAX Support
        Javascript API




Globalcode                   Slide 54
JavaServer Faces (JSF) 2.0
  •  AJAX Support
        <f:ajax> Tag




Globalcode                   Slide 55
JavaServer Faces (JSF) 2.0
  •  Composite Components
        Define uma maneira facilitada para criação e extensão de
         componentes JSF
        Promove a reusabilidade visual
        Suporte facilitado pelas IDEs (Eclipse, NetBeans)
        Definido pela biblioteca (cc)
               http://java.sun.com/jsf/composite
        Principais tags
                 <cc:implementation>
                 <cc:interface>
                 <cc:attribute>
                 <cc:actionSource>



Globalcode                                                          Slide 56
JavaServer Faces (JSF) 2.0
  •  Composite Components




Globalcode                   Slide 57
JavaServer Faces (JSF) 2.0
  •  Composite Components




Globalcode                   Slide 58
JavaServer Faces (JSF) 2.0
  •  Novas Regras de Navegação
        Navegação Condicional
               Possibilidade de mapeamento no faces-config.xml, somente realizando o
                redirecionamento com base em um condicional




Globalcode                                                                              Slide 59
JavaServer Faces (JSF) 2.0
  •  Novas Regras de Navegação
        Navegação Implícita
               Modelo de navegação direcionando o retorno da ação para uma view específica,
                através do nome




Globalcode                                                                           Slide 60
JavaServer Faces (JSF) 2.0
  •  View Parameters
        Propagação de request parameters usando HTTP GET
        Possibilidade de criação de Bookmarkable URLs
        Principais tags
               <f:metadata>
                   –  Deve ser incluída dentro da tag <f:view>
               <f:viewParam>
                   –  Associa os request GET parameters com o JSF model
                   –  Suporta Converters, Validators, etc
               <h:link>
               <h:button>




Globalcode                                                                Slide 61
JavaServer Faces (JSF) 2.0
  •  View Parameters
               http://server/view.xhtml?dept=mens&category=sport&sort=2




Globalcode                                                                 Slide 62
Agenda
     "     Plataforma Java EE
     "     Principais Tecnologias (APIs)
           "   Profiles
           "   Java Servlet 3.0
           "   JSF 2.0
           "   CDI
           "   EJB 3.1
           "   JPA 2.0
     "     Comparativo de Versões
     "     Perguntas e Respostas




Globalcode                                 Slide 63
Injeção de Dependência (IoC)
  •  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 64
Injeção de Dependência (IoC)
  •  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 65
Injeção de Dependência (IoC)
  •  Com 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 66
Injeção de Dependência (IoC)
  •  Exemplo de Utilização (Java EE 5)




Globalcode                               Slide 67
Context Dependency Injection (CDI)
  •  O que é CDI (JSR-299)?
        Novo modelo para gerenciamento de injeção de dependência
         (IoC) e de escopos de aplicação
        Também conhecido como “Web Beans”
        Integra as camadas web e transacional da aplicação
        Facilita a implementação das aplicações que utilizam
         tecnologias como JSF e EJB
        Para utilizar basta adicionar o arquivo beans.xml no
         diretório de configuração da aplicação (WEB-INF , META-INF)




Globalcode                                                       Slide 68
Context Dependency Injection (CDI)
        Quem pode receber injeção ?
                 Managed Beans
                 EJB, Interceptor
                 Servlet, Filter, *Listener, JSP Tag Handler
                 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)
                 Remote EJB references
                 ManagedBeans (POJO)
                 Objetos retornados por @Produces

Globalcode                                                      Slide 69
Context Dependency Injection (CDI)
  •  Novos Recursos
        Injection Points
        Producer Methods and Fields
        Qualifiers
        Alternatives
        Expression Language Names
        Scopes and Contexts
               @ApplicationScoped, @RequestScoped, @SessionScoped,
               @ConversationScoped
        Interceptors
        Stereotypes
        Events

Globalcode                                                            Slide 70
Context Dependency Injection (CDI)
  •  Injection Points - @Inject




Globalcode                           Slide 71
Context Dependency Injection (CDI)
  •  Producer Methods and Fields - @Produces




Globalcode                                     Slide 72
Context Dependency Injection (CDI)
  •  Qualifiers - @Qualifier




Globalcode                           Slide 73
Context Dependency Injection (CDI)
  •  Alternatives - @Alternative




Globalcode                           Slide 74
Context Dependency Injection (CDI)
  •  Expression Language Names - @Named




Globalcode                                Slide 75
Context Dependency Injection (CDI)
  •  Scopes and Contexts
        Define um modelo de escopos extensível
        Podemos criar um @Singleton bean
        Dependent scope - @Dependent
               Escopo padrão de todas classes
               Significa que o objeto “injetado” encontra-se no mesmo escopo e tem o mesmo
                ciclo de vida do objeto cliente
        Outros escopos disponíveis
               @ApplicationScoped, @RequestScoped
                 –  Para qualquer web requests, web service, RMI, EJB
               @SessionScoped
                 –  Para qualquer servlet
               @ConversationScoped
                 –  Para JSF requests

Globalcode                                                                           Slide 76
Context Dependency Injection (CDI)
  •  Scopes and Contexts




Globalcode                           Slide 77
Context Dependency Injection (CDI)
  •  Scopes and Contexts - @ConversationScoped




Globalcode                                       Slide 78
Context Dependency Injection (CDI)
  •  Interceptors




Globalcode                           Slide 79
Context Dependency Injection (CDI)
  •  Stereotypes - @Stereotype




Globalcode                           Slide 80
Context Dependency Injection (CDI)
  •  Events




Globalcode                           Slide 81
Agenda
     "     Plataforma Java EE
     "     Principais Tecnologias (APIs)
           "   Profiles
           "   Java Servlet 3.0
           "   JSF 2.0
           "   CDI
           "   EJB 3.1
           "   JPA 2.0
     "     Comparativo de Versões
     "     Perguntas e Respostas




Globalcode                                 Slide 82
Enterprise JavaBeans (EJB)
  •  Características
        Plataforma para criação de aplicações de negócio portáveis,
         robustas e reutilizáveis usando a linguagem Java
        Componentes para construir aplicações sem precisar
         reinventar uma série de recursos e serviços
               Transação, Segurança, Persistencia
        Modelo alto nível de objetos distribuídos
               Computação distribuída
        Pode ser utilizado em aplicações Web e não Web
        É o CICS do Java




Globalcode                                                        Slide 83
Enterprise JavaBeans (EJB)

     Infra Estrutura do Container

                                                                                           EJB
                         Controle Transacional
                                                 Escalabilidade
             Segurança



                                                                                EJB
                                                                            Session Bean




                                                                  Queues                  Data
                                                                  Topics                 Sources
                                                                           Environment
                                                                             Entries

Globalcode                                                                                         Slide 84
Enterprise JavaBeans (EJB)
  •  Tipos de EJB:
        Session Bean
               Representa um 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 85
Enterprise JavaBeans (EJB) 3.1
  •  Novos Recursos
        EJB Lite
        Empacotamento Simplificado
        Interface Opcional
        Singleton EJB
        Timer Service
        Métodos Assíncronos
        Nomes JNDI Padronizados
        Embeddable API




Globalcode                            Slide 86
Enterprise JavaBeans (EJB) 3.1
  •  EJB Lite
        Sub-conjunto de funcionalidades direcionadas para deploy dos
         EJBs no container Java EE Web Profile (.war)

   EJB Lite                         EJB Full
   •  Local Session Beans           •  Message-Driven Beans (MDB)
   •  CMT / BMT                     •  Web Service Endpoints
   •  Segurança Declarativa         •  2.x / 3.x Remove View
   •  Interceptors                  •  Inter-operabilidade com RMI-IIOP
                                    •  Timer service
                                    •  Chamada assíncrona à metodos
                                    •  2.x Local View
                                    •  CMP / BMP Entity Beans




Globalcode                                                                Slide 87
Enterprise JavaBeans (EJB) 3.1
  •  Empacotamento Simplificado
        Possibilita o deploy de componentes EJBs através de um .war
        Somente disponível para os EJB Lite
        ejb-jar.xml não é mais necessário




                                               Java EE 6



                    Java EE 5
Globalcode                                                       Slide 88
Enterprise JavaBeans (EJB) 3.1
  •  Interface Opcional
        No-interface = Local View




Globalcode                           Slide 89
Enterprise JavaBeans (EJB) 3.1
  •  Singleton EJB
        Define um EJB que implementa o padrão Singleton
               Uma única instância por aplicação enterprise
        Abstrai a implementação deste padrão dentro do ambiente
         “enterprise”
               Publicação no diretório JNDI
        Suporta estratégias e configurações para compartilhamento
         no acesso (locking)
        Anotações
                 @Singleton
                 @Lock
                 @AccessTimeout
                 @ConcurrencyManager


Globalcode                                                     Slide 90
Enterprise JavaBeans (EJB) 3.1
  •  Singleton EJB




Globalcode                       Slide 91
Enterprise JavaBeans (EJB) 3.1
  •  Singleton EJB




Globalcode                       Slide 92
Enterprise JavaBeans (EJB) 3.1
  •  Timer Service
        Define uma estrutura para execução baseada em calendários
        Semântica baseada nos processos CRON
        Criação feita pelo container no deploy da aplicação
        Pode ser especificado por anotação ou através do ejb-jar.xml
        Relativo ao current TimeZone
        Sintaxe dos atributos
                 minute = “30”
                 month = “Jan, Jul, Dec”
                 dayOfWeek = “Mon-Fri”
                 dayOfMonth = “Last Mon”
                 hour = “*”
                 minute = “*/10”


Globalcode                                                       Slide 93
Enterprise JavaBeans (EJB) 3.1
  •  Timer Service
        Processa na última sexta-feira de todo mês às 20:30 hrs no
         horário local de São Paulo




Globalcode                                                       Slide 94
Enterprise JavaBeans (EJB) 3.1
  •  Métodos Assíncronos
        Mecanismo simples para realizar chamadas assíncronas para
         uma aplicação enterprise (sem utilizar MDBs)
        Disponível para utilização em Stateful, Stateless e Singleton
         EJBs
        Definido pela anotação @Asynchronous
               Pode ser utilizada pela classe ou por método
        Retorna um objeto Future<T> que representa o resultado em
         processamento assíncrono
                 Future.isDone()
                 Future.isCancelled()
                 Future.get()
                 Future.cancel(boolean)


Globalcode                                                        Slide 95
Enterprise JavaBeans (EJB) 3.1
  •  Métodos Assíncronos




Globalcode                       Slide 96
Enterprise JavaBeans (EJB) 3.1
  •  Nomes JNDI Padronizados
        Definição padronizada de nomes para “lookup” dos EJBs
         remotos e locais
        Eleva a portabilidade de aplicações clientes
        Lookup global
               java : global [/<app-name>] /<module-name> /<ejb-name>
        Lookup dentro da aplicação
               java : app [/<module-name>] /<ejb-name>
        Lookup dentro de um mesmo módulo (JAR, WAR)
               java : module /<ejb-name>




Globalcode                                                               Slide 97
Enterprise JavaBeans (EJB) 3.1
  •  Nomes JNDI Padronizados




  •  Se for realizado o deploy em “componentes.jar”
        java:global/componentes/MyEJB
        java:app/MyEJB
        java:module/MyEJB


Globalcode                                            Slide 98
Enterprise JavaBeans (EJB) 3.1
  •  Embeddable API
        Biblioteca (API) customizada para rodar componentes EJBs
         fora do container (servidor) Java EE
        Implementa o mesmo comportamento (ciclo de vida, pooling,
         IoC) simulando um container Java EE
        Ideal para utilização em testes unitários
               Utilização de Mock components




Globalcode                                                      Slide 99
Enterprise JavaBeans (EJB) 3.1
  •  Embeddable API




Globalcode                       Slide 100
Agenda
     "     Plataforma Java EE
     "     Principais Tecnologias (APIs)
           "   Profiles
           "   Java Servlet 3.0
           "   JSF 2.0
           "   CDI
           "   EJB 3.1
           "   JPA 2.0
     "     Comparativo de Versões
     "     Perguntas e Respostas




Globalcode                                 Slide 101
Java Persistence API (JPA)
  •  Características
         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 containeres EJBs (ligthweigth container)

         Uso de injeção de dependência ao invés de lookups JNDI




Globalcode                                                                 Slide 102
Java Persistence API (JPA)




Globalcode                   Slide 103
Java Persistence API (JPA) 2.0
  •  Novos Recursos
        Standard Properties
        Melhorias no Mapeamento OR
               @ElementCollection, @CollectionTable, @OrderColumn
               Orphan Removal
        Melhorias na JPA-QL
               CASE, NULLIF, COALESCE
        Criteria API
        Melhorias na API
        Validação (Bean Validation)
        Second-level Caching
        Pessimistic Locking

Globalcode                                                           Slide 104
Java Persistence API (JPA) 2.0
  •  Standard Properties




Globalcode                       Slide 105
Java Persistence API (JPA) 2.0
  •  @ElementCollection (Basic Types)




Globalcode                              Slide 106
Java Persistence API (JPA) 2.0
  •  @ElementCollection (Embeddable Types)




Globalcode                                   Slide 107
Java Persistence API (JPA) 2.0
  •  Maps




Globalcode                       Slide 108
Java Persistence API (JPA) 2.0
  •  Embeddables com Relacionamentos




Globalcode                             Slide 109
Java Persistence API (JPA) 2.0
  •  @OrderColumn




Globalcode                       Slide 110
Java Persistence API (JPA) 2.0
  •  Orphan Removal




Globalcode                       Slide 111
Java Persistence API (JPA) 2.0
  •  Melhorias na JPA-QL
        INDEX
               Utilizado para listas ordenadas
        KEY, VALUE, ENTRY
               Utilizado para manipulação de Maps
        CASE, COALESCE, NULLIF
               Utilizado para CASE expressions
        TYPE
               Utilizado para restringir polimorfismo




Globalcode                                               Slide 112
Java Persistence API (JPA) 2.0
  •  Melhorias na JPA-QL




Globalcode                       Slide 113
Java Persistence API (JPA) 2.0
  •  Criteria API
        Biblioteca (API) para criação de queries dinâmicas via
         programação (métodos)
        Principais Classes
               CriteriaBuilder
                  –  Criação de queries, seleções, ordenação
               CriteriaQuery
                  –  Adiciona, substitui, navega nos elementos que compões a query
               Root
                  –  Define as query roots
               Join, ListJoin, MapJoin…
                  –  Joins partindo de um root ou de joins já existentes
               Path
                  –  Navegação patindo de um root, join ou outro path
               Subquery
Globalcode                                                                           Slide 114
Java Persistence API (JPA) 2.0
  •  Criteria API




Globalcode                       Slide 115
Java Persistence API (JPA) 2.0
  •  Melhorias na API




Globalcode                       Slide 116
Java Persistence API (JPA) 2.0
  •  Validação (Bean Validation)
        Definição de um novo modelo de validação para as entidades
         utilizando um conjunto de anotações definidas pela JSR 303
         (Bean Validation)
        Inspirado no projeto Hibernate Validator
        Validação automática durante os eventos de ciclo de vida
               PrePersist
               PreUpdate
               PreRemove




Globalcode                                                      Slide 117
Java Persistence API (JPA) 2.0
  •  Validação (Bean Validation)




Globalcode                         Slide 118
Java Persistence API (JPA) 2.0
  •  Second-level Caching
        Compartilha a instância da entidade entre vários persistence
         contexts (EntityManager) utilizados pela aplicação




Globalcode                                                        Slide 119
Java Persistence API (JPA) 2.0
  •  Second-level Caching
        JPA 1.0 não definiu nenhum suporte à second-level cache
        JPA 2.0 especificou um suporte básico para as estas
         operações de cache, através da Cache API




Globalcode                                                         Slide 120
Java Persistence API (JPA) 2.0
  •  Pessimistic Locking
        JPA 1.0 somente oferece suporte à Lock Optimistic
        Encapsula os locks realizados no banco de dados
        Lock Modes
               PESSIMISTIC_READ (lock compartilhado)
               PESSIMISTIC_WRITE (lock exclusivo)
               PESSIMISTIC_FORCE_INCREMENT (lock versionado)




Globalcode                                                      Slide 121
Agenda
     "     Plataforma Java EE
     "     Principais Tecnologias (APIs)
           "   Profiles
           "   Java Servlet 3.0
           "   JSF 2.0
           "   CDI
           "   EJB 3.1
           "   JPA 2.0
     "     Comparativo de Versões
     "     Perguntas e Respostas




Globalcode                                 Slide 122
Comparativo de Versões




Globalcode               Slide 123
Comparativo de Versões
  •    Java EE 1.4
           Novembro de 2003
           EJB 2.1, Servlet 2.4 e JSP 2.0
           Principais problemas
                  Deployment descriptor
                  Interfaces
                  Entity beans
                  Complexidade de aprendizado e desenvolvimento

  •    Java EE 5
           Maio de 2006
           Aumentar a produtividade e facilitar o desenvolvimento
           Principais mudanças
                Anotações
                Enterprise JavaBeans 3.0
                Java Persistence API (JPA)
                Injeção de dependência
                Inclusão de JSF 1.2
                Novas versões das APIs existentes

Globalcode                                                           Slide 124
Comparativo de Versões
  •  Java EE 6
        Dezembro 2009;
        Maior flexibilidade para a plataforma;
        Principais mudanças
                 Java Servlet 3.0;
                 EJB 3.1;
                 JPA 2.0;
                 JSF 2.0;
                 CDI;
                 Bean Validation 1.0;
                 Profiles (deployment);
                 Novas versões das APIs existentes.




Globalcode                                             Slide 125
Perguntas & Respostas




                  ?
Globalcode               Slide 126
Mini-curso Gratuito


              Agradecemos a presença!




             http://open4education.googlecode.com/



Globalcode                                           Slide 127

Contenu connexe

Tendances

Construindo aplicações web java com netbeans
Construindo aplicações web java com netbeansConstruindo aplicações web java com netbeans
Construindo aplicações web java com netbeansSliedesharessbarbosa
 
Dominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E Jpa
Dominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E JpaDominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E Jpa
Dominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E JpaAna Albert
 
As grandes novidades do JSF 2.0!
As grandes novidades do JSF 2.0!As grandes novidades do JSF 2.0!
As grandes novidades do JSF 2.0!Diego Santos
 
Java OO Middleware - JEE / EJB / RMI
Java OO Middleware - JEE / EJB / RMIJava OO Middleware - JEE / EJB / RMI
Java OO Middleware - JEE / EJB / RMIYitzhak Stone
 
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áticaGlobalcode
 
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
 
Desenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e ServletsDesenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e ServletsIgo Coelho
 
Apresentação jsf 2.0
Apresentação jsf 2.0Apresentação jsf 2.0
Apresentação jsf 2.0Paulo Neto
 
JavaServer Faces - Desenvolvendo aplicações web com produtividade
JavaServer Faces - Desenvolvendo aplicações web com produtividadeJavaServer Faces - Desenvolvendo aplicações web com produtividade
JavaServer Faces - Desenvolvendo aplicações web com produtividadeRafael Ponte
 
Migrando de Applets para JavaFX, e Modelos de Distribuição de Apps
Migrando de Applets para JavaFX, e Modelos de Distribuição de AppsMigrando de Applets para JavaFX, e Modelos de Distribuição de Apps
Migrando de Applets para JavaFX, e Modelos de Distribuição de AppsBruno Borges
 
Java Platform, Enterprise Edition
Java Platform, Enterprise EditionJava Platform, Enterprise Edition
Java Platform, Enterprise EditionDaniel Arndt Alves
 

Tendances (20)

GUJavaSC - Mini-curso Java EE
GUJavaSC - Mini-curso Java EEGUJavaSC - Mini-curso Java EE
GUJavaSC - Mini-curso Java EE
 
Tutorial Java EE
Tutorial Java EETutorial Java EE
Tutorial Java EE
 
Construindo aplicações web java com netbeans
Construindo aplicações web java com netbeansConstruindo aplicações web java com netbeans
Construindo aplicações web java com netbeans
 
Serra StarTec 2013 - Java EE
Serra StarTec 2013 - Java EESerra StarTec 2013 - Java EE
Serra StarTec 2013 - Java EE
 
Dominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E Jpa
Dominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E JpaDominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E Jpa
Dominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E Jpa
 
As grandes novidades do JSF 2.0!
As grandes novidades do JSF 2.0!As grandes novidades do JSF 2.0!
As grandes novidades do JSF 2.0!
 
Tutorial EJB 3.0 (2009)
Tutorial EJB 3.0 (2009)Tutorial EJB 3.0 (2009)
Tutorial EJB 3.0 (2009)
 
Jee6
Jee6Jee6
Jee6
 
Flisolgo2010
Flisolgo2010Flisolgo2010
Flisolgo2010
 
EJB
EJBEJB
EJB
 
Java OO Middleware - JEE / EJB / RMI
Java OO Middleware - JEE / EJB / RMIJava OO Middleware - JEE / EJB / RMI
Java OO Middleware - JEE / EJB / RMI
 
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
 
JUDCon Brazil 2013
JUDCon Brazil 2013JUDCon Brazil 2013
JUDCon Brazil 2013
 
ApresentaçãO Ejb (Enterprise Java Beans)
ApresentaçãO Ejb (Enterprise Java Beans)ApresentaçãO Ejb (Enterprise Java Beans)
ApresentaçãO Ejb (Enterprise Java Beans)
 
Desenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e ServletsDesenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e Servlets
 
Apresentação jsf 2.0
Apresentação jsf 2.0Apresentação jsf 2.0
Apresentação jsf 2.0
 
JavaServer Faces - Desenvolvendo aplicações web com produtividade
JavaServer Faces - Desenvolvendo aplicações web com produtividadeJavaServer Faces - Desenvolvendo aplicações web com produtividade
JavaServer Faces - Desenvolvendo aplicações web com produtividade
 
Migrando de Applets para JavaFX, e Modelos de Distribuição de Apps
Migrando de Applets para JavaFX, e Modelos de Distribuição de AppsMigrando de Applets para JavaFX, e Modelos de Distribuição de Apps
Migrando de Applets para JavaFX, e Modelos de Distribuição de Apps
 
Java Platform, Enterprise Edition
Java Platform, Enterprise EditionJava Platform, Enterprise Edition
Java Platform, Enterprise Edition
 
Prime Faces
Prime FacesPrime Faces
Prime Faces
 

En vedette (20)

ReduplicaçãO
ReduplicaçãOReduplicaçãO
ReduplicaçãO
 
O ensino pelas novas tecnologias
O ensino pelas novas tecnologiasO ensino pelas novas tecnologias
O ensino pelas novas tecnologias
 
Practica de powerpoint
Practica de powerpointPractica de powerpoint
Practica de powerpoint
 
Noa leire
Noa leireNoa leire
Noa leire
 
Step one
Step oneStep one
Step one
 
53011213098
5301121309853011213098
53011213098
 
Calidad
CalidadCalidad
Calidad
 
A MIDIA POR TRÁZ DA MANCHETE.
A MIDIA POR TRÁZ DA MANCHETE.A MIDIA POR TRÁZ DA MANCHETE.
A MIDIA POR TRÁZ DA MANCHETE.
 
ComunicaçãO F2 F E Mediatizadapttr
ComunicaçãO F2 F E MediatizadapttrComunicaçãO F2 F E Mediatizadapttr
ComunicaçãO F2 F E Mediatizadapttr
 
SUPLEMENTO MINERAL: Adiciona e Multiplica
SUPLEMENTO MINERAL: Adiciona e Multiplica SUPLEMENTO MINERAL: Adiciona e Multiplica
SUPLEMENTO MINERAL: Adiciona e Multiplica
 
Formação Tic
Formação TicFormação Tic
Formação Tic
 
¿Por qué la Virtualización?
¿Por qué la Virtualización?¿Por qué la Virtualización?
¿Por qué la Virtualización?
 
Album de fotografías 2º a primaria
Album de fotografías 2º a primariaAlbum de fotografías 2º a primaria
Album de fotografías 2º a primaria
 
Teoria De Dow
Teoria De DowTeoria De Dow
Teoria De Dow
 
Proj I Acessibilidade (18.06.09) REVISADO FINAL
Proj I  Acessibilidade (18.06.09) REVISADO FINALProj I  Acessibilidade (18.06.09) REVISADO FINAL
Proj I Acessibilidade (18.06.09) REVISADO FINAL
 
LoopMarket-presentacion
LoopMarket-presentacionLoopMarket-presentacion
LoopMarket-presentacion
 
Guerreando
GuerreandoGuerreando
Guerreando
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
Biologia - Planejamento Interativo
Biologia - Planejamento InterativoBiologia - Planejamento Interativo
Biologia - Planejamento Interativo
 
Intergenerational Justice in Austerity Times
Intergenerational Justice in Austerity TimesIntergenerational Justice in Austerity Times
Intergenerational Justice in Austerity Times
 

Similaire à MC - Java Enterprise Edition 6 (Java EE)

Anatomia do JSF – JavaServer Faces
Anatomia do JSF – JavaServer FacesAnatomia do JSF – JavaServer Faces
Anatomia do JSF – JavaServer Facescejug
 
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 JavaMariana de Azevedo Santos
 
Palest"Tecnologias para Desenvolvimento Baseado em Componentes"
Palest"Tecnologias para Desenvolvimento Baseado em Componentes"Palest"Tecnologias para Desenvolvimento Baseado em Componentes"
Palest"Tecnologias para Desenvolvimento Baseado em Componentes"sbcars
 
Introdução a Linguagem Java
Introdução a Linguagem JavaIntrodução a Linguagem Java
Introdução a Linguagem JavaUFPA
 
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õesRodrigo Cândido da Silva
 
Java Web Dev Introdução
Java Web Dev IntroduçãoJava Web Dev Introdução
Java Web Dev IntroduçãoMarcio Marinho
 
Anatomia do JSF, JavaServer Faces
Anatomia do JSF, JavaServer FacesAnatomia do JSF, JavaServer Faces
Anatomia do JSF, JavaServer FacesRafael Ponte
 
Jsf com hibernate, spring security e maven
Jsf com hibernate, spring security e mavenJsf com hibernate, spring security e maven
Jsf com hibernate, spring security e mavenLeandro Costa
 
Java: Muito mais que uma linguagem!
Java: Muito mais que uma linguagem!Java: Muito mais que uma linguagem!
Java: Muito mais que uma linguagem!Aécio Costa
 
Uso de Critérios de Seleção para Frameworks Livres em Plataforma Java EE
Uso de Critérios de Seleção para Frameworks Livres em Plataforma Java EEUso de Critérios de Seleção para Frameworks Livres em Plataforma Java EE
Uso de Critérios de Seleção para Frameworks Livres em Plataforma Java EEMarco Antonio Maciel
 

Similaire à MC - Java Enterprise Edition 6 (Java EE) (20)

Anatomia do JSF – JavaServer Faces
Anatomia do JSF – JavaServer FacesAnatomia do JSF – JavaServer Faces
Anatomia do JSF – JavaServer Faces
 
Curso jsf
Curso jsfCurso jsf
Curso jsf
 
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
 
Tecnologia Java
Tecnologia JavaTecnologia Java
Tecnologia Java
 
Java Seminar
Java SeminarJava Seminar
Java Seminar
 
Java v1.1
Java v1.1Java v1.1
Java v1.1
 
Aula 1 apresentação
Aula 1   apresentaçãoAula 1   apresentação
Aula 1 apresentação
 
1409243945064
14092439450641409243945064
1409243945064
 
Palest"Tecnologias para Desenvolvimento Baseado em Componentes"
Palest"Tecnologias para Desenvolvimento Baseado em Componentes"Palest"Tecnologias para Desenvolvimento Baseado em Componentes"
Palest"Tecnologias para Desenvolvimento Baseado em Componentes"
 
Introdução a Linguagem Java
Introdução a Linguagem JavaIntrodução a Linguagem Java
Introdução a Linguagem Java
 
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
 
Java Web Dev Introdução
Java Web Dev IntroduçãoJava Web Dev Introdução
Java Web Dev Introdução
 
Anatomia do JSF, JavaServer Faces
Anatomia do JSF, JavaServer FacesAnatomia do JSF, JavaServer Faces
Anatomia do JSF, JavaServer Faces
 
Jsf com hibernate, spring security e maven
Jsf com hibernate, spring security e mavenJsf com hibernate, spring security e maven
Jsf com hibernate, spring security e maven
 
Acelerando o desenvolvimento java com rad 7.5
Acelerando o desenvolvimento java com rad 7.5Acelerando o desenvolvimento java com rad 7.5
Acelerando o desenvolvimento java com rad 7.5
 
Netbeans Slides
Netbeans SlidesNetbeans Slides
Netbeans Slides
 
Java: Muito mais que uma linguagem!
Java: Muito mais que uma linguagem!Java: Muito mais que uma linguagem!
Java: Muito mais que uma linguagem!
 
Introdução a jsf
Introdução a jsfIntrodução a jsf
Introdução a jsf
 
Apache e Java
Apache e JavaApache e Java
Apache e Java
 
Uso de Critérios de Seleção para Frameworks Livres em Plataforma Java EE
Uso de Critérios de Seleção para Frameworks Livres em Plataforma Java EEUso de Critérios de Seleção para Frameworks Livres em Plataforma Java EE
Uso de Critérios de Seleção para Frameworks Livres em Plataforma Java EE
 

Plus de 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çãoRodrigo 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 StrategiesRodrigo 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 KubernetesRodrigo 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 OSSRodrigo 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 BootRodrigo Cândido da Silva
 
Workshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura MicroservicesWorkshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura MicroservicesRodrigo 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 JavaRodrigo 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 DevOpsRodrigo 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 JavaRodrigo 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 EERodrigo 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 EERodrigo 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 RESTRodrigo 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 CloudRodrigo 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 EERodrigo Cândido da Silva
 

Plus 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
 

MC - Java Enterprise Edition 6 (Java EE)

  • 1. Mini-curso Gratuito Rodrigo Cândido da Silva VOffice / Globalcode Globalcode Slide 1
  • 2. Mini-curso Gratuito http://open4education.googlecode.com/ Globalcode Slide 2
  • 3. Doações •  Entidade  Orionópolis Catarinense   É uma entidade filantrópica, sem fins lucrativos, que abriga gratuitamente em sistema de vila e regime de internato: idosos, crianças e adultos portadores de deficiências e multideficiencias física e mental que vivem em estado de abandono familiar e econômico.   Atualmente abrigam 67 pessoas  Para Maiores Informações   http://orionopolis.floripa.com.br   orione@fastlane.com.br   Telefone – (048) 3343-0087 •  MUITO OBRIGADO À TODOS !!! Globalcode Slide 3
  • 5. Objetivo Conhecer a plataforma Java Enterprise Edition 6 e entender as principais diferenças desta versão em relação as versões anteriores Globalcode Slide 5
  • 6. Agenda "   Plataforma Java EE "   Principais Tecnologias (APIs) "   Profiles "   Java Servlet 3.0 "   JSF 2.0 "   CDI "   EJB 3.1 "   JPA 2.0 "   Comparativo de Versões "   Perguntas e Respostas Globalcode Slide 6
  • 7. Jogo Rápido •  Quem trabalha com Java EE?  Servlet?  JSF?  JPA?  EJB? •  Quem já estudou alguma funcionalidade do Java EE 6? •  Quem está interessado em se atualizar? •  Quem gostou do jogo do Brasil ontem? :/ Globalcode Slide 7
  • 8. Agenda "   Plataforma Java EE "   Principais Tecnologias (APIs) "   Profiles "   Java Servlet 3.0 "   JSF 2.0 "   CDI "   EJB 3.1 "   JPA 2.0 "   Comparativo de Versões "   Perguntas e Respostas Globalcode Slide 8
  • 9. Plataforma Java •  Desenvolvimento de software robusto para diferentes tipos de dispositivos   PC, celular, palmtop, robôs, etc. •  Software Multiplataforma   “Escreva uma vez e execute em qualquer lugar...”   Código não precisa ser recompilado para executar em outro sistema operacional •  Máquina Virtual (Java Virtual Machine - JVM)   Responsável por oferecer a flexibilidade de sistema operacional para um software Java •  Mantida pela comunidade de desenvolvedores por meio do JCP (Java Community Process) Globalcode Slide 9
  • 10. Plataforma Java •  A plataforma é dividida em três partes:  Java Standard Edition (Java SE)   Base do Java que contém as principais APIs  Java Enterprise Editon (Java EE)   Versão de Java para desenvolvimento de aplicações Web e enterprise que rodam em servidores padronizados  Java Micro Edition (Java ME)   Redução da plataforma Standard para dispositivos móveis como PDA e celulares Globalcode Slide 10
  • 11. Java Enterprise Edition •  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 software de pequeno, médio e grande porte em múltiplas camadas de componentes  Componentes “rodam” em um servidor Java EE Globalcode Slide 11
  • 13. Java Enterprise Edition •  Containers Java EE Globalcode Slide 13
  • 14. Java Enterprise Edition •  Serviços oferecidos pelos containeres Java EE:  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 14
  • 15. Agenda "   Plataforma Java EE "   Principais Tecnologias (APIs) "   Profiles "   Java Servlet 3.0 "   JSF 2.0 "   CDI "   EJB 3.1 "   JPA 2.0 "   Comparativo de Versões "   Perguntas e Respostas Globalcode Slide 15
  • 16. Containers (Java EE 5) Globalcode Slide 16
  • 17. Containers (Java EE 5) •  Web Container  Trabalha em conjunto com um Servidor HTTP para oferecer suporte aos componentes da camada Web   Tomcat (Apache)   Jetty   JRun (Adobe) •  EJB Container  É o servidor de componentes transacionais EJB   OpenEJB (Apache) *  Containeres específicos dos fabricantes de servidores de aplicação Globalcode Slide 17
  • 18. Profiles •  Define um sub-set de APIs do Java EE para rodar determinado tipo de aplicação (arquitetura) •  Dois profiles foram definidos neste momento pela especificação do Java Enterprise  Web Profile   Semelhante a idéia do Web container, mas com mais funcionalidades incorporadas  Full Profile   Servidor Java EE completo Globalcode Slide 18
  • 21. Agenda "   Plataforma Java EE "   Principais Tecnologias (APIs) "   Profiles "   Java Servlet 3.0 "   JSF 2.0 "   CDI "   EJB 3.1 "   JPA 2.0 "   Comparativo de Versões "   Perguntas e Respostas Globalcode Slide 21
  • 22. Java Servlet •  Aplicações que rodam no servidor e respondem requisições de clientes Web Globalcode Slide 22
  • 23. Java Servlet 3.0 •  Novos Recursos  Configuração por Anotações  Registro Dinâmico de Componentes  Web Fragments  Servlet Container Initializer  Resources Sharing  Programatic Login / Logout  Asynchronous Support Globalcode Slide 23
  • 24. Java Servlet 3.0 •  Configuração por Anotações  @WebServlet   Define o mapeamento do componente Servlet  @WebFilter   Define o mapeamento do componente Filter  @WebListener   Define o mapeamento do componente Listener  @WebInitParam   Define um parâmetro de inicialização  @ServletSecurity   Define as constraints de segurança  @MultipartConfig   Utilizado para upload de arquivos Globalcode Slide 24
  • 25. Java Servlet 3.0 •  @WebServlet Globalcode Slide 25
  • 26. Java Servlet 3.0 •  @WebFilter Globalcode Slide 26
  • 27. Java Servlet 3.0 •  @WebListener Globalcode Slide 27
  • 28. Java Servlet 3.0 •  @WebInitParam Globalcode Slide 28
  • 29. Java Servlet 3.0 •  @ServletSecurity Globalcode Slide 29
  • 30. Java Servlet 3.0 •  Registro Dinâmico de Componentes  Carregamento dinâmico de Servlets, Filters e Listeners  Executado durante a inicialização do ServletContext  Registro   ServletContext#addServlet (#addFilter | #addListener)  Criação e Registro   ServletContext#createServlet (#createFilter | #createListener)  Lookup   ServletContext#getServlet (#getFilter | #getListener) Globalcode Slide 30
  • 31. Java Servlet 3.0 •  Registro Dinâmico de Componentes Globalcode Slide 31
  • 32. Java Servlet 3.0 •  Web Fragments  Define um pedaço do arquivo à ser incorporado ao web.xml  Pode ser definido em diretórios META-INF de arquivos JARs adicionados no classpath da aplicação web (WEB-INF/lib)   Ideal para configuração de frameworks (Struts, Spring, GWT)  Sintaxe praticamente idêntica ao arquivo web.xml tradicional, com pequenas modificações na ordem dos elementos  Caso haja conflito de nomes (Servlets, Filters, etc) os componentes definidos no web.xml tem prioridade  Uma aplicação web pode ter múltiplos web fragments  É definido pela tag <web-fragment> Globalcode Slide 32
  • 33. Java Servlet 3.0 •  Web Fragments Globalcode Slide 33
  • 34. Java Servlet 3.0 •  Servlet Container Initializer  Mecanismo para inicialização de recursos (objetos) através de bibliotecas “terceiras” incorporados na aplicação web  Executado antes de qualquer Listener durante a fase de inicialização da aplicação  Para implementação   Implementar a interface –  ServletContainerInitializer   Definir quais tipos (anotações) de classes serão inspecionadas –  @HandlesTypes  Esta classe intercepta os componentes de acordo com os handles types definidos e executa o método onStartup(…) Globalcode Slide 34
  • 35. Java Servlet 3.0 •  Servlet Container Initializer Globalcode Slide 35
  • 36. Java Servlet 3.0 •  Resources Sharing  Possibilidade de adicionar JSPs dentro de arquivos JARs existentes no classpath (WEB-INF/lib) da aplicação web  Devem ser organizados na seguinte estrutura   WEB-INF/lib/[*.jar]/META-INF/resources  JSPs definidos com o mesmo nome no diretório da aplicação web terão prioridade  Exemplo de utilização   mywebapp.war –  /WEB-INF/lib/shared.jar!/META-INF/resources/shared.jsp   Endereço de acesso –  http://server/mywebapp/shared.jsp Globalcode Slide 36
  • 37. Java Servlet 3.0 •  Programatic Login / Logout  Adicionados novos métodos na Servlet API para tratamento de login e logout da aplicação  Todo processo de login e logout da aplicação pode ser manipulado através de programação   Não tem mais necessidade da definição <login-config>  Métodos disponíveis   HttpServletRequest.login(String username, String password)   HttpServletRequest.authenticate(HttpServletResponse)   HttpServletRequest.logout() Globalcode Slide 37
  • 38. Java Servlet 3.0 •  Asynchronous Support  Modelo avançado para execução the Threads  Servlet não precisa mais esperar pela resposta de um outro recurso demorado para que sua Thread possa continuar executando  Exemplos para utilização   Conexões JDBC não disponíveis, retorno JMS, processos longos  Servlets e Filters suportam esta funcionalidade, mas devem ser sinalizados como assíncronos  Para sinalizar suporte a este mecanismo   @WebServlet(asynchSupported=true)   <async-supported>true</async-supported>   registration.setAsyncSupported(true); Globalcode Slide 38
  • 39. Java Servlet 3.0 •  Asynchronous Support Globalcode Slide 39
  • 40. Java Servlet 3.0 •  Asynchronous Support Globalcode Slide 40
  • 41. Java Servlet 3.0 •  Asynchronous Support Globalcode Slide 41
  • 42. Agenda "   Plataforma Java EE "   Principais Tecnologias (APIs) "   Profiles "   Java Servlet 3.0 "   JSF 2.0 "   CDI "   EJB 3.1 "   JPA 2.0 "   Comparativo de Versões "   Perguntas e Respostas Globalcode Slide 42
  • 43. JavaServer Faces (JSF) •  Características  Framework para implementação de interfaces gráficas das aplicações Web baseado no modelo de componentes  Incorpora características de um framework MVC para Web e um modelo de interfaces baseados em eventos   Separação entre visualização e regras de negócio   Visualização pode ser feita por diferente renderizadores  Padrão de implementação para camada Web   Especificação Java EE  Amplo suporte das IDEs (Eclipse, NetBeans)   “Toolability = Ferramentabilidade” Globalcode Slide 43
  • 44. JavaServer Faces (JSF) J2EE Web Container J2EE EJB Container JavaServer Faces Controller View Model Servlet Java Custom JavaBeans EJB Server Tag Pages Globalcode Slide 44
  • 45. JavaServer Faces (JSF) 2.0 •  Novos Recursos  Configuração por Anotações  Integração com Facelets  AJAX Support  Composite Components  Novas Regras de Navegação  View Parameters Globalcode Slide 45
  • 46. JavaServer Faces (JSF) 2.0 •  Configuração por Anotações  @ManagedBean  @ManagedProperty  JSF Scopes   @ApplicationScoped, @RequestScoped, @SessionScoped, @NoneScoped, @ViewScoped, @CustomScoped  @FacesConverter  @FacesValidator  @FacesRenderer  @FacesBehavior  @ResourceDependency  @ListenerFor Globalcode Slide 46
  • 47. JavaServer Faces (JSF) 2.0 •  @ManagedBean Globalcode Slide 47
  • 48. JavaServer Faces (JSF) 2.0 •  @FacesConverter Globalcode Slide 48
  • 49. JavaServer Faces (JSF) 2.0 •  @FacesValidator Globalcode Slide 49
  • 50. JavaServer Faces (JSF) 2.0 •  @FacesBehavior •  @FacesRenderer Globalcode Slide 50
  • 51. JavaServer Faces (JSF) 2.0 •  Integração com Facelets  Define o padrão para templating e visualização  Utiliza XHTML ao invés de JSP   JSP encontra-se @Deprecated   Não podemos adicionar código Java no XTHML  Incorporação das classes do Facelets na JSF API  Mantém compatibilidade com versões anteriores  Definido pela biblioteca (ui)   http://java.sun.com/jsf/facelets  Principais Facelets tags   <ui:composition>   <ui:define>   <ui:insert>   <ui:param> Globalcode Slide 51
  • 52. JavaServer Faces (JSF) 2.0 Globalcode Slide 52
  • 53. JavaServer Faces (JSF) 2.0 •  AJAX Support  Suporte à processamento de requisições AJAX integrado ao ciclo de vida dos componentes JSF  Inspirado nos frameworks RichFaces, IceFaces, DynaFaces…  Define uma Javascript API padronizada   Homologada na Open AJAX Alliance   Suporta AJAX request, callbacks, error handling  Define a tag <f:ajax> para suporte AJAX aos componentes Globalcode Slide 53
  • 54. JavaServer Faces (JSF) 2.0 •  AJAX Support  Javascript API Globalcode Slide 54
  • 55. JavaServer Faces (JSF) 2.0 •  AJAX Support  <f:ajax> Tag Globalcode Slide 55
  • 56. JavaServer Faces (JSF) 2.0 •  Composite Components  Define uma maneira facilitada para criação e extensão de componentes JSF  Promove a reusabilidade visual  Suporte facilitado pelas IDEs (Eclipse, NetBeans)  Definido pela biblioteca (cc)   http://java.sun.com/jsf/composite  Principais tags   <cc:implementation>   <cc:interface>   <cc:attribute>   <cc:actionSource> Globalcode Slide 56
  • 57. JavaServer Faces (JSF) 2.0 •  Composite Components Globalcode Slide 57
  • 58. JavaServer Faces (JSF) 2.0 •  Composite Components Globalcode Slide 58
  • 59. JavaServer Faces (JSF) 2.0 •  Novas Regras de Navegação  Navegação Condicional   Possibilidade de mapeamento no faces-config.xml, somente realizando o redirecionamento com base em um condicional Globalcode Slide 59
  • 60. JavaServer Faces (JSF) 2.0 •  Novas Regras de Navegação  Navegação Implícita   Modelo de navegação direcionando o retorno da ação para uma view específica, através do nome Globalcode Slide 60
  • 61. JavaServer Faces (JSF) 2.0 •  View Parameters  Propagação de request parameters usando HTTP GET  Possibilidade de criação de Bookmarkable URLs  Principais tags   <f:metadata> –  Deve ser incluída dentro da tag <f:view>   <f:viewParam> –  Associa os request GET parameters com o JSF model –  Suporta Converters, Validators, etc   <h:link>   <h:button> Globalcode Slide 61
  • 62. JavaServer Faces (JSF) 2.0 •  View Parameters   http://server/view.xhtml?dept=mens&category=sport&sort=2 Globalcode Slide 62
  • 63. Agenda "   Plataforma Java EE "   Principais Tecnologias (APIs) "   Profiles "   Java Servlet 3.0 "   JSF 2.0 "   CDI "   EJB 3.1 "   JPA 2.0 "   Comparativo de Versões "   Perguntas e Respostas Globalcode Slide 63
  • 64. Injeção de Dependência (IoC) •  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 64
  • 65. Injeção de Dependência (IoC) •  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 65
  • 66. Injeção de Dependência (IoC) •  Com 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 66
  • 67. Injeção de Dependência (IoC) •  Exemplo de Utilização (Java EE 5) Globalcode Slide 67
  • 68. Context Dependency Injection (CDI) •  O que é CDI (JSR-299)?  Novo modelo para gerenciamento de injeção de dependência (IoC) e de escopos de aplicação  Também conhecido como “Web Beans”  Integra as camadas web e transacional da aplicação  Facilita a implementação das aplicações que utilizam tecnologias como JSF e EJB  Para utilizar basta adicionar o arquivo beans.xml no diretório de configuração da aplicação (WEB-INF , META-INF) Globalcode Slide 68
  • 69. Context Dependency Injection (CDI)  Quem pode receber injeção ?   Managed Beans   EJB, Interceptor   Servlet, Filter, *Listener, JSP Tag Handler   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)   Remote EJB references   ManagedBeans (POJO)   Objetos retornados por @Produces Globalcode Slide 69
  • 70. Context Dependency Injection (CDI) •  Novos Recursos  Injection Points  Producer Methods and Fields  Qualifiers  Alternatives  Expression Language Names  Scopes and Contexts   @ApplicationScoped, @RequestScoped, @SessionScoped,   @ConversationScoped  Interceptors  Stereotypes  Events Globalcode Slide 70
  • 71. Context Dependency Injection (CDI) •  Injection Points - @Inject Globalcode Slide 71
  • 72. Context Dependency Injection (CDI) •  Producer Methods and Fields - @Produces Globalcode Slide 72
  • 73. Context Dependency Injection (CDI) •  Qualifiers - @Qualifier Globalcode Slide 73
  • 74. Context Dependency Injection (CDI) •  Alternatives - @Alternative Globalcode Slide 74
  • 75. Context Dependency Injection (CDI) •  Expression Language Names - @Named Globalcode Slide 75
  • 76. Context Dependency Injection (CDI) •  Scopes and Contexts  Define um modelo de escopos extensível  Podemos criar um @Singleton bean  Dependent scope - @Dependent   Escopo padrão de todas classes   Significa que o objeto “injetado” encontra-se no mesmo escopo e tem o mesmo ciclo de vida do objeto cliente  Outros escopos disponíveis   @ApplicationScoped, @RequestScoped –  Para qualquer web requests, web service, RMI, EJB   @SessionScoped –  Para qualquer servlet   @ConversationScoped –  Para JSF requests Globalcode Slide 76
  • 77. Context Dependency Injection (CDI) •  Scopes and Contexts Globalcode Slide 77
  • 78. Context Dependency Injection (CDI) •  Scopes and Contexts - @ConversationScoped Globalcode Slide 78
  • 79. Context Dependency Injection (CDI) •  Interceptors Globalcode Slide 79
  • 80. Context Dependency Injection (CDI) •  Stereotypes - @Stereotype Globalcode Slide 80
  • 81. Context Dependency Injection (CDI) •  Events Globalcode Slide 81
  • 82. Agenda "   Plataforma Java EE "   Principais Tecnologias (APIs) "   Profiles "   Java Servlet 3.0 "   JSF 2.0 "   CDI "   EJB 3.1 "   JPA 2.0 "   Comparativo de Versões "   Perguntas e Respostas Globalcode Slide 82
  • 83. Enterprise JavaBeans (EJB) •  Características  Plataforma para criação de aplicações de negócio portáveis, robustas e reutilizáveis usando a linguagem Java  Componentes para construir aplicações sem precisar reinventar uma série de recursos e serviços   Transação, Segurança, Persistencia  Modelo alto nível de objetos distribuídos   Computação distribuída  Pode ser utilizado em aplicações Web e não Web  É o CICS do Java Globalcode Slide 83
  • 84. Enterprise JavaBeans (EJB) Infra Estrutura do Container EJB Controle Transacional Escalabilidade Segurança EJB Session Bean Queues Data Topics Sources Environment Entries Globalcode Slide 84
  • 85. Enterprise JavaBeans (EJB) •  Tipos de EJB:  Session Bean   Representa um 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 85
  • 86. Enterprise JavaBeans (EJB) 3.1 •  Novos Recursos  EJB Lite  Empacotamento Simplificado  Interface Opcional  Singleton EJB  Timer Service  Métodos Assíncronos  Nomes JNDI Padronizados  Embeddable API Globalcode Slide 86
  • 87. Enterprise JavaBeans (EJB) 3.1 •  EJB Lite  Sub-conjunto de funcionalidades direcionadas para deploy dos EJBs no container Java EE Web Profile (.war) EJB Lite EJB Full •  Local Session Beans •  Message-Driven Beans (MDB) •  CMT / BMT •  Web Service Endpoints •  Segurança Declarativa •  2.x / 3.x Remove View •  Interceptors •  Inter-operabilidade com RMI-IIOP •  Timer service •  Chamada assíncrona à metodos •  2.x Local View •  CMP / BMP Entity Beans Globalcode Slide 87
  • 88. Enterprise JavaBeans (EJB) 3.1 •  Empacotamento Simplificado  Possibilita o deploy de componentes EJBs através de um .war  Somente disponível para os EJB Lite  ejb-jar.xml não é mais necessário Java EE 6 Java EE 5 Globalcode Slide 88
  • 89. Enterprise JavaBeans (EJB) 3.1 •  Interface Opcional  No-interface = Local View Globalcode Slide 89
  • 90. Enterprise JavaBeans (EJB) 3.1 •  Singleton EJB  Define um EJB que implementa o padrão Singleton   Uma única instância por aplicação enterprise  Abstrai a implementação deste padrão dentro do ambiente “enterprise”   Publicação no diretório JNDI  Suporta estratégias e configurações para compartilhamento no acesso (locking)  Anotações   @Singleton   @Lock   @AccessTimeout   @ConcurrencyManager Globalcode Slide 90
  • 91. Enterprise JavaBeans (EJB) 3.1 •  Singleton EJB Globalcode Slide 91
  • 92. Enterprise JavaBeans (EJB) 3.1 •  Singleton EJB Globalcode Slide 92
  • 93. Enterprise JavaBeans (EJB) 3.1 •  Timer Service  Define uma estrutura para execução baseada em calendários  Semântica baseada nos processos CRON  Criação feita pelo container no deploy da aplicação  Pode ser especificado por anotação ou através do ejb-jar.xml  Relativo ao current TimeZone  Sintaxe dos atributos   minute = “30”   month = “Jan, Jul, Dec”   dayOfWeek = “Mon-Fri”   dayOfMonth = “Last Mon”   hour = “*”   minute = “*/10” Globalcode Slide 93
  • 94. Enterprise JavaBeans (EJB) 3.1 •  Timer Service  Processa na última sexta-feira de todo mês às 20:30 hrs no horário local de São Paulo Globalcode Slide 94
  • 95. Enterprise JavaBeans (EJB) 3.1 •  Métodos Assíncronos  Mecanismo simples para realizar chamadas assíncronas para uma aplicação enterprise (sem utilizar MDBs)  Disponível para utilização em Stateful, Stateless e Singleton EJBs  Definido pela anotação @Asynchronous   Pode ser utilizada pela classe ou por método  Retorna um objeto Future<T> que representa o resultado em processamento assíncrono   Future.isDone()   Future.isCancelled()   Future.get()   Future.cancel(boolean) Globalcode Slide 95
  • 96. Enterprise JavaBeans (EJB) 3.1 •  Métodos Assíncronos Globalcode Slide 96
  • 97. Enterprise JavaBeans (EJB) 3.1 •  Nomes JNDI Padronizados  Definição padronizada de nomes para “lookup” dos EJBs remotos e locais  Eleva a portabilidade de aplicações clientes  Lookup global   java : global [/<app-name>] /<module-name> /<ejb-name>  Lookup dentro da aplicação   java : app [/<module-name>] /<ejb-name>  Lookup dentro de um mesmo módulo (JAR, WAR)   java : module /<ejb-name> Globalcode Slide 97
  • 98. Enterprise JavaBeans (EJB) 3.1 •  Nomes JNDI Padronizados •  Se for realizado o deploy em “componentes.jar”  java:global/componentes/MyEJB  java:app/MyEJB  java:module/MyEJB Globalcode Slide 98
  • 99. Enterprise JavaBeans (EJB) 3.1 •  Embeddable API  Biblioteca (API) customizada para rodar componentes EJBs fora do container (servidor) Java EE  Implementa o mesmo comportamento (ciclo de vida, pooling, IoC) simulando um container Java EE  Ideal para utilização em testes unitários   Utilização de Mock components Globalcode Slide 99
  • 100. Enterprise JavaBeans (EJB) 3.1 •  Embeddable API Globalcode Slide 100
  • 101. Agenda "   Plataforma Java EE "   Principais Tecnologias (APIs) "   Profiles "   Java Servlet 3.0 "   JSF 2.0 "   CDI "   EJB 3.1 "   JPA 2.0 "   Comparativo de Versões "   Perguntas e Respostas Globalcode Slide 101
  • 102. Java Persistence API (JPA) •  Características   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 containeres EJBs (ligthweigth container)   Uso de injeção de dependência ao invés de lookups JNDI Globalcode Slide 102
  • 103. Java Persistence API (JPA) Globalcode Slide 103
  • 104. Java Persistence API (JPA) 2.0 •  Novos Recursos  Standard Properties  Melhorias no Mapeamento OR   @ElementCollection, @CollectionTable, @OrderColumn   Orphan Removal  Melhorias na JPA-QL   CASE, NULLIF, COALESCE  Criteria API  Melhorias na API  Validação (Bean Validation)  Second-level Caching  Pessimistic Locking Globalcode Slide 104
  • 105. Java Persistence API (JPA) 2.0 •  Standard Properties Globalcode Slide 105
  • 106. Java Persistence API (JPA) 2.0 •  @ElementCollection (Basic Types) Globalcode Slide 106
  • 107. Java Persistence API (JPA) 2.0 •  @ElementCollection (Embeddable Types) Globalcode Slide 107
  • 108. Java Persistence API (JPA) 2.0 •  Maps Globalcode Slide 108
  • 109. Java Persistence API (JPA) 2.0 •  Embeddables com Relacionamentos Globalcode Slide 109
  • 110. Java Persistence API (JPA) 2.0 •  @OrderColumn Globalcode Slide 110
  • 111. Java Persistence API (JPA) 2.0 •  Orphan Removal Globalcode Slide 111
  • 112. Java Persistence API (JPA) 2.0 •  Melhorias na JPA-QL  INDEX   Utilizado para listas ordenadas  KEY, VALUE, ENTRY   Utilizado para manipulação de Maps  CASE, COALESCE, NULLIF   Utilizado para CASE expressions  TYPE   Utilizado para restringir polimorfismo Globalcode Slide 112
  • 113. Java Persistence API (JPA) 2.0 •  Melhorias na JPA-QL Globalcode Slide 113
  • 114. Java Persistence API (JPA) 2.0 •  Criteria API  Biblioteca (API) para criação de queries dinâmicas via programação (métodos)  Principais Classes   CriteriaBuilder –  Criação de queries, seleções, ordenação   CriteriaQuery –  Adiciona, substitui, navega nos elementos que compões a query   Root –  Define as query roots   Join, ListJoin, MapJoin… –  Joins partindo de um root ou de joins já existentes   Path –  Navegação patindo de um root, join ou outro path   Subquery Globalcode Slide 114
  • 115. Java Persistence API (JPA) 2.0 •  Criteria API Globalcode Slide 115
  • 116. Java Persistence API (JPA) 2.0 •  Melhorias na API Globalcode Slide 116
  • 117. Java Persistence API (JPA) 2.0 •  Validação (Bean Validation)  Definição de um novo modelo de validação para as entidades utilizando um conjunto de anotações definidas pela JSR 303 (Bean Validation)  Inspirado no projeto Hibernate Validator  Validação automática durante os eventos de ciclo de vida   PrePersist   PreUpdate   PreRemove Globalcode Slide 117
  • 118. Java Persistence API (JPA) 2.0 •  Validação (Bean Validation) Globalcode Slide 118
  • 119. Java Persistence API (JPA) 2.0 •  Second-level Caching  Compartilha a instância da entidade entre vários persistence contexts (EntityManager) utilizados pela aplicação Globalcode Slide 119
  • 120. Java Persistence API (JPA) 2.0 •  Second-level Caching  JPA 1.0 não definiu nenhum suporte à second-level cache  JPA 2.0 especificou um suporte básico para as estas operações de cache, através da Cache API Globalcode Slide 120
  • 121. Java Persistence API (JPA) 2.0 •  Pessimistic Locking  JPA 1.0 somente oferece suporte à Lock Optimistic  Encapsula os locks realizados no banco de dados  Lock Modes   PESSIMISTIC_READ (lock compartilhado)   PESSIMISTIC_WRITE (lock exclusivo)   PESSIMISTIC_FORCE_INCREMENT (lock versionado) Globalcode Slide 121
  • 122. Agenda "   Plataforma Java EE "   Principais Tecnologias (APIs) "   Profiles "   Java Servlet 3.0 "   JSF 2.0 "   CDI "   EJB 3.1 "   JPA 2.0 "   Comparativo de Versões "   Perguntas e Respostas Globalcode Slide 122
  • 124. Comparativo de Versões •  Java EE 1.4   Novembro de 2003   EJB 2.1, Servlet 2.4 e JSP 2.0   Principais problemas   Deployment descriptor   Interfaces   Entity beans   Complexidade de aprendizado e desenvolvimento •  Java EE 5   Maio de 2006   Aumentar a produtividade e facilitar o desenvolvimento   Principais mudanças   Anotações   Enterprise JavaBeans 3.0   Java Persistence API (JPA)   Injeção de dependência   Inclusão de JSF 1.2   Novas versões das APIs existentes Globalcode Slide 124
  • 125. Comparativo de Versões •  Java EE 6  Dezembro 2009;  Maior flexibilidade para a plataforma;  Principais mudanças   Java Servlet 3.0;   EJB 3.1;   JPA 2.0;   JSF 2.0;   CDI;   Bean Validation 1.0;   Profiles (deployment);   Novas versões das APIs existentes. Globalcode Slide 125
  • 126. Perguntas & Respostas ? Globalcode Slide 126
  • 127. Mini-curso Gratuito Agradecemos a presença! http://open4education.googlecode.com/ Globalcode Slide 127