Sie sind auf Seite 1von 100

Desenvolvimento Web com Framework Demoiselle verso 1.

0
Mdulo 01: Arquitetura e Instalao
Serpro / Superintendncia de Suporte Tecnologia / Curitiba

Vanderson Botelho

Autor:

www.frameworkdemoiselle.gov.br
Modificado em: 13/10/2009

Licena

Esta obra est licenciada sob uma Licena Creative Commons


http://creativecommons.org/licenses/by/2.5/br/
Mdulo 01 - Arquitetura 2

Ficha Tcnica
Tutorial Framework Demoiselle

Autor
Vanderson Botelho da Silva Serpro / Superintendncia de Suporte Tecnologia Regional Curitiba (STCTA)

Revisores
Flvio Gomes da Silva Lisboa Serpro / Coordenao Estratgica de Tecnologia Regional Curitiba (CTCTA) Robson Saraiva Ximenes / Serge Normando Rehem Serpro / Coordenao Estratgica de Tecnologia Regional Salvador (CTSDR)
Mdulo 01 - Arquitetura 3

Ficha Tcnica
Aviso

Esta apresentao praticamente terica, e mesmo a parte de instalao est reproduzida no laboratrio. Se voc quer colocar a mo na massa imediatamente, pode saltar esta apresentao e retornar a ela se surgirem dvidas conceituais.

Mdulo 01 - Arquitetura

Agenda
Agenda

Arquitetura

Instalao Maven Arqutipo Demoiselle Plugin Update Site Download Site Maven Laboratrio Criao do projeto mnimo

Conceitos Representao Arquitetural

Mdulos do Framework Core Util Web Contextos Transao Mensagem Segurana

Mdulo 01 - Arquitetura

Tutorial
Pr-Requisitos

Conhecimento bsico

Orientao a Objetos Plataforma Java Enterprise Edition (JEE) Hibernate/JPA Java Server Faces (JSF) Maven Integrao contnua

Conhecimento Intermedirio

Mdulo 01 - Arquitetura

Tutorial
Objetivo

Capacitar desenvolvedores ao uso do Framework Demoiselle em sua verso 1.0 aplicado construo de sistemas Web

Mdulo 01 - Arquitetura

Conceitos
Histria

Demoiselle

Melhor projeto da aviao construdo por SantosDumont (1907) que influenciou significativamente a indstria da aviao, no incio do sculo XX Realizou vos de at 18 km, superiores aos 200m do 14bis O Demoiselle foi o primeiro avio fabricado em srie no mundo Projeto de cdigo livre
Santos-Dumont presenteou a todos, sem nada cobrar, todas as suas dezenas de invenes. [Dumont,09]
Mdulo 01 - Arquitetura 8

Conceitos
Histria

Framework Demoiselle

Preserva a mesma filosofia de Santos-Dumont, por meio das licenas de software livre (LGPL License 3*) Maro: Release 0.1 Abril: criao da equipe gestora do framework (Serpro/Cetec/CTJEE) Agosto: Release 0.2

2008

*http://www.gnu.org/licenses/lgpl.html
Mdulo 01 - Arquitetura 9

Conceitos
Histria

2008

Dezembro (08/12):

Lanamento Oficial da Verso 1.0: Free Software Rio 2008 http://www.freesoftwarerio.com.br

2009

Abril (14/04):

Liberao do cdigo-fonte no Source Forge

*http://www.gnu.org/licenses/lgpl.html
Mdulo 01 - Arquitetura 10

Conceitos
Framework

Visa direcionar o desenvolvedor aos problemas relacionados as regras de negcio do cliente e a apresentao das informaes Reduz o esforo utilizado para resolver detalhes de baixo nvel como segurana, acesso a dados, comunicao com outros ambientes, etc.
No desenvolvimento do software, um framework ou arcabouo uma estrutura de suporte definida em que um outro projeto de software pode ser organizado e desenvolvido.

Mdulo 01 - Arquitetura

11

Conceitos
Framework Demoiselle

Objetivos Gerais

Reuso do conhecimento Prover um ambiente de desenvolvimento


Aberto Compartilhado Colaborativo Diferentes instituies Diferentes tecnologias

Voltado para Integrao


Mdulo 01 - Arquitetura

12

Conceitos
Framework Demoiselle

Objetivos Especficos

Arquitetura extensvel atravs da componentizao Arquitetura de referncia s aplicaes Web JEE Prover mecanismos tranparentes para

Segurana Integrao entre camadas Controle de transacional

Prover utilitrios de infraestrutura para aplicaes Web Prover mecanismo de segurana utilizando certificados digitais para autenticao, criptografia e assinatura digital no padro ICP-Brasil

Mdulo 01 - Arquitetura

13

Conceitos
Framework Demoiselle

Estruturao em domnios

Gesto orientada a polticas de contedos e promoes de contedos (Camadas / Domnios) Domnios especficos

Framework arquitetural Integrao de organizaes do Governo e com a sociedade Organizacional Integrao na Organizao Sistemas Integrao de Grupo de Sistemas

Mdulo 01 - Arquitetura

14

Conceitos
Framework Demoiselle

Estruturao em domnios

Orientao a componentes

Tecnologia Reuso de mtodos, tcnicas e processos padronizados Negcios Reuso de componentes de negcio

Mdulo 01 - Arquitetura

15

Conceitos
Framework Demoiselle

Estruturao em domnios

Mdulo 01 - Arquitetura

16

Conceitos
Framework Demoiselle

Padronizao

Visa facilitar a padronizao das solues do governo

Padronizao de tecnologias Anlise, integrao e utilizao de tecnologias mais reconhecidas utilizadas pelas comunidades de desenvolvedores. Padronizao de arquitetura Acesso: Camada de interface das informaes do sistema Negcio: Camada lgica, contendo as regras do sistema Dados: Camada de armazenamento e recuperao de dados

Mdulo 01 - Arquitetura

17

Conceitos
Framework Demoiselle

Padronizao

Maior facilidade de suporte e absoro de sistemas Reuso de conceitos e prticas maduras Facilidade de integrao e disponibilizao de servios para os novos sistemas Camada de acesso do usurio (interface grfica) pode ser substituda para a disponibilizao de servios, reaproveitando toda a lgica do sistema

Mdulo 01 - Arquitetura

18

Conceitos
Framework Demoiselle

Site Maven - http://demoiselle.sourceforge.net

Prov informaes dinmicas do projeto Demoiselle como relatrios, downloads, manuais, entre outros documentos.

Mdulo 01 - Arquitetura

19

Conceitos
Framework Demoiselle

Arquitetura
*

* Padres de Interoperabilidade de Governo Eletrnico, [E-Ping,09]

Mdulo 01 - Arquitetura

20

Conceitos
Framework Demoiselle

Arquitetura

Integrao de definies e desenvolvimento Alinhamento de projetos Direcionamento Reuso de solues

Mdulo 01 - Arquitetura

21

Conceitos
Framework Demoiselle

Arquitetura

Mdulo 01 - Arquitetura

22

Conceitos
Framework Demoiselle

Reuso e Gerao automtica de cdigo

Conjunto de componentes com ciclo de vida independente No geram dependncia obrigatria nas aplicaes geradas Podem ser construdos colaborativamente Devem ser facilmente acoplados aplicao

Mdulo 01 - Arquitetura

23

Conceitos
Framework Demoiselle

Reuso e Gerao automtica de cdigo

A gerao de cdigo automtica deve ser encarada como um componente especial Ele deve ser utilizado durante o desenvolvimento

Mdulo 01 - Arquitetura

24

Conceitos
Framework Demoiselle

Premissas

Extensibilidade: Pontos de extenso (interfaces, abstraes,


inverso de controle, Abstract Factory)

Reusabilidade: Arquitetura de referncia e componentes Manutenibilidade: Diviso em modulos, baixo acoplamento,


manuteno simplificada

Desempenho: Controle de integrao de camadas e controle de


transao

Estabilidade / Confiabilidade: Baseada em especificaes


(Foundation Framework) reconhecidas pelo mercado

Mdulo 01 - Arquitetura

25

Conceitos
Framework Demoiselle

Desenvolvimento em Camadas

Uma camada equivale a um dos particionamentos lgicos de diversos aspectos tratados em um sistema Cada camada possui responsabilidade distinta ou nica no sistema Uma camada no est estritamente acoplada a camada adjacente Representa-se o sistema como uma pilha de camadas

Mdulo 01 - Arquitetura

26

Conceitos
Framework Demoiselle

Desenvolvimento em Camadas
Apresentao
Dependncia

Apresentao das informaes e Interao com o usurio. Centraliza o processamento das regras de negcio do sistema. Deve ser projetada de forma independente da interface (camada de apresentao)

Lgica de Domno
Dependncia

Acesso a Dados

Camada responsvel por tratar conexes e transaes com o banco de dados

Mdulo 01 - Arquitetura

27

Conceitos
Framework Demoiselle

Desenvolvimento em Camadas

Arquitetura Model View Controller


Seu objetivo separar o modelo: que corresponde ao objeto que est sendo exibido pela viso em determinado momento; a viso: que corresponde interface que o sistema disponibiliza para que o usurio possa manipular o modelo; e o controlador: que responsvel pro tratar os eventos de interao entre o usurio e o sistema. O MVC pode ser aplicado a uma das camadas do sistemas. Ex.: Apresentao.
Mdulo 01 - Arquitetura 28

Conceitos
Framework Integrador

Tecnologias Utilizadas
Como integrar tantas ferramentas ?

Mdulo 01 - Arquitetura

29

Conceitos
Framework Integrador
Framework Integrador Um Framework Integrador tem Um Framework Integrador tem por objetivo facilitar aaconstruo por objetivo facilitar construo de aplicaes sem oo de aplicaes sem investimento de tempo em investimento de tempo em escolha escolha ee integrao integrao de de frameworks especialistas, que frameworks especialistas, que resulta resulta no no aumento aumento da da produtividade ee garante aa produtividade garante manutenibilidade dos sistemas. manutenibilidade dos sistemas.

Mdulo 01 - Arquitetura

30

Conceitos
Framework Demoiselle

Evoluo

Abordagem de Evoluo
Descontinuao Suporte Funcionalidades em discusso Desenvolvimento

N-2

N-1

N+1

N+2

Linha do tempo

Mdulo 01 - Arquitetura

31

Arquitetura

Mdulo 01 - Arquitetura

32

Arquitetura
Representao Arquitetural

Mdulo 01 - Arquitetura

33

Arquitetura
Representao Arquitetural

Architectural Framework

Representa os mdulos implementados pelo Demoiselle Representa o conjunto de frameworks especialistas utilizados e compatveis ao Demoiselle Representa as especificaes de mercado que balizam o Arquitetural Framework como os mecanismos de controle de transao, segurana, acesso a dados entre outros

Base Frameworks

Foundation Frameworks

Mdulo 01 - Arquitetura

34

Arquitetura
Representao Arquitetural

Platform

Representa as plataformas de produo compatveis ao Framework Representa a camada da mquina virtual Representa a camada do sistema operacional

Virtual Machine

OS

Mdulo 01 - Arquitetura

35

Arquitetura
Mdulo Core

Este mdulo contm o conjunto de especificaes que do base estrutural ao framework possibilitando padronizao, extenso e integrao entre as camadas das aplicaes nele baseadas Diviso de Camadas

O Demoiselle prope s aplicaes a diviso em trs camadas distintas: viso, negcio e persistncia

Mdulo 01 - Arquitetura

36

Arquitetura
Mdulo Core

Interfaces

IViewController

Abstrao para o objeto da camada de viso Abstrao para o objeto da camada de negcio Abstrao para o objeto da camada de persistncia Abstrao para o objeto da camada de integrao de mdulos/subsistemas

IBusinessController

IDAO

IFacade

Mdulo 01 - Arquitetura

37

Arquitetura
Mdulo Core

Integrao entre Camadas

Utiliza padres de projeto tais como: Factory, Proxy, IoC e injeo de dependncias para manter a integrao de camadas com baixo nvel de acoplamento, a fim de garantir melhor manuteno, escrita e legibilidade das classes representantes destas camadas

Mdulo 01 - Arquitetura

38

Arquitetura
Mdulo Core

Integrao entre Camadas

Exemplo de Injeo de um IBusinessController


public class MeuMB implements IViewController{ @Injection private IMeuBC meuBC; } public class MeuMB implements IViewController{

@Injection (name=br.gov.escola.business.implementation.AlunoBC) private IMeuBC meuBC; }

Mdulo 01 - Arquitetura

39

Arquitetura
Mdulo Core

Integrao entre Camadas

Exemplo de Injeo de um IDAO


public class MeuBC implements IBusinessController{ @Injection private IMeuDAO meuDAO; } public class MeuBC implements IBusinessController{

@Injection( name="br.gov.escola.persistence.dao.implementation.AlunoDAO") private IMeuDAO meuDAO; }

Mdulo 01 - Arquitetura

40

Arquitetura
Mdulo Core

Injeo

O mdulo Core especifica quem trata a injeo de dependncia Os mdulos que implementam o Core devem definir como a injeo ser realizada Na verso 1.0 do Demoiselle a injeo de dependncia implementada no mdulo Web

Mdulo 01 - Arquitetura

41

Arquitetura
Mdulo Core

Contexto de Mensagens

Define uma abstrao de mensagens trocadas durante uma requisio entre as camadas do sistema

Mdulo 01 - Arquitetura

42

Arquitetura
Mdulo Core

Contexto de Mensagens

Interfaces

IMessage: Abstrao da unidade de mensagem IMessageContext: Abstrao do contexto de mensagem Severity: Lista de severidades

Enumerations

Mdulo 01 - Arquitetura

43

Arquitetura
Mdulo Core

Tratamento de Exceo

O Mdulo Core define uma exceo padro para as aplicaes

ApplicationRuntimeException

Esta exceo encapsula uma mensagem padronizada para facilitar o tratamento pelos mdulos do aplicao

Mdulo 01 - Arquitetura

44

Arquitetura
Mdulo Core

Tratamento de Exceo

Classes

ApplicationRuntimeException Exceo do tipo unchecked, padroniza as excees da aplicao

Lanamento
public void MetodoBC(){ if ( /*Condio para lanamento de exceo*/ ){ throw new ApplicationRuntimeException(ErrorMessage.ERRO_01); } }

Captura
public void MetodoMB () { try { MetodoBC(); } catch (ApplicationRuntimeException ex) { /**Trata exceo*/ } }
Mdulo 01 - Arquitetura 45

Arquitetura
Mdulo Core

Java Authentication and Authorization Service (JAAS) API que permite s aplicaes escritas na plataforma J2EE usar servios de controle de autenticao e autorizao sem necessidade de estarem fortemente dependentes desses servios JAAS Authentication

Especifica como uma aplicao pode autenticar usurios usando JAAS Especifica como implementar controle de acesso usando JAAS

JAAS Authorization

Mdulo 01 - Arquitetura

46

Arquitetura
Mdulo Core

JAAS Authentication

Principal

representa um usurio

JAAS Authorization

Role

representa papis do usurio no sistema

Exemplo Implementao padro do Tomcat

Mdulo 01 - Arquitetura

47

Arquitetura
Mdulo Core

Representao Principal e Roles

Exemplo Tomcat-Users.xml:

<tomcat-users> <role rolename="role_aluno"/> <role rolename="role_professor"/> <role rolename="role_administrador"/> <user username="aluno" password="aluno" roles="role_aluno"/> <user username="professor" password="professor" roles="role_professor"/> <user username="admin" password="admin" roles="role_administrador"/> </tomcat-users>

Mdulo 01 - Arquitetura

48

Arquitetura
Mdulo Core

Contexto de Segurana

Especifica um mecanismo padro para acesso a dados de segurana referentes a autenticao e autorizao Trata a autorizao por meio de papis Baseada na especificao JAAS [JAAS, 09]

Mdulo 01 - Arquitetura

49

Arquitetura
Mdulo Core

Contexto de Segurana

Intefaces

Abstrao do contexto de segurana

Exemplo:
ISecurityContext contexto = ContextLocator.getInstance().getSecurityContext(); if } (contexto.isUserInRole("Administrador")){ ...

Mdulo 01 - Arquitetura

50

Arquitetura
Mdulo Core

Entidades

O Core prope uma abstrao para as entidades da aplicao

Mdulo 01 - Arquitetura

51

Arquitetura
Mdulo Core

Entidades

Exemplo
public class MeuPojo implements IPojo{ private Long id; public Long getId() { return id; } public void setId(Long id) { this.id = id; }

Mdulo 01 - Arquitetura

52

Arquitetura
Mdulo Core

Transao

Especifica o mecanismo de controle transacional Define um contexto transacional que atua no incio e no fim de cada ao Seu funcionamento depende de um tipo definido, seja Local ou JTA1.

Local: indica que a aplicao ser responsvel pelo gerenciamento da transao Distribuda (JTA): a aplicao depender de uma implementao JTA disponvel no container

JTA: Java Transaction API [JTA, 09]


Mdulo 01 - Arquitetura 53

Arquitetura
Mdulo Core

Transao

Diagrama

Mdulo 01 - Arquitetura

54

Arquitetura
Mdulo Core

Transao

Interfaces

ITransactionResource Define um recurso a ser registrado no contexto de transao ITransactionContext Contexto de transao responsvel por registrar o incio e fim de cada ao e registrar recursos transacionais TransactionType Tipos de funcionamento do mecanismo de controle de transao

Enumerations

Mdulo 01 - Arquitetura

55

Arquitetura
Mdulo Core

Acionadores

Define um mecanismo padronizado de aes a serem executadas pela aplicao Essas aes so definidas como funes estruturais da aplicao:

carregamento de configurao inicializao de ambiente etc.

Mdulo 01 - Arquitetura

56

Arquitetura
Mdulo Core

Acionadores

Diagrama

Mdulo 01 - Arquitetura

57

Arquitetura
Mdulo Core

Acionadores

Interfaces

IActionManager Executa aes que foram recuperadas pelo mecanismo de recuperao ILoaderAction Mecanismo de recuperao das aes IAction Representa uma ao

Mdulo 01 - Arquitetura

58

Arquitetura
Mdulo Core

Acionadores

Exemplo:
class MinhaAplicacaoAction implements IAction { private static Logger log = Logger.getLogger(MinhaAplicacaoAction.class); public void execute() { log.debug("Lendo arquivos de configurao"); }

public

Mdulo 01 - Arquitetura

59

Arquitetura
Mdulo Core

Localizador de Contextos

Para que a aplicao possa usufruir dos contextos definidos no Mdulo Lgico CORE, a existncia de um localizador fundamental A implementao de cada contexto (segurana, transao, mensagem, ...) dever utilizar o localizador como canal de acesso

Mdulo 01 - Arquitetura

60

Arquitetura
Mdulo Core

Localizador de Contextos

Mdulo 01 - Arquitetura

61

Arquitetura
Mdulo Web

Definio

Implementao do mdulo lgico CORE para aplicaes Web (J2EE) Prover utilitrios comuns de aplicaes web para facilitar o tratamento de sesses de usurio e suas requisies

Mdulo 01 - Arquitetura

62

Arquitetura
Mdulo Web

Contexto de Segurana

Implementa o contexto de segurana proposto no mdulo CORE atravs de um Singleton inicializado a cada requisio do usurio com informaes de autenticao e autorizao

Mdulo 01 - Arquitetura

63

Arquitetura
Mdulo Web

Contexto de Segurana

Classes

WebSecurityContext Implementa o contexto de segurana atravs do padro singleton Gerencia os dados de segurana vinculados a thread corrente WebSecurityServletRequestListener Responsvel por repassar o objeto request para o contexto de segurana WebSecurityContext

Mdulo 01 - Arquitetura

64

Arquitetura
Mdulo Web

Exemplo de Uso

Uso do Realm padro do tomcat (tomcat-users.xml)


<tomcat-users> <role rolename="role_aluno"/> <role rolename="role_professor"/> <role rolename="role_administrador"/> <user username="al" password="al" roles="role_aluno"/> <user username="prof" password="prof" roles="role_professor"/> <user username="admin" password="admin" roles="role_administrador"/> </tomcat-users>

Configurao

Uso

ISecurityContext contexto = ContextLocator.getInstance().getSecurityContext(); if (contexto.isUserInRole("role_administrador")){ ... }

Mdulo 01 - Arquitetura

65

Arquitetura
Mdulo Web

Contexto de Mensagens

Contexto de mensagens para aplicaes web

Mdulo 01 - Arquitetura

66

Arquitetura
Mdulo Web

Contexto de Mensagens

Exemplo

Lanamento
IMessageContext contextoMsg = ContextLocator.getInstance().getMessageContext(); public class MeuBC implements IBusinessController { public void meu_metodo(){ ... contextoMsg.addMessage(InfoMessage.Mensagem); } }

Captura
public class MeuMB extends IViewController { public void meu_metodo(){ for (IMessage imsg : contextoMsg.getMessages(){ addMessage(imsg);} }

Mdulo 01 - Arquitetura

67

Arquitetura
Mdulo Web

Integrao entre Camadas

O mdulo WEB implementa a especificao de integrao de camadas proposto pelo mdulo CORE O mecanismo implementado utiliza Programao Orientada a Aspectos (AOP) para detectar os pontos de integrao

Mdulo 01 - Arquitetura

68

Arquitetura
Mdulo Web

Transao

Implementa a especificao do contexto transacional do mdulo CORE, por meio de Listeners do container JEE

<listener> <listener-class> br.gov.framework.demoiselle.web.transaction.WebTransactionServletRequestListener </listener-class> </listener>

Prover um mecanismo transparente de gerenciamento de transao possvel utilizar o controle transacional do container (JTA) para isso deve existir uma implementao de um mecanismo de lookup via JNDI
Mdulo 01 - Arquitetura 69

Arquitetura
Mdulo Web

Inicializao do Ambiente

A inicializao de ambiente segue a especificao de aes proposto no mdulo CORE A inicializao ocorre sempre que o container iniciar a aplicao O mdulo WEB necessita que algumas aes sejam executadas, essas aes esto implementadas nesse mdulo Os componentes e aplicaes baseadas no framework podem implementar outras aes e adicion-las para que sejam executadas na inicializao do ambiente

Mdulo 01 - Arquitetura

70

Arquitetura
Mdulo Web

Inicializao do Ambiente

Exemplo de uso
public class MinhaAction implements IInitializationAction { public void execute() { log.debug("Inicializando minha action"); } public void setServletContext(ServletContext context) { } }

#Configurao no arquivo Demoiselle.properties framework.demoiselle.web.initialization.action=MinhaAction

Mdulo 01 - Arquitetura

71

Arquitetura
Mdulo Web

Redirecionamento baseado em URL

O mdulo WEB implementa um mecanismo de redirecionamento baseado em URL utilizado por componentes do Demoiselle como o Report Pode ser utilizado pelas aplicaes

Mdulo 01 - Arquitetura

72

Arquitetura
Exemplo de Redirecionamento URL

Criando uma IRedirectAction


public class MinhaRedirectAction implements IRedirectAction { private ServletRequest request; private ServletResponse response; public String getParameter() { return "MinhaActionParameter"; } public String getValue() { return "MinhaActionValue"; } public void setRequest(ServletRequest req) { this.request = req; } public void setResponse(ServletResponse resp) { this.response = resp; } public void execute() { /*Minha execuo*/ } }
Mdulo 01 - Arquitetura 73

Arquitetura
Exemplo de Redirecionamento URL

Cadastrando no demoiselle.properties
# --- Web Configuration --framework.demoiselle.web.redirect.action=MinhaRedirectAction01 framework.demoiselle.web.redirect.action=MinhaRedirectAction02 framework.demoiselle.web.redirect.action=MinhaRedirectAction03

Configurao do web.xml
<servlet> <servlet-name>WebRedirectServlet</servlet-name> <servlet-class> br.gov.framework.demoiselle.web.redirect.WebRedirectServlet </servlet-class> </servlet> <servlet-mapping> <servlet-name>WebRedirectServlet</servlet-name> <url-pattern>/redirect</url-pattern> </servlet-mapping>
Mdulo 01 - Arquitetura 74

Arquitetura
Exemplo de Redirecionamento URL

Chamando a RedirectAction
<a href="minhaAplicacao/redirect?MinhaActionParameter=MinhaActionValue"> Chamar Minha Action </a>

Mdulo 01 - Arquitetura

75

Arquitetura
Mdulo Util

Este mdulo contm componentes utilitrios que facilitam o trabalho de outras funcionalidades do framework e seus mdulos lgicos

Mdulo 01 - Arquitetura

76

Arquitetura
Mdulo Util

Carregamento de Configurao

Permite carregar variveis configuradas em


arquivos xml arquivos de propriedades Propriedades do System

Utilizado em vrios outros componentes do framework Recomenda-se seu uso tambm pelas aplicaes

Mdulo 01 - Arquitetura

77

Arquitetura
Mdulo Util

Carregamento de Configurao

Exemplo: Declarao
@ConfigKey (name = "key", type=ConfigType.SYSTEM) private String stringValueSystem;

@ConfigKey (name = "framework.stringValue", type=ConfigType.XML, resourceName="configuration.xml") private String stringValueXML; @ConfigKey (name = "framework.stringValue", type=ConfigType.PROPERTIES, resourceName="configuration.properties") private String stringValueProperties;

Mdulo 01 - Arquitetura

78

Arquitetura
Mdulo Util

Carregamento de Configurao

Exemplo: Carregamento e uso


public void meuMetodo() {

MeuConfig meuConfig = new MeuConfig(); ConfigurationLoader.load(meuConfig); System.out.print(meuConfig.getMinhaPropriedade()); }

Mdulo 01 - Arquitetura

79

Arquitetura
Mdulo Util

Paginao de Resultados

Normalmente as aplicaes necessitam trafegar resultados entre as camadas de forma paginada garantindo o desempenho da aplicao Esse mecanismo implementado por meio de um objeto que permite configurar os dados da pgina que ser requisitada e um objeto que contm os resultados de forma paginada

Mdulo 01 - Arquitetura

80

Arquitetura
Mdulo Util

Paginao de Resultados

Diagrama

Mdulo 01 - Arquitetura

81

Arquitetura
Mdulo Util

Paginao de Resultados

Classes

Page Configurao da Pgina PagedResult Resultados paginados

Exemplo
public void carregarLista() { Page page = new Page(50, 1)); meuBC.listar(page)); }

Mdulo 01 - Arquitetura

82

Arquitetura
Consideraes Finais

O framework baseado(em) e direcionado(a) arquiteturas O reuso de cdigo possibilitado atravs da componentizao Cada componente facilmente acoplado e desacoplado a cada aplicao conforme demanda A arquitetura deve ser baseada em padres e direcionamento A padronizao visa facilitar a integrao e manuteno dos sistemas
Mdulo 01 - Arquitetura 83

Bibliografia
[Demoiselle, 09] Site Oficial do Framework Demoiselle, http://demoiselle.sourceforge.net/ [JAAS, 09] Especificao JAAS, http://java.sun.com/products/archive/jaas/ [JBoss, 08] jboss.org: community driven, http://www.jboss.org/ [Eclipse, 08] Eclipse.org home, http://www.eclipse.org/ [Java, 08] Java.sun.com, http://java.sun.com/ [JTA, 09] Java Transaction API, http://java.sun.com/javaee/technologies/jta/index.jsp [Dumont,09] Histria de Santos Dumont, http://www.fab.mil.br/portal/aeronaves/htm/historia.htm [E-Ping,09] Padres de Interoperabilidade de Governo Eletrnico, http://www.governoeletronico.gov.br/acoes-e-projetos/e-ping-padroes-de-interoperabilidade

Mdulo 01 - Arquitetura

84

Instalao

Mdulo 01 - Arquitetura

85

Instalao
Softwares Necessrios

JVM

Verso mnima: 1.5.0.17 Ganymede 3.4.1 AspectJ 1.6.3 M2 0.9.7 Verso 4.2 Verso 6.0
Mdulo 01 - Arquitetura 86

Eclipse

JBoss

Tomcat

Instalao
Instaladores

Trs Caminhos:

Arqutipo Maven Update Site Demoiselle Wizard Download Direto Site Demoiselle Framework no SourceForge O uso do arqutipo Maven recomendado visto que o Maven faz a gesto das dependncias.

Mdulo 01 - Arquitetura

87

Instalao
Instaladores

Arqutipo Maven

Cadastrar o demoiselle-archetype-webapp no arquivo arquivo archetype-catalog.xml no repositrio local do desenvolvedor:

<?xml version="1.0" encoding="UTF-8"?> <archetype-catalog> <archetypes> <archetype> <groupId>br.gov.component.demoiselle.archetypes</groupId> <artifactId>demoiselle-archetype-webapp-sample</artifactId> <version>1.0.0</version> <repository> http://demoiselle.sourceforge.net/repository/release </repository> </archetype> </archetypes> </archetype-catalog>

Mdulo 01 - Arquitetura

88

Instalao
Instaladores

Arqutipo Maven

Eclipse:
-> File -> New Project -> Maven Project

Mdulo 01 - Arquitetura

89

Instalao
Instaladores

Arqutipo Maven

Selecione o local onde o projeto ser criado. Caso no informe ele criar o workspace local

Mdulo 01 - Arquitetura

90

Instalao
Instaladores

Arqutipo Maven

Selecione o Catlogo Default Local o arqutipo do Demoiselle

Mdulo 01 - Arquitetura

91

Instalao
Instaladores

Arqutipo Maven

Informe GroupId: representa o ArtificatId: representa o

nome da organizao.

nome do projeto

Mdulo 01 - Arquitetura

92

Instalao
Instaladores

Arqutipo Maven

A aplicao construda com os seguintes componentes/frameworks:


Jsf Api 1.2.08 Richfaces 3.1.2 Weblets Api 1.1 Myfaces Tomahawk 1.1.7 Jsf-facelets 1.1.14 Postgresql 8.0-318 JasperReports 3.1.0

Mdulo 01 - Arquitetura

93

Instalao
Instaladores

Demoiselle Wizard

Instalando o plugin demoiselle para IDE Eclipse via update site Eclipse

Help -> Software Updates Available Software -> Add Site

Mdulo 01 - Arquitetura

94

Instalao
Instaladores

Demoiselle Wizard

Adicionando um novo Site

Mdulo 01 - Arquitetura

95

Instalao
Instaladores

Demoiselle Wizard

Selecionando Demoiselle Wizard

Mdulo 01 - Arquitetura

96

Instalao
Instaladores

Demoiselle Wizard

Mdulo 01 - Arquitetura

97

Instalao
Instaladores

Download das Bibliotecas

Entrar na seo Downloads no site do projeto do Framework Demoiselle no Source Forge Baixar os binrios e suas respectivas dependncias

https://www.sourceforge.net/projects/demoiselle

Mdulo 01 - Arquitetura

98

Instalao
Laboratrio 01

Exerccio 1.1

Objetivos: Fixar conceitos de arquitetura Criar projeto mnimo via arqutipo Maven Usar o Demoiselle Wizard para configurao da aplicao

Mdulo 01 - Arquitetura

99

Contato
Tutorial Framework Demoiselle

Comunidade Demoiselle

Framework http://www.sourceforge.net/projects/demoiselle

Colaboraes

Lista demoiselle-users@lists.sourceforge.net

Mdulo 01 - Arquitetura

100

Das könnte Ihnen auch gefallen