MC - Java Enterprise Edition 6 (Java EE)

Preview:

DESCRIPTION

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

Citation preview

Slide 1 Globalcode

Mini-curso Gratuito

Rodrigo Cândido da Silva VOffice / Globalcode

Slide 2 Globalcode

Mini-curso Gratuito

http://open4education.googlecode.com/

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

  orione@fastlane.com.br

  Telefone – (048) 3343-0087

•  MUITO OBRIGADO À TODOS !!!

Slide 4 Globalcode

Palestrante

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

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

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

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

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)

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

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

Slide 12 Globalcode

Java Enterprise Edition

Slide 13 Globalcode

Java Enterprise Edition

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

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

Slide 16 Globalcode

Containers (Java EE 5)

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

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

Slide 19 Globalcode

Profiles

Slide 20 Globalcode

Profiles

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

Slide 22 Globalcode

Java Servlet

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

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

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

Slide 25 Globalcode

Java Servlet 3.0

•  @WebServlet

Slide 26 Globalcode

Java Servlet 3.0

•  @WebFilter

Slide 27 Globalcode

Java Servlet 3.0

•  @WebListener

Slide 28 Globalcode

Java Servlet 3.0

•  @WebInitParam

Slide 29 Globalcode

Java Servlet 3.0

•  @ServletSecurity

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)

Slide 31 Globalcode

Java Servlet 3.0

•  Registro Dinâmico de Componentes

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>

Slide 33 Globalcode

Java Servlet 3.0

•  Web Fragments

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

Slide 35 Globalcode

Java Servlet 3.0

•  Servlet Container Initializer

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

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

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

Slide 39 Globalcode

Java Servlet 3.0

•  Asynchronous Support

Slide 40 Globalcode

Java Servlet 3.0

•  Asynchronous Support

Slide 41 Globalcode

Java Servlet 3.0

•  Asynchronous Support

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

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”

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)

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

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

Slide 47 Globalcode

JavaServer Faces (JSF) 2.0

•  @ManagedBean

Slide 48 Globalcode

JavaServer Faces (JSF) 2.0

•  @FacesConverter

Slide 49 Globalcode

JavaServer Faces (JSF) 2.0

•  @FacesValidator

Slide 50 Globalcode

JavaServer Faces (JSF) 2.0

•  @FacesBehavior

•  @FacesRenderer

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>

Slide 52 Globalcode

JavaServer Faces (JSF) 2.0

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

Slide 54 Globalcode

JavaServer Faces (JSF) 2.0

•  AJAX Support  Javascript API

Slide 55 Globalcode

JavaServer Faces (JSF) 2.0

•  AJAX Support  <f:ajax> Tag

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>

Slide 57 Globalcode

JavaServer Faces (JSF) 2.0

•  Composite Components

Slide 58 Globalcode

JavaServer Faces (JSF) 2.0

•  Composite Components

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

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

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>

Slide 62 Globalcode

JavaServer Faces (JSF) 2.0

•  View Parameters

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

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

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

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

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:

Slide 67 Globalcode

Injeção de Dependência (IoC)

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

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)

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

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

Slide 71 Globalcode

Context Dependency Injection (CDI)

•  Injection Points - @Inject

Slide 72 Globalcode

Context Dependency Injection (CDI)

•  Producer Methods and Fields - @Produces

Slide 73 Globalcode

Context Dependency Injection (CDI)

•  Qualifiers - @Qualifier

Slide 74 Globalcode

Context Dependency Injection (CDI)

•  Alternatives - @Alternative

Slide 75 Globalcode

Context Dependency Injection (CDI)

•  Expression Language Names - @Named

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

Slide 77 Globalcode

Context Dependency Injection (CDI)

•  Scopes and Contexts

Slide 78 Globalcode

Context Dependency Injection (CDI)

•  Scopes and Contexts - @ConversationScoped

Slide 79 Globalcode

Context Dependency Injection (CDI)

•  Interceptors

Slide 80 Globalcode

Context Dependency Injection (CDI)

•  Stereotypes - @Stereotype

Slide 81 Globalcode

Context Dependency Injection (CDI)

•  Events

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

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

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

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)

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

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

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

Slide 89 Globalcode

Enterprise JavaBeans (EJB) 3.1

•  Interface Opcional  No-interface = Local View

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

Slide 91 Globalcode

Enterprise JavaBeans (EJB) 3.1

•  Singleton EJB

Slide 92 Globalcode

Enterprise JavaBeans (EJB) 3.1

•  Singleton EJB

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”

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

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)

Slide 96 Globalcode

Enterprise JavaBeans (EJB) 3.1

•  Métodos Assíncronos

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>

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

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

Slide 100 Globalcode

Enterprise JavaBeans (EJB) 3.1

•  Embeddable API

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

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

Slide 103 Globalcode

Java Persistence API (JPA)

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

Slide 105 Globalcode

Java Persistence API (JPA) 2.0

•  Standard Properties

Slide 106 Globalcode

Java Persistence API (JPA) 2.0

•  @ElementCollection (Basic Types)

Slide 107 Globalcode

Java Persistence API (JPA) 2.0

•  @ElementCollection (Embeddable Types)

Slide 108 Globalcode

Java Persistence API (JPA) 2.0

•  Maps

Slide 109 Globalcode

Java Persistence API (JPA) 2.0

•  Embeddables com Relacionamentos

Slide 110 Globalcode

Java Persistence API (JPA) 2.0

•  @OrderColumn

Slide 111 Globalcode

Java Persistence API (JPA) 2.0

•  Orphan Removal

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

Slide 113 Globalcode

Java Persistence API (JPA) 2.0

•  Melhorias na JPA-QL

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

Slide 115 Globalcode

Java Persistence API (JPA) 2.0

•  Criteria API

Slide 116 Globalcode

Java Persistence API (JPA) 2.0

•  Melhorias na API

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

Slide 118 Globalcode

Java Persistence API (JPA) 2.0

•  Validação (Bean Validation)

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

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

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)

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

Slide 123 Globalcode

Comparativo de Versões

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

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.

Slide 126 Globalcode

? Perguntas & Respostas

Slide 127 Globalcode

Mini-curso Gratuito

Agradecemos a presença!

http://open4education.googlecode.com/

Recommended