Você está na página 1de 21

Agenda

Objetivo / Motivao Domnio, Ferramentas e Opes de Arquitetura OA1


Java Persistence API (JPA) JavaServer Faces (JSF)

OA2
Enterprise Java Beans (EJB)

OA3

Desenvolvimento um aplicativo completo usando JSF, EJB e padres


Rodrigo Cndido e Vinny Nunes
Instrutores Globalcode / VOffice

Injeo de Dependncia (DI)

Perguntas e Respostas

Globalcode Open4education

Globalcode Open4education

Objetivo
Apresentar 3 opes modernas de arquitetura para aplicaes JEE

Palestrantes
Rodrigo Cndido
Entusiasta de tecnologias EE SCJP, SCEA, SCWCD AJ, AW, CJ, CW

Vinny Nunes
Ps OO, Cincias da Computao e Tcnico em Processamento Java para web desde 1999 Entusiasta de tecnologias de apresentao SCJP, SCJA, SCWCD AJ, AW, CJ, CW

Globalcode Open4education

Globalcode Open4education

Motivao
Simplificar o desenvolvimento:
Usando menos padres de projetos Usando os recursos do Java 5, em especial anotaes e genricos Usando as especificaes JCP nas suas verses mais recentes Usando novos padres como IoC e DI

Enquete: tecnologias usadas em produo?


Apresentao
Quem utiliza JSF em produo? Quem pretende usar? Quem utiliza Facelets em produo? Richfaces? IceFaces? Outro? Qual? Struts? Flex? JavaFX? SilverLight? Outro? Qual?

Encorajar o uso das tecnologias EE


JSF EJB

Negcio e Integrao
EJB 2 ? EJB 3 ? Spring ? JPA? Com Hibernate? Com TopLink? Outro? Qual? JBoss? Glassfish? Tomcat? Jetty? WebSphere? Outros?

Globalcode Open4education

Globalcode Open4education

Domnio: Quick Post


Artigo (id, ttulo, autor, contedo, publicao, criao) Categoria (id, nome) Rtulo (id, nome)

Ferramentas utilizadas
eclipse 3.x CPL, EPL (http://www.eclipse.org/)
+ jboss tools 3.x (http://www.jboss.org/tools)

netbeans 6.x CDDL, GPL (http://www.netbeans.org/)


+ Facelets support (https://nbfaceletssupport.dev.java.net/)

mysql 5.x - GPL (http://www.mysql.com)


+ mysql connector/j (http://dev.mysql.com/downloads/#connector-j) + mysql tools (http://dev.mysql.com/downloads/gui-tools/5.0.html)
Globalcode Open4education Globalcode Open4education

Opes de Arquitetura JEE


# OA1 JSF++ . 1.2 . Facelets . Richfaces JPA . 1.0 . Hibernate Padres EJB DI/IoC Containers Tomcat Jetty ... . DAO No No . Factory . Service Locator . Business Object . Service Locator 3.0 No

Agenda
Objetivo / Motivao Estudo de Caso Java Persistence API (JPA) JavaServer Faces (JSF) Enterprise Java Beans (EJB) Injeo de Dependncia (DI) Perguntas e Respostas

OA2

. 1.2 . Facelets . Richfaces . 1.2 . Facelets . Richfaces

. 1.0 . Hibernate

JBoss Glassfish WebSphere ... JBoss Glassfish WebSphere ...

OA3

. 1.0 . Hibernate

3.0

Sim

Globalcode Open4education

Globalcode Open4education

Java Persistence API


Primeira especificao (padro) de mapeamento de objetos Java para base de dados relacional
Integrao com outros frameworks
Hibernate uma implementao de JPA TopLink Essencials uma implementao de JPA (RI)

Java Persistence API

POJO (Plain Old Java Objects)

Entidades

Mapeamento via metadados (annotation Java 5)

Pode ser utilizado fora de containeres EJBs (ligthweigth container) Uso de injeo de dependncia ao invs de lookups JNDI
Globalcode Open4education Globalcode Open4education

Java Persistence API


Entidades JPA

Java Persistence API


EntityManager
(javax.persistence)

Gerencia o ciclo de vida das entidades


(B) find / query (C) persist (D) clear / serializao (E) merge (F) remove

Globalcode Open4education

Globalcode Open4education

Java Persistence API


PersistenceContext
Conjunto de objetos managed associados a um EntityManager

Java Persistence API


Persistence Unit
Uma unidade de persistncia define um contexto de funcionamento para os EntityManagers

EntityManager

PersistenceContext

obj5
NEW / DETACHED

obj1
MANAGED

obj2
MANAGED

obj3
MANAGED

obj4
MANAGED

Globalcode Open4education

Globalcode Open4education

Java Persistence API


Exemplo de utilizao de JPA

JPA: instalao e configurao


bibliotecas
persistence-api-xx.jar Bibliotecas do provider Hibernate TopLink OpenJPA

Globalcode Open4education

Globalcode Open4education

Java Persistence API: demonstrao


eclipse 3.x

Agenda
Objetivo / Motivao Estudo de Caso Java Persistence API (JPA) JavaServer Faces (JSF) Enterprise Java Beans (EJB) Injeo de Dependncia (DI) Perguntas e Respostas

netbeans 6.x

opcional

Globalcode Open4education

Globalcode Open4education

JSF: o que ?
Java Server Faces Framework MVC proposto em 2001 JSR 127 (1.0 e 1.1, 2001), JSR 252 (1.2, 2004), JSR 314 (2.0,2007) Padronizou o desenvolvimento de interface de usurio web Definido por grupo de especialistas composto de empresas e pessoas fsicas Suportado pelos containers homologados para JEE 5 ou superior Baseado na tecnologia Servlets Ed Burns, Roger Kitain - Sun

JSF: por que usar?


Componentes ao invs de aes Renderizaes alm do HTML Conversores, validadores, eventos Ciclo de vida e rvore de componentes Binding e Expression Language Implementa os padres pra voc: Wrapper, Front Controller, MVC, DI, Resources, Ajax, MegaListeners, Anotaes, Composite components, Bean validation, Bookmarking, new scopes, new tags, (2.x)

http://java.sun.com/javaee/javaserverfaces/

Globalcode Open4education

Globalcode Open4education

JSF: por que usar?


Maduro: desde 2001! J tem a 2.0 desde julho! Incorpora boas idias de outros frameworks e de extenses JSF: Tapestry, Struts, WebWork, Richfaces, IceFaces Preparado para ser entendido e estendido Preparado para ferramentas de desenvolvimento

JSF: principais componentes


J2EE Web Container J2EE EJB Container

JSF e J2EE
javax.faces

Controller Servlet

View Java Server Pages Custom Tag

Model JavaBeans EJB

Globalcode Open4education

Globalcode Open4education

JSF: principais componentes


Pgina JSF

JSF: instalao e configurao


bibliotecas JARs necessrios:

Globalcode Open4education

Managed Bean

jsf-api.jar jsf-ri.jar jstl.jar standard.jar commons-beanutils.jar commons-digester.jar commons-collections.jar commons-logging.jar


Globalcode Open4education

JSF: instalao e configurao


arquivos de configurao pom.xml:
<dependency> <groupId>javax.faces</groupId> <artifactId>jsf-api</artifactId> <version>${jsf.version}</version> </dependency> <dependency> <groupId>javax.faces</groupId> <artifactId>jsf-impl</artifactId> <version>${jsf.version}</version> </dependency>

faces-config.xml

JSF: instalao e configurao


arquivos de configurao web.xml:
<servlet> <servlet-name>Faces Servlet</servlet-name> <servletclass>javax.faces.webapp.FacesServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>*.jsf</url-pattern> </servlet-mapping>

Globalcode Open4education Globalcode Open4education

JSF: instalao e configurao


arquivos de configurao faces-config.xml:
<?xml version="1.0"?> <faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javae e http://java.sun.com/xml/ns/javaee/webfacesconfig_1_2.xsd"> </faces-config>

JSF: instalao e configurao


eclipse 3.x

netbeans 6.x

Globalcode Open4education

Globalcode Open4education

JSF: exemplos
Lista de artigos publicados
eclipse 3.x

Facelets: o que ?
JSF View Definition Framework Proposto em 2005 Tecnologia focada na criao de rvores de componente JSF VDL alternativa Subprojeto do JSF Jacob Hookom - Sun

https://facelets.dev.java.net/

Globalcode Open4education

Globalcode Open4education

Facelets: por que usar?


Templates XHTML ao invs de JSP Atributo jsfc Rpido para renderizar Melhor para identificar expresses EL erradas Tambm padro (JSR 314, 2.x) Turbinado pela biblioteca composite (2.x)

Facelets: principais componentes


J2EE Web Container javax.faces com.sun.facelets - Composite tags: Composition and Component, Fragment and Decorate - Development tags: Debug - Iteration tags: Repeat - Template tags: Define, Insert, Param, Remove View Model Controller Servlet Java Server Pages Custom Tag JavaBeans EJB J2EE EJB Container

Globalcode Open4education

Globalcode Open4education

Facelets: principais componentes

Facelets: principais componentes

Globalcode Open4education

template

cliente

Globalcode Open4education

Facelets: instalao e configurao


jsf-api.jar jsf-ri.jar jstl.jar standard.jar commons-beansutils.jar commons-digester.jar commons-collections.jar commons-logging.jar

Facelets: instalao e configurao


arquivos de configurao

jsf-facelets.jar (1.x)

pom.xml:
<dependency> <groupId>com.sun.facelets</groupId> <artifactId>jsf-facelets</artifactId> <version>${facelets.version}</version> </dependency> ...

Globalcode Open4education

Globalcode Open4education

Facelets: instalao e configurao


arquivos de configurao web.xml:
<context-param> <param-name>javax.faces.DEFAULT_SUFFIX</param-name> <param-value>.xhtml</param-value> </context-param> <context-param> <param-name>facelets.REFRESH_PERIOD</param-name> <param-value>2</param-value> </context-param> ...

Facelets: instalao e configurao


arquivos de configurao faces-config.xml:
<?xml version="1.0"?> <faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"> <application> <view-handler>com.sun.facelets.FaceletViewHandler</viewhandler> </application> </faces-config>

Globalcode Open4education

Globalcode Open4education

10

Facelets: instalao e configurao


eclipse 3.x

Facelets: exemplos
eclipse 3.x

Lista de artigos publicados com html reaproveitado e template netbeans 6.x

Globalcode Open4education

Globalcode Open4education

Richfaces: o que ?
Biblioteca de componentes Criada pela Exadel em 2006 Mantida pela Jboss desde 2007 ltima verso estvel: 3.3.1 em 18/04/2009 Alexander Smirnov Exadel Max Katz Exadel http://www.jboss.org/richfaces

Richfaces: por que usar?


Suporte a Ajax Aproximadamente 100 componentes prontos Component Development Kit Skins prontos e possibilidade de customizao Resources Facilidades para testes Cross browser Comunidade ativa Integrao com jQuery, Prototype e Scriptaculous
Globalcode Open4education

Globalcode Open4education

11

Richfaces: principais componentes


J2EE Web Container org.richfaces rich - Calendar - Suggestion Box - Enhanced Data table - Combo Box - Menu - Tree view - Panel - Layout - Modal Panel - Validators - Drag and Drop - Progress Bar - Tabs -
Globalcode Open4education

Richfaces: principais componentes


J2EE EJB Container <xmlns:a4j="http://richfaces.org/a4j"> <xmlns:rich="http://richfaces.org/rich"> <%@ taglib uri="http://richfaces.org/a4j" prefix="a4j"%> <%@ taglib uri="http://richfaces.org/rich" prefix="rich"%>

Cliente

a4j - Status - Support - CommandButton - CommandLink - Poll - Push - Output Panel

Globalcode Open4education

Richfaces: instalao e configurao


bibliotecas
richfaces-api-xx.GA.jar richfaces-impl-xx.GA.jar richfaces-ui-xx.GAjar jsf-api.jar jsf-ri.jar jstl.jar standard.jar commons-beansutils.jar commons-digester.jar commons-collections.jar commons-logging.jar

Richfaces: instalao e configurao


arquivos de configurao pom.xml
... <dependency> <groupId>org.richfaces.framework</groupId> <artifactId>richfaces-api</artifactId> <version>${richfaces.version}</version> </dependency> <dependency> <groupId>org.richfaces.framework</groupId> <artifactId>richfaces-impl</artifactId> <version>${richfaces.version}</version> </dependency> <dependency> <groupId>org.richfaces.ui</groupId> <artifactId>richfaces-ui</artifactId> <version>${richfaces.version}</version> </dependency>
Globalcode Open4education

Globalcode Open4education

12

Richfaces: instalao e configurao


arquivos de configurao web.xml
... <filter> <display-name>Ajax4jsf Filter</display-name> <filter-name>ajax4jsf</filter-name> <filter-class>org.ajax4jsf.Filter</filter-class> </filter> <filter-mapping> <filter-name>ajax4jsf</filter-name> <servlet-name>Faces Servlet</servlet-name> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> <dispatcher>INCLUDE</dispatcher> </filter-mapping> ...
Globalcode Open4education

Richfaces: instalao e configurao


arquivos de configurao faces-config.xml
<?xml version="1.0"?> <faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/webfacesconfig_1_2.xsd"> </faces-config>

Globalcode Open4education

Richfaces: exemplos
eclipse 3.x

Richfaces: instalao e configurao


eclipse 3.x

Lista de artigos publicados com data e categoria. Filtro, ordenao, panel. netbeans 6.x

Globalcode Open4education

Globalcode Open4education

13

OA1
Demonstrao
# OA1 JSF++ . 1.2 . Facelets . Richfaces . 1.2 . Facelets . Richfaces . 1.2 . Facelets . Richfaces JPA . 1.0 . Hibernate Padres eclipse 3.x EJB DI/IoC Containers Tomcat Jetty ... JBoss Glassfish WebSphere ... JBoss Glassfish WebSphere ...

OA1
Vantagens
Basta um servidor EE com suporte a servlets Mais rpido para codificar e para testar Mais fcil para aprender

. DAO No No . Factory . Service Locator . Business Object . Service Locator 3.0 No

OA2

. 1.0 . Hibernate

Desvantagens
Acesso de clientes desktop no to prtico Arquivo de expedio monoltico (.war) Poucas facilidades de integrao com outras tecnologias EE

OA3

. 1.0 . Hibernate

3.0

Sim

Globalcode Open4education

Globalcode Open4education

Agenda
Objetivo / Motivao Estudo de Caso Java Persistence API (JPA) JavaServer Faces (JSF) Enterprise Java Beans (EJB) Injeo de Dependncia (DI) Perguntas e Respostas

Enterprise Java Beans (EJB)


Plataforma para criao de aplicaes de negcio portveis, robustas e reutilizveis usando a linguagem de programao Java; Componente para construir aplicaes sem precisar reinventar uma srie de recursos e servios (transaes, segurana, persistncia); Modelo de alto nvel para objetos distribudos (computao distribuda); Pode ser utilizado em solues Web e no Web;

Globalcode Open4education

Globalcode Open4education

14

Enterprise Java Beans (EJB)


Componentes Negcio Compartilhados
Cliente WS

Enterprise Java Beans (EJB)


Infra Estrutura do Container
EJB Escalabilidade

Segurana

EJB Session Bean

Controle Transacional

EJB Session Bean

Swing Web Browser Rede Local Java Web JVM + Container EE

Queues Topics Environment Entries

Data Sources

Globalcode Open4education

Globalcode Open4education

Enterprise Java Beans (EJB)


Tipos de EJB:
Session Bean
Representa um processo de negcio

Session Bean
Representa um processo de negcio (regra de negcio); Pode ser do tipo Stateless ou Stateful; Stateless
No mantm estado de converso com o cliente; No tem compromisso de manter uma sesso; No devemos utilizar atributos de negcio, somente atributos tcnicos em cache; um EJB econmico;

Message-Driven Bean
Trabalha de forma assncrona

Entity Bean
Representa um objeto persistente Definido pela especificao JPA

Stateful
Mantm estado de converso com o cliente; Cada cliente ter uma instancia do EJB exclusiva, desde a criao at a remoo; Podemos ter atributos de negcio com mtodos getters e setters;
Globalcode Open4education Globalcode Open4education

15

Session Bean
Stateless (sem estado)

Session Bean
Stateful (com estado)

Perodo que uma instancia do EJB fica preso a um cliente

Perodo que uma instancia do EJB fica preso a um cliente

Globalcode Open4education

Globalcode Open4education

Session Bean
Stateless (sem estado)

Session Bean
Clientes acessam o Session Bean atravs de uma interface Java simples (POJI); Mtodos (servios) so publicados atravs desta interface; A interface deve ser implementada pela classe do Bean; Tipos de Interfaces
Local (@Local)
Somente acesso local (mesma JVM); Cliente pode ser um componente Web ou outro EJB; Localizao no transparente (no suporta clusterizao).

Remota (@Remote)
Suporta acesso remoto (fora da JVM); Cliente pode ser um componente Web, outro EJB ou aplicao desktop; Transparncia de localizao (suporta clusterizao).

Globalcode Open4education

Globalcode Open4education

16

Session Bean
Local Interface

OA2
Demonstrao
# OA1 JSF++ . 1.2 . Facelets . Richfaces . 1.2 . Facelets . Richfaces . 1.2 . Facelets . Richfaces JPA . 1.0 . Hibernate . 1.0 . Hibernate . 1.0 . Hibernate eclipse 3.x Padres EJB DI/IoC Containers Tomcat Jetty ... JBoss Glassfish WebSphere ... JBoss Glassfish WebSphere ...

. DAO No No . Factory . Service Locator . Business Object . Service Locator 3.0 No

OA2

Remote Interface
OA3

3.0

Sim

Globalcode Open4education

Globalcode Open4education

OA2
Vantagens
Arquitetura mais robusta (melhor escalabilidade) Infra-estrutura do servidor EE Regras de negcio centralizadas Ampla diversidade de clientes (CORBA, RMI, etc)

Agenda
Objetivo / Motivao Estudo de Caso Java Persistence API (JPA) JavaServer Faces (JSF) Enterprise Java Beans (EJB) Injeo de Dependncia (DI) Perguntas e Respostas

Desvantagens
Maior custo operacional Maior complexidade na implementao Maior dificuldade de suporte e manuteo

Globalcode Open4education

Globalcode Open4education

17

Injeo de Dependncia
Mecanismo de injeo de recursos necessrios a um componente de forma automtica
Sem a presena de instrues explcitas para acessar o recurso

Injeo de Dependncia
Sem injeo de dependncia:
Cdigo fonte do componente A contm instrues para buscar o componente B e o recurso C.

Exemplo:
O componente de negcios A depende do componente de negcios B e do pool de conexes C.
Servio de Nomes ejb/componenteB jdbc/dataSourceC

lookups

B C

B C
Globalcode Open4education Globalcode Open4education

Injeo de Dependncia
Com injeo de dependncia
Cdigo do componente A no busca recursos e outros componentes Devemos declarar as dependncias de componentes e recursos nos atributos ou mtodos setters do componente A Container (Java EE) interpreta as dependncias declaradas no componente A e injeta os recursos e componentes necessrios

Injeo de Dependncia
class ComponenteA { @EJB(name=ejb/componenteB) InterfaceB b; @Resource(name=jdbc/dataSourceC) DataSource c; }
injeo

Servio de Nomes ejb/componenteB jdbc/dataSourceC

B C
Globalcode Open4education

Globalcode Open4education

18

Injeo de Dependncia
Quem pode receber injeo ?
EJB, Interceptor Servlet, Filter, *Listener, JSP Tag Handler JSF Managed Beans Endpoints JAX-WS e Handlers

Injeo de Dependncia
Exemplo de Utilizao

O que pode ser injetado ?


Referncias a EJBs e a Web Services DataSource JDBC Destination e ConnectionFactory JMS UserTransaction EntityManager (JPA)

Globalcode Open4education

Globalcode Open4education

OA3
Demonstrao
# OA1 JSF++ . 1.2 . Facelets . Richfaces . 1.2 . Facelets . Richfaces . 1.2 . Facelets . Richfaces JPA . 1.0 . Hibernate . 1.0 . Hibernate . 1.0 . Hibernate eclipse 3.x

OA3
Vantagens
EJB DI/IoC Containers Tomcat Jetty ... JBoss Glassfish WebSphere ... JBoss Glassfish WebSphere ...

Padres

. DAO No No . Factory . Service Locator . Business Object . Service Locator 3.0 No

OA2

Configurao facilitada Diminuio na quantidade de padres de projeto utilizados na aplicao Maior produtividade Facilidade de manuteo

Desvantagens
Suporte incompleto IoC (ser corrigido no Java EE 6) Incompatibiliade para escalabilidade Somente para aplicaes Java EE
Globalcode Open4education

OA3

3.0

Sim

Globalcode Open4education

19

Outras especificaes usadas junto


JSF
+ Bean Validation + Context and Dependency Injection

Veja tambm ...


JSF
+ Scrum Toys no Netbeans 6.8 + SuperCRUD + IceFaces + MyFaces + Exadel Flamingo

EJB
+ JMS + JTA + WS + JNDI + JAAS

JME
+ Cosmo + Floggy

Globalcode Open4education

Globalcode Open4education

Faa voc mesmo!


Baixar os 3 projetos demo Configurar no Eclipse ou no Netbeans Codificar CRUDS para
Autor Rtulo Categoria

Perguntas e Respostas

Codificar Login programtico Usar componente de menu Usar componente para Drag and drop Usar componentes de calendrio e numrico

?
Globalcode Open4education Globalcode Open4education

20

Agradecidos pela presena!

Globalcode Open4education

21

Você também pode gostar