127
Slide 1 Globalcode Mini-curso Gratuito Rodrigo Cândido da Silva VOffice / Globalcode

MC - Java Enterprise Edition 6 (Java EE)

Embed Size (px)

DESCRIPTION

Mini-curso sobre Java Enterprise Edition 6 (Java EE).

Citation preview

Page 1: MC - Java Enterprise Edition 6 (Java EE)

Slide 1 Globalcode

Mini-curso Gratuito

Rodrigo Cândido da Silva VOffice / Globalcode

Page 2: MC - Java Enterprise Edition 6 (Java EE)

Slide 2 Globalcode

Mini-curso Gratuito

http://open4education.googlecode.com/

Page 3: MC - Java Enterprise Edition 6 (Java EE)

Slide 3 Globalcode

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

[email protected]

  Telefone – (048) 3343-0087

•  MUITO OBRIGADO À TODOS !!!

Page 4: MC - Java Enterprise Edition 6 (Java EE)

Slide 4 Globalcode

Palestrante

Page 5: MC - Java Enterprise Edition 6 (Java EE)

Slide 5 Globalcode

Objetivo

Conhecer a plataforma Java Enterprise Edition 6 e entender as principais diferenças desta versão

em relação as versões anteriores

Page 6: MC - Java Enterprise Edition 6 (Java EE)

Slide 6 Globalcode

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

Page 7: MC - Java Enterprise Edition 6 (Java EE)

Slide 7 Globalcode

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? :/

Page 8: MC - Java Enterprise Edition 6 (Java EE)

Slide 8 Globalcode

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

Page 9: MC - Java Enterprise Edition 6 (Java EE)

Slide 9 Globalcode

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)

Page 10: MC - Java Enterprise Edition 6 (Java EE)

Slide 10 Globalcode

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

Page 11: MC - Java Enterprise Edition 6 (Java EE)

Slide 11 Globalcode

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

Page 12: MC - Java Enterprise Edition 6 (Java EE)

Slide 12 Globalcode

Java Enterprise Edition

Page 13: MC - Java Enterprise Edition 6 (Java EE)

Slide 13 Globalcode

Java Enterprise Edition

•  Containers Java EE

Page 14: MC - Java Enterprise Edition 6 (Java EE)

Slide 14 Globalcode

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

Page 15: MC - Java Enterprise Edition 6 (Java EE)

Slide 15 Globalcode

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

Page 16: MC - Java Enterprise Edition 6 (Java EE)

Slide 16 Globalcode

Containers (Java EE 5)

Page 17: MC - Java Enterprise Edition 6 (Java EE)

Slide 17 Globalcode

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

Page 18: MC - Java Enterprise Edition 6 (Java EE)

Slide 18 Globalcode

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

Page 19: MC - Java Enterprise Edition 6 (Java EE)

Slide 19 Globalcode

Profiles

Page 20: MC - Java Enterprise Edition 6 (Java EE)

Slide 20 Globalcode

Profiles

Page 21: MC - Java Enterprise Edition 6 (Java EE)

Slide 21 Globalcode

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

Page 22: MC - Java Enterprise Edition 6 (Java EE)

Slide 22 Globalcode

Java Servlet

•  Aplicações que rodam no servidor e respondem requisições de clientes Web

Page 23: MC - Java Enterprise Edition 6 (Java EE)

Slide 23 Globalcode

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

Page 24: MC - Java Enterprise Edition 6 (Java EE)

Slide 24 Globalcode

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

Page 25: MC - Java Enterprise Edition 6 (Java EE)

Slide 25 Globalcode

Java Servlet 3.0

•  @WebServlet

Page 26: MC - Java Enterprise Edition 6 (Java EE)

Slide 26 Globalcode

Java Servlet 3.0

•  @WebFilter

Page 27: MC - Java Enterprise Edition 6 (Java EE)

Slide 27 Globalcode

Java Servlet 3.0

•  @WebListener

Page 28: MC - Java Enterprise Edition 6 (Java EE)

Slide 28 Globalcode

Java Servlet 3.0

•  @WebInitParam

Page 29: MC - Java Enterprise Edition 6 (Java EE)

Slide 29 Globalcode

Java Servlet 3.0

•  @ServletSecurity

Page 30: MC - Java Enterprise Edition 6 (Java EE)

Slide 30 Globalcode

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)

Page 31: MC - Java Enterprise Edition 6 (Java EE)

Slide 31 Globalcode

Java Servlet 3.0

•  Registro Dinâmico de Componentes

Page 32: MC - Java Enterprise Edition 6 (Java EE)

Slide 32 Globalcode

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>

Page 33: MC - Java Enterprise Edition 6 (Java EE)

Slide 33 Globalcode

Java Servlet 3.0

•  Web Fragments

Page 34: MC - Java Enterprise Edition 6 (Java EE)

Slide 34 Globalcode

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(…)

Page 35: MC - Java Enterprise Edition 6 (Java EE)

Slide 35 Globalcode

Java Servlet 3.0

•  Servlet Container Initializer

Page 36: MC - Java Enterprise Edition 6 (Java EE)

Slide 36 Globalcode

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

Page 37: MC - Java Enterprise Edition 6 (Java EE)

Slide 37 Globalcode

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

Page 38: MC - Java Enterprise Edition 6 (Java EE)

Slide 38 Globalcode

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

Page 39: MC - Java Enterprise Edition 6 (Java EE)

Slide 39 Globalcode

Java Servlet 3.0

•  Asynchronous Support

Page 40: MC - Java Enterprise Edition 6 (Java EE)

Slide 40 Globalcode

Java Servlet 3.0

•  Asynchronous Support

Page 41: MC - Java Enterprise Edition 6 (Java EE)

Slide 41 Globalcode

Java Servlet 3.0

•  Asynchronous Support

Page 42: MC - Java Enterprise Edition 6 (Java EE)

Slide 42 Globalcode

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

Page 43: MC - Java Enterprise Edition 6 (Java EE)

Slide 43 Globalcode

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”

Page 44: MC - Java Enterprise Edition 6 (Java EE)

Slide 44 Globalcode

J2EE Web Container J2EE EJB Container

Controller Model View

Servlet JavaBeans Java Server Pages

Custom Tag

EJB

JavaServer Faces

JavaServer Faces (JSF)

Page 45: MC - Java Enterprise Edition 6 (Java EE)

Slide 45 Globalcode

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

Page 46: MC - Java Enterprise Edition 6 (Java EE)

Slide 46 Globalcode

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

Page 47: MC - Java Enterprise Edition 6 (Java EE)

Slide 47 Globalcode

JavaServer Faces (JSF) 2.0

•  @ManagedBean

Page 48: MC - Java Enterprise Edition 6 (Java EE)

Slide 48 Globalcode

JavaServer Faces (JSF) 2.0

•  @FacesConverter

Page 49: MC - Java Enterprise Edition 6 (Java EE)

Slide 49 Globalcode

JavaServer Faces (JSF) 2.0

•  @FacesValidator

Page 50: MC - Java Enterprise Edition 6 (Java EE)

Slide 50 Globalcode

JavaServer Faces (JSF) 2.0

•  @FacesBehavior

•  @FacesRenderer

Page 51: MC - Java Enterprise Edition 6 (Java EE)

Slide 51 Globalcode

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>

Page 52: MC - Java Enterprise Edition 6 (Java EE)

Slide 52 Globalcode

JavaServer Faces (JSF) 2.0

Page 53: MC - Java Enterprise Edition 6 (Java EE)

Slide 53 Globalcode

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

Page 54: MC - Java Enterprise Edition 6 (Java EE)

Slide 54 Globalcode

JavaServer Faces (JSF) 2.0

•  AJAX Support  Javascript API

Page 55: MC - Java Enterprise Edition 6 (Java EE)

Slide 55 Globalcode

JavaServer Faces (JSF) 2.0

•  AJAX Support  <f:ajax> Tag

Page 56: MC - Java Enterprise Edition 6 (Java EE)

Slide 56 Globalcode

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>

Page 57: MC - Java Enterprise Edition 6 (Java EE)

Slide 57 Globalcode

JavaServer Faces (JSF) 2.0

•  Composite Components

Page 58: MC - Java Enterprise Edition 6 (Java EE)

Slide 58 Globalcode

JavaServer Faces (JSF) 2.0

•  Composite Components

Page 59: MC - Java Enterprise Edition 6 (Java EE)

Slide 59 Globalcode

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

Page 60: MC - Java Enterprise Edition 6 (Java EE)

Slide 60 Globalcode

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

Page 61: MC - Java Enterprise Edition 6 (Java EE)

Slide 61 Globalcode

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>

Page 62: MC - Java Enterprise Edition 6 (Java EE)

Slide 62 Globalcode

JavaServer Faces (JSF) 2.0

•  View Parameters

  http://server/view.xhtml?dept=mens&category=sport&sort=2

Page 63: MC - Java Enterprise Edition 6 (Java EE)

Slide 63 Globalcode

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

Page 64: MC - Java Enterprise Edition 6 (Java EE)

Slide 64 Globalcode

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.

A B

C

Page 65: MC - Java Enterprise Edition 6 (Java EE)

Slide 65 Globalcode

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

A

B C

Serviço de Nomes

“ejb/componenteB”

“jdbc/dataSourceC”

lookups

Page 66: MC - Java Enterprise Edition 6 (Java EE)

Slide 66 Globalcode

Injeção de Dependência (IoC)

A

B C

Serviço de Nomes

“ejb/componenteB”

“jdbc/dataSourceC”

injeção

class ComponenteA {

@EJB(name=“ejb/componenteB”) InterfaceB b;

@Resource(name=“jdbc/dataSourceC”) DataSource c;

}

•  Com injeção de dependência:

Page 67: MC - Java Enterprise Edition 6 (Java EE)

Slide 67 Globalcode

Injeção de Dependência (IoC)

•  Exemplo de Utilização (Java EE 5)

Page 68: MC - Java Enterprise Edition 6 (Java EE)

Slide 68 Globalcode

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)

Page 69: MC - Java Enterprise Edition 6 (Java EE)

Slide 69 Globalcode

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

Page 70: MC - Java Enterprise Edition 6 (Java EE)

Slide 70 Globalcode

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

Page 71: MC - Java Enterprise Edition 6 (Java EE)

Slide 71 Globalcode

Context Dependency Injection (CDI)

•  Injection Points - @Inject

Page 72: MC - Java Enterprise Edition 6 (Java EE)

Slide 72 Globalcode

Context Dependency Injection (CDI)

•  Producer Methods and Fields - @Produces

Page 73: MC - Java Enterprise Edition 6 (Java EE)

Slide 73 Globalcode

Context Dependency Injection (CDI)

•  Qualifiers - @Qualifier

Page 74: MC - Java Enterprise Edition 6 (Java EE)

Slide 74 Globalcode

Context Dependency Injection (CDI)

•  Alternatives - @Alternative

Page 75: MC - Java Enterprise Edition 6 (Java EE)

Slide 75 Globalcode

Context Dependency Injection (CDI)

•  Expression Language Names - @Named

Page 76: MC - Java Enterprise Edition 6 (Java EE)

Slide 76 Globalcode

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

Page 77: MC - Java Enterprise Edition 6 (Java EE)

Slide 77 Globalcode

Context Dependency Injection (CDI)

•  Scopes and Contexts

Page 78: MC - Java Enterprise Edition 6 (Java EE)

Slide 78 Globalcode

Context Dependency Injection (CDI)

•  Scopes and Contexts - @ConversationScoped

Page 79: MC - Java Enterprise Edition 6 (Java EE)

Slide 79 Globalcode

Context Dependency Injection (CDI)

•  Interceptors

Page 80: MC - Java Enterprise Edition 6 (Java EE)

Slide 80 Globalcode

Context Dependency Injection (CDI)

•  Stereotypes - @Stereotype

Page 81: MC - Java Enterprise Edition 6 (Java EE)

Slide 81 Globalcode

Context Dependency Injection (CDI)

•  Events

Page 82: MC - Java Enterprise Edition 6 (Java EE)

Slide 82 Globalcode

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

Page 83: MC - Java Enterprise Edition 6 (Java EE)

Slide 83 Globalcode

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

Page 84: MC - Java Enterprise Edition 6 (Java EE)

Slide 84 Globalcode

Enterprise JavaBeans (EJB)

EJB Session Bean

Segu

ranç

a

Con

trol

e Tr

ansa

cion

al

Esca

labi

lidad

e

Queues Topics

Data Sources

Environment Entries

EJB

Infra Estrutura do Container

Page 85: MC - Java Enterprise Edition 6 (Java EE)

Slide 85 Globalcode

•  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

Enterprise JavaBeans (EJB)

Page 86: MC - Java Enterprise Edition 6 (Java EE)

Slide 86 Globalcode

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

Page 87: MC - Java Enterprise Edition 6 (Java EE)

Slide 87 Globalcode

•  EJB Lite  Sub-conjunto de funcionalidades direcionadas para deploy dos

EJBs no container Java EE Web Profile (.war)

Enterprise JavaBeans (EJB) 3.1

EJB Lite EJB Full

•  Local Session Beans •  CMT / BMT •  Segurança Declarativa •  Interceptors

•  Message-Driven Beans (MDB) •  Web Service Endpoints •  2.x / 3.x Remove View •  Inter-operabilidade com RMI-IIOP •  Timer service •  Chamada assíncrona à metodos •  2.x Local View •  CMP / BMP Entity Beans

Page 88: MC - Java Enterprise Edition 6 (Java EE)

Slide 88 Globalcode

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 5

Java EE 6

Page 89: MC - Java Enterprise Edition 6 (Java EE)

Slide 89 Globalcode

Enterprise JavaBeans (EJB) 3.1

•  Interface Opcional  No-interface = Local View

Page 90: MC - Java Enterprise Edition 6 (Java EE)

Slide 90 Globalcode

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

Page 91: MC - Java Enterprise Edition 6 (Java EE)

Slide 91 Globalcode

Enterprise JavaBeans (EJB) 3.1

•  Singleton EJB

Page 92: MC - Java Enterprise Edition 6 (Java EE)

Slide 92 Globalcode

Enterprise JavaBeans (EJB) 3.1

•  Singleton EJB

Page 93: MC - Java Enterprise Edition 6 (Java EE)

Slide 93 Globalcode

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”

Page 94: MC - Java Enterprise Edition 6 (Java EE)

Slide 94 Globalcode

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

Page 95: MC - Java Enterprise Edition 6 (Java EE)

Slide 95 Globalcode

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)

Page 96: MC - Java Enterprise Edition 6 (Java EE)

Slide 96 Globalcode

Enterprise JavaBeans (EJB) 3.1

•  Métodos Assíncronos

Page 97: MC - Java Enterprise Edition 6 (Java EE)

Slide 97 Globalcode

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>

Page 98: MC - Java Enterprise Edition 6 (Java EE)

Slide 98 Globalcode

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

Page 99: MC - Java Enterprise Edition 6 (Java EE)

Slide 99 Globalcode

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

Page 100: MC - Java Enterprise Edition 6 (Java EE)

Slide 100 Globalcode

Enterprise JavaBeans (EJB) 3.1

•  Embeddable API

Page 101: MC - Java Enterprise Edition 6 (Java EE)

Slide 101 Globalcode

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

Page 102: MC - Java Enterprise Edition 6 (Java EE)

Slide 102 Globalcode

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

Page 103: MC - Java Enterprise Edition 6 (Java EE)

Slide 103 Globalcode

Java Persistence API (JPA)

Page 104: MC - Java Enterprise Edition 6 (Java EE)

Slide 104 Globalcode

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

Page 105: MC - Java Enterprise Edition 6 (Java EE)

Slide 105 Globalcode

Java Persistence API (JPA) 2.0

•  Standard Properties

Page 106: MC - Java Enterprise Edition 6 (Java EE)

Slide 106 Globalcode

Java Persistence API (JPA) 2.0

•  @ElementCollection (Basic Types)

Page 107: MC - Java Enterprise Edition 6 (Java EE)

Slide 107 Globalcode

Java Persistence API (JPA) 2.0

•  @ElementCollection (Embeddable Types)

Page 108: MC - Java Enterprise Edition 6 (Java EE)

Slide 108 Globalcode

Java Persistence API (JPA) 2.0

•  Maps

Page 109: MC - Java Enterprise Edition 6 (Java EE)

Slide 109 Globalcode

Java Persistence API (JPA) 2.0

•  Embeddables com Relacionamentos

Page 110: MC - Java Enterprise Edition 6 (Java EE)

Slide 110 Globalcode

Java Persistence API (JPA) 2.0

•  @OrderColumn

Page 111: MC - Java Enterprise Edition 6 (Java EE)

Slide 111 Globalcode

Java Persistence API (JPA) 2.0

•  Orphan Removal

Page 112: MC - Java Enterprise Edition 6 (Java EE)

Slide 112 Globalcode

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

Page 113: MC - Java Enterprise Edition 6 (Java EE)

Slide 113 Globalcode

Java Persistence API (JPA) 2.0

•  Melhorias na JPA-QL

Page 114: MC - Java Enterprise Edition 6 (Java EE)

Slide 114 Globalcode

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

Page 115: MC - Java Enterprise Edition 6 (Java EE)

Slide 115 Globalcode

Java Persistence API (JPA) 2.0

•  Criteria API

Page 116: MC - Java Enterprise Edition 6 (Java EE)

Slide 116 Globalcode

Java Persistence API (JPA) 2.0

•  Melhorias na API

Page 117: MC - Java Enterprise Edition 6 (Java EE)

Slide 117 Globalcode

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

Page 118: MC - Java Enterprise Edition 6 (Java EE)

Slide 118 Globalcode

Java Persistence API (JPA) 2.0

•  Validação (Bean Validation)

Page 119: MC - Java Enterprise Edition 6 (Java EE)

Slide 119 Globalcode

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

Page 120: MC - Java Enterprise Edition 6 (Java EE)

Slide 120 Globalcode

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

Page 121: MC - Java Enterprise Edition 6 (Java EE)

Slide 121 Globalcode

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)

Page 122: MC - Java Enterprise Edition 6 (Java EE)

Slide 122 Globalcode

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

Page 123: MC - Java Enterprise Edition 6 (Java EE)

Slide 123 Globalcode

Comparativo de Versões

Page 124: MC - Java Enterprise Edition 6 (Java EE)

Slide 124 Globalcode

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

Page 125: MC - Java Enterprise Edition 6 (Java EE)

Slide 125 Globalcode

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.

Page 126: MC - Java Enterprise Edition 6 (Java EE)

Slide 126 Globalcode

? Perguntas & Respostas

Page 127: MC - Java Enterprise Edition 6 (Java EE)

Slide 127 Globalcode

Mini-curso Gratuito

Agradecemos a presença!

http://open4education.googlecode.com/