Home

Padronização e Reuso de Aplicações Web com

image

Contents

1. ISecurityContext contexto ContextLocator getlnstance getSecurityContext if contexto isUserlnRole Administrador l EEE ST k W O dC e O tr i piei n Benay Det pd phian oeii rana i b RHH cer o E aH w giy aien Deiri oniri H tT rara eta Mr ta n E E LE Cj brgov tament denni neiem E r hifa Miik pief gWall Cali ap a diih ad Hi i i miia Tirpaabig epid dirigea a a vi d PRHA o rs Es U rr direitas Tiaa geo red gt hackear punida da areal ogocirampe iRU E int gt gt iyt amea penis Piai raa doa rir gro O Siro booa Figura 12 Localizador de contextos Made in Brazil e Padroniza o e Reuso de Aplica es Web com Demoiselle Framework Entidades O Core do Demoiselle prop e uma abstra o para as entidades da aplica o a interface IPojo Como tudo no Core algo muito gen rico feito com o intuito de estabelecer padr es Mas para os que querem algo mais elaborado o componente Demoiselle Commons traz uma abstra o POJO baseada em uma extens o de IPojo PojoExtension Outros componentes que n o s o obrigat rios mas podem ser usados com o framework est o dispon veis em http sourceforge net projects de moiselle comp o projeto para componentes do Demoiselle Framework Voc j est convidado a contribuir com o seu Controle de transa o O Core especifica o mecanismo de controle transacional e define um context
2. o Por isso a anota o O Injection antes do atributo contatoDAO Isso permite que a classe imple mentadora da interface seja alterada removendo a depend ncia dos BCs das classes DAO A localiza o da implementa o baseada no nome da interface por isso as conven es de nome Mas o Demoiselle permite que ao desenvolvedor definir suas pr prias f bricas de objeto alterando esse comportamento padr o Para ressaltar o quanto a inje o de c digo por aspectos ajuda na independ ncia entre camadas vamos examinar o m todo incluir de ContatoBC Listagem 4 Listagem 4 M todo incluir de ContatoBC public void incluir Pessoa pessoa pessoaDAO insert pessoa claro que essa implementa o o exemplo mais reduzido pois antes de chamar o m todo insert da classe DAO uma s rie de opera es poderia ser feita como valida o e filtragem de dados por exemplo Mas o que importa aqui ver que chamamos o m todo insert de um objeto cuja classe s ser definida quando o AspectJ compilar o c digo Desde que a classe do objeto implemente a interface IPessoaDAO n o importa para o controlador de neg cios como realizado o acesso aos dados na camada de persist ncia Neste caso o m todo insert chamado ser o da classe PessoaDAO Lis tagem 5 Vemos que esse m todo faz uso da classe HibernateUtil que como sugere o nome utiliza o Hibernate Mas e se nossa aplica o tiver de usar outro framework d
3. Reflex o Anota es Uma Com bina o Explosiva Mundoj Edi o 18 O reuso na pr tica Vimos o contexto de cria o do Demoiselle Framework seus objetivos sua proposta sua caracter stica de software livre de desenvolvimento colaborativo e finalmente criamos uma pequena aplica o web com o mesmo Obviamente uma aplica o muito simples mas completa no tocante utiliza o das camadas propostas pelo framework Ela deve ser suficiente para dar uma dimens o do que o Demoiselle oferece e instigar os leitores a complet la melhor la levando os claro a estudar a documenta o do mesmo O Demoiselle apenas est em conson ncia com o ideal de um mundo de padr es Isso n o tem a ver com uma vis o de Admir vel Mundo Novo de Aldous Huxley e muito menos de 1984 de George Orwell Padr es s o bons quando bem utilizados Eles permitem que as pessoas se comuni quem Permitem que pe as sejam fabricadas por pessoas diferentes e mesmo assim possam ser integradas em um nico produto final Assim como o treinamento constante faz o lutador marcial melhorar seu de sempenho a cada dia o desenvolvimento de um software com a mesma plataforma e processo tende a prov lo de melhorias pela experi ncia acumulada com o tempo O melhor exemplo do que a falta de padr es pode ocasionar o nosso sistema notarial Quando voc precisa do servi o de um cart rio pode embarcar numa grande aventura Quando precisa do servi
4. o de v rios isso pode se transformar em uma verdadeira saga Uma saga em um sistema onde cada cart rio parece ser um pa s diferente com leis diferentes no qual n o h coopera o voc n o tem certeza das regras e o mais importante voc n o sabe exatamente quanto vai gastar at ter conclu do o processo Como diria a menina de lindos olhos claros da s rie Head First Como seria maravilhoso se houvesse uma plataforma de desenvolvimento que fosse mais atrativa do que ter que reconhecer firma em cinco cart rios diferentes deve ser um sonho Talvez seja um sonho Ou talvez seja o Demoiselle MU Refer ncias S tio oficial do Demoiselle Framework http www frameworkdemoiselle gov br P gina do projeto no Sourceforge http sourceforge net projects demoiselle e Fowler Martin Padr es de Arquitetura de Aplica es Corporativas Porto Alegre Bookman 2006 Hoffman Paul Asas da Loucura a Extraordin ria Vida de Santos Dumont Rio de Janeiro Objetiva 2004 e Macias Ananda Framework de Desenvolvimento Vis o Geral Dispon vel em lt http www serpro gov br clientes serpro serpro imprensa publicacoes tema tec 2008 ttec9 a gt e Winck Diogo V e Goeten Junior Vicente AspectJ Programa o Orientada a Aspec tos com Java S o Paulo Novatec 2006 e Howard Ron Uma Mente Brilhante Baseado no livro hom nimo de Sylvia Nasar ganhador de quatro Oscar incluindo Melhor Filme 2001
5. o mais significativo a utiliza o de padr es de projeto tais como Factory Proxy loC e inje o de depend ncias para manter a integra o de camadas em um n vel de acoplamento baixo a fim de garantir uma melhor manuten o e escrita legibilidade das classes representantes de cada camada O mecanismo de integra o entre camadas atua na camada de vis o in jetando objetos de neg cio atrav s de uma f brica do pr prio framework ou alguma f brica definida pela aplica o e esta f brica poder utilizar um proxy do framework ou da aplica o para a instancia o do objeto de neg cio O mecanismo de integra o entre camadas atua tamb m na camada de regras de neg cio injetando objetos de persist ncia atrav s de uma f brica do pr prio framework ou alguma f brica definida pela aplica o e esta f brica poder utilizar um proxy do framework ou da aplica o para a instancia o do objeto de persist ncia lt Oportunidades de Neg cio Figura 3 Benef cios e oportunidades do Demoiselle A princ pio o Demoiselle pode ser visto como uma imposi o com o intuito de criar uma reserva de mercado para empresas estatais Mas isso um ledo engano pois como o software aberto qualquer um pode estud lo melhor lo e oferecer servi os relacionados a ele seja desen volvimento manuten o treinamento ou consultoria primeira vista parece ser mais um framework Java o que pode levantar quest e
6. agenda figura 6 id numero tipo ld telefone Id pessoa Figura 6 DER do banco agenda nome String apelido String telefones Set lt Telefone gt telefone String tipo String pessoas Set lt Pessoa gt Figura 7 Classes POJO do projeto addressbook Camada de persist ncia O m dulo Persistence do Demoiselle disponibiliza abstra es de per sist ncia visando o baixo acoplamento nas camadas superiores e a f cil utiliza o de frameworks de persist ncia como Hibernate e JDBC Nesse exemplo ser utilizado o Hibernate Para implementar a persist ncia construa o mapeamento objeto relacional da aplica o configure a conex o referencie o mapeamento e finalmente crie as interfaces para a classes DAO Isso necess rio porque as classes DAO n o ser o instanciadas diretamente nas camadas supe riores pois ser feito o uso de inje o de c digo por meio do AspectJ gt LIS Page ri Ae E ETTA aa ad Dt pri dd Pair ririh ir Edi FRISA E DESE Pipa Photo Pr Tim psp Figura 8 Camada de persist ncia Conforme pode ser visto na figura 8 a implementa o das interfaces ser feita por uma classe que estende HibernateFilterGenericDAO Esta uma classe que j traz encapsulada a l gica de persist ncia utilizando o framework Hibernate al m de agregar a funcionalidade de filtros para consultas Essa class
7. das aplica es nele baseadas e O m dulo Persistence realiza a integra o do sistema com outros sistemas gerenciadores de dados garantindo efici ncia para recu perar armazenar e tratar informa es e O m dulo til cont m componentes utilit rios que facilitam o trabalho de outras funcionalidades do framework e seus m du los l gicos e O m dulo View cont m implementa es de componentes espec fi cos de interface com usu rio baseados na especifica o JSF e O m dulo Web a implementa o do m dulo l gico Core para aplica es Web J2EE prover utilit rios comuns de aplica es web que facilitam tratamento de sess es de usu rio e suas requisi es Figura 1 Arquitetura do Demoiselle e depend ncias Made in Brazil e Padroniza o e Reuso de Aplica es Web com Demoiselle Framework Contextos A cria o de camadas visa diminuir a complexidade da aplica o sepa rando a em partes mais compreens veis substitu veis e f ceis de manter Geralmente usamos met foras com bolos e tortas onde uma camada re pousa sobre a outra Nessa met fora as camadas de software s podem se comunicar com as camadas adjacentes imediatamente acima ou abaixo O Demoiselle separa as aplica es em camadas representadas na implementa o por pacotes Java seguindo esse modelo Cada camada respons vel por um trabalho espec fico tornando se especialista em um conjunto de tar
8. de Neg cio Agora s escolher seu servidor web favorito desde que siga a especifi ca o Servlets 2 5 e adicionar seu projeto a ele JBoss 4 2 x e Tomcat 6 x s o compat veis Antes de iniciar ou reiniciar o servidor lembre se de incluir alguns registros na tabela pois para deixar este exemplo o mais curto poss vel n o tratamos essa exce o Com o c digo que constru mos voc pode criar uma p gina de contatos telef nicos tal como a da figura 11 u a aE Ec E i i O o i Ea Lam e iE E p LEE I Figura 11 P gina de contatos telef nicos Detalhamento da arquitetura O exemplo que vimos aqui algo extremamente simples por m seu desenvolvimento sem o uso de um framework tomaria mais tempo A quest o agora por que usar o Demoiselle quando j existem outros frameworks no mercado Quais s o seus diferenciais Veremos agora mais detalhes sobre o m dulo Core o centro nervoso do Demoiselle e o m dulo Web que faz a implementa o para aplica es Web Os exemplos de c digo mostrados a seguir fazem parte da aplica o escola um exemplo dispon vel no projeto Demoiselle Samples http sourceforge net projects demoiselle samp www mundoj com br Inje o de depend ncias Como dito anteriormente o m dulo Core cont m as especifica es que d o base estrutural ao framework Ele define quatro interfaces e IViewController abstra o para o objeto da camada de vis o e Busi
9. aco acoplamento representa uma solu o de flexibilidade similar ao que o padr o Decorator para o problema de heran a na orienta o a objetos Assim como o Decorator consegue prover poderes a um objeto escapando da depend ncia e insufici ncia da heran a a arquitetura de fraco acoplamento consegue prover uma infraestrutura b sica de funcio nalidades com o uso de componentes Essa a deixa para falar que o Demoiselle mais do que apenas o pro jeto do framework arquitetural Hoje o portal do Demoiselle Framework elenca quatro subprojetos e Demoiselle Wizard plugin para o Eclipse que disponibiliza um menu com op es para gerar c digo automaticamente e Demoiselle Sample projeto de uma aplica o exemplo chamada escola e Demoiselle Component pacote para desenvolvimento de com ponentes a serem acoplados ao framework J disp e de v rios componentes desenvolvidos e usados pelo Serpro e Demoiselle Process a ideia desse projeto sugerir um processo para constru o de aplica es usando o Demoiselle Mundoj Edi o 21 Mundo OO Design Patterns para um Mundo Real parte 1 Mundoj Edi o 22 Mundo OO Design Patterns para um Mundo Real parte 2 Mundoj Edi o 23 Mundo OO Design Patterns para um Mundo Real parte 3 pa T L ET 2 cg Ga Mundoj Edi o 22 Padr es de Projeto e Reflex o Alexandre Gazola Mundoj Edi o 21 Conhecendo JSF e Facelets 1 2 Mundoj Edi o 19
10. azz passando como par metro o atributo class do POJO relacionado O m todo find usado por pessoaDAO herdado de HibernateFilterGe nericDAO Ele encapsula as consultas SQL para a base de dados No m todo listar s o passados dois argumentos um objeto Filter e um objeto Page O primeiro objeto um filtro vazio o que ir provocar o retorno de todos os dados da tabela relacionada O segundo uma classe implementada pelo m dulo til do Demoiselle que permite a pagina o de resultados de consultas A pagina o uma t cnica muito til sem trocadilhos pois permite dividir o resultado de uma consulta em segmentos denominados p ginas e recuperar somente a que interessa naquele momento Ent o embora a consulta traga todos os resultados pelo fato do filtro n o especi ficar nenhuma condi o somente a p gina solicitada ser devolvida Made in Brazil No m todo consultar temos outra assinatura de find Neste caso o filtro recebe uma condi o que um teste de igualdade e somente ele passa do como argumento para find Nessa assinatura recebemos de volta uma cole o List da classe POJO Pessoa Listagem 2 Classe PessoaFilter package br gov demoiselle samples addressbook persistence dao filter import br gov component demoiselle hibernate filter Filter import br gov demoiselle samples addressbook bean Pessoa QSuppressWarnings serial public class PessoaFilter extends Filter publ
11. cCcColuna Padroniza o e Reuso de Aplica es Web com Demoiselle Framework Uma plataforma de desenvolvimento do governo para toda a sociedade Made in Brazil A padroniza o do uso de softwares desenvolvidos para o Governo Federal abre a possibilidade de novas empresas de desenvolvimento de software especialmente as de pequeno porte trabalharem para o governo Essa converg ncia digital oferece vantagens para a Uni o na medida em que permite que sistemas diferentes possam Fl vio Gomes da Silva Lisboa flavio lisboa serpro gov br bacharel em Ci ncia da Computa o e cursa a especializa o em Tecnologia Java na UTFPR Trabalha como analista de Desenvolvimento na Coordena o Estrat gica de Tecnologia do SERPRO em Curitiba Faz parte da equipe do projeto Demoiselle desde meados de 2008 documentando codificando elaborando testes e mais recentemente na constru o da comunidade em torno do software Tamb m realiza consultoria interna e treinamentos na empresa Io a emoiselle Framework essencialmente uma biblioteca central de E m dulos que atende s necessidades de infraestrutura b sica de uma aplica o web n o distribu da A ideia que ele seja o mais fracamente acoplado quanto poss vel de forma que atrav s do desenvolvimento orien tado a componentes as aplica es possam ser criadas e modificadas com substitui o ou acoplamento de novos m dulos sem que o n cle
12. cifica quem trata a inje o de depend ncia Os m dulos que implementam o Core que devem definir como a inje o ser realizada Na vers o 1 0 x do Demoiselle a inje o de depend ncia implementa da no m dulo Web usando AOP para detectar os pontos de integra o como j dissemos O que significa que outros tipos de aplica o que n o forem Web n o distribu das dever o implementar a inje o de de pend ncia em seus respectivos m dulos Isso algo que se espera que ocorra com o desenvolvimento colaborativo em comunidade Made in Brazil Contexto de mensagens O Demoiselle define uma abstra o de mensagens trocadas durante uma requisi o entre as camadas do sistema Isso realizado pelo se guinte trio e Interfaces IMessage abstra o da unidade de mensagem IMessageContext abstra o do contexto de mensagem e Enumerations Severity lista de severidades O m dulo Web implementa o contexto de mensagens com a classe WebMessageContext Na Listagem 9 temos um exemplo de adi o e recupera o de mensagens no contexto de seguran a que ser tratado a adiante Listagem 9 Manipula o de mensagens no Demoiselle ISecurityContext contextoMsg ContextLocator getInstance getSecurityContext public class MeuBC implements IBusinessController public void meu metodo l contextoMsg addMessage InfoMessage Mensagem public class MeuMB extends IViewController public v
13. e ORM ou mesmo fizer uso direto de JDBC Ou se quisermos reaproveitar a camada de neg cio em outra aplica o com outra implementa o de persist ncia N o h problema porque o con trolador de neg cio ignora isso completamente Para ele o que importa s o as interfaces n o as implementa es Listagem 5 M todo incluir de ContatoBC public Object insert Pessoa arg0 Object object super insert arg0 HibernateUtil getInstance getSession flush return object Camada de apresenta o Em uma analogia com a Idade M dia Ocidental esta camada representa o exterior de um castelo cercado por um fosso com gua e altas mura Ihas com arqueiros posicionados onde o nico meio de acesso a ponte levadi a O controle de navega o de p ginas ou telas realizado por esta camada bem como o controle sobre a entrada e sa da de dados da aplica o Made in Brazil e Padroniza o e Reuso de Aplica es Web com Demoiselle Framework ManagedBean O ator principal dessa camada o ManagedBean Em nosso exemplo criaremos a classe ContatoMB figura 10 A inst ncia do BusinessCon troller injetada pelo aspecto associado classe AbstractManagedBean Listagem 6 Listagem 6 Inje o de c digo em ContatoMB lnjection IContatoBC contatoBC o ari RS cs la do dd HAI Fp h nan a Trigo gt Prii Fiii bH T FH Figura 10 Camada de Apresenta o sem depend ncia da implementa o da Camada
14. e n o faz parte do framework arquitetural e sim de um componente desacoplado o Demoiselle Hibernate Filter O De moiselle traz uma classe chamada HibernateGenericDAO mas esta n o possui filtros implementados HibernateFilterGenericDAO a extens o de HibernateGenericDAO Esse um exemplo claro da arquitetura orientada a componentes O ma www mundoj com br Listagem 1 M todos de PessoaD O public PagedResult lt Pessoa gt listar Page page PessoaFilter f new PessoaFilter PagedResult lt Pessoa gt results find f page if results null amp amp results getTotalResults gt 0 return results return null public Pessoa consultar Pessoa pessoa String filtro PessoaFilter f new PessoaFilter Object value filtro filtro null PessoaFilter ID filtro value filtro equals PessoaFilter ID pessoa getld filtro equals PessoaFilter NOME pessoa getNome pessoa getApelido f addEquals filtro value List lt Pessoa gt results find f if results null amp amp results size gt 0 return results get 0 return null Perceba que o m todo listar dessa classe faz uso de uma inst ncia de PessoaFilter Listagem 2 Essa uma especializa o da classe Filter dis ponibilizada pelo componente Demoiselle Hibernate Filter Ela abstrai a constru o de consultas em SQL No construtor das filhas de Filter deve ser invocado o m todo setCl
15. efas ou servi os H no entanto al gumas opera es que permeiam todas as camadas como as transa es e as mensagens da aplica o H tamb m o controle da seguran a da aplica o que deve abarcar todas as camadas E finalmente existe a ne cessidade de tornar as camadas as mais independentes poss veis umas das outras de modo a permitir que cada uma constitua um componente reutiliz vel Para tal necess rio que n o haja depend ncia expl cita no c digo o que pode ser feito mediante o uso de programa o orientada a aspectos A orienta o a aspectos al m de conseguir evitar as repeti es de c di go intrat veis pela orienta o a objetos centralizando blocos de c digo e facilitando a manuten o permite que os trechos de c digo que geram depend ncia entre camadas sejam injetados somente em tempo de compila o No Demoiselle Framework a orienta o a aspectos reali zada pelo AspectJ uma extens o para a linguagem Java que inclui uma linguagem orientada a aspectos e um compilador Toda essa infraestrutura para as camadas tradicionais constitui o que chamamos de contextos Em uma representa o gr fica figura 2 os contextos podem ser vistos como camadas horizontais enquanto a im plementa o de MVC do Demoiselle constitui um conjunto de camadas transversais Figura 2 Camadas verticais e transversais do Demoiselle 10 www mundoj com br Entre os aspectos a destacar sobre a arquitetura
16. esponse 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 execu o Listagem 13 Cadastrando a A o de Redirecionamento no demoiselle properties Web Configuration framework demoiselle web redirect action MinhaRedirectAction01 framework demoiselle web redirect action MinhaRedirectAction02 framework demoiselle web redirect action MinhaRedirectAction03 Listagem 14 Configura o do web xml lt servlet gt lt servlet name gt WebRedireciServlet lt servlet name gt lt servlet class gt br gov framework demoiselle web redirect WebRedirectServlet lt servlet class gt lt servlet gt lt servlet mapping gt lt servlet name gt WebRedirectServlet lt servlet name gt lt url pattern gt redirect lt url pattern gt lt servlet mapping gt Listagem 15 Chamando a RedirectAction lt a href minhaAplicacao redirect MinhaActionParameter MinhaActionValue gt Chamar Minha Action lt a gt Muito mais que isso A ocorr ncia de mudan as deve ser a nica certeza que o desenvolvedor de sistemas tem sobre o futuro Por isso a preocupa o do Demoiselle em estar baseado em uma arquitetura de fraco acoplamento A arquitetura de fr
17. gura 1 Os componentes na verdade n o fazem parte do framework ar quitetural pois possuem um ciclo de vida independente Por isso mesmo n o geram depend ncia obrigat ria nas aplica es geradas e podem ser constru dos colaborativamente A constru o de componentes para o Demoiselle deve gerar diversos projetos vinculados a ele desenvolvidos pela comunidade A arquitetura de refer ncia proposta para o Demoiselle baseada em camadas Al m das cl ssicas camadas do modelo MVC Modelo Vis o e Controlador elas se distinguem como camadas de persist ncia tran sa o seguran a inje o de depend ncia e mensagem essas ltimas denominadas contextos como veremos adiante As tr s camadas do Demoiselle s o View amp Controller Business e Persistence Persistence corresponde letra M do MVC ou seja aos modelos a camada onde residem as classes POJO que podem ou n o ter anota es de mapeamento as classes DAO e os filtros de pesquisa View amp Controller a camada literalmente correspondente s letras V e C do MVC Nessa camada residem as classes respons veis pela interface gr fica da aplica o e pelo controle dos eventos O Demoiselle cria mais uma camada chamada Business onde reside a l gica de neg cios da aplica o M dulos e O m dulo Core cont m o conjunto de especifica es que d o base estrutural ao framework possibilitando padroniza o extens o e integra o entre as camadas
18. ic static final String ID id public static final String NOME nome public static final String APELIDO apelido public PessoaFilter setClazz Pessoa class lt Camada de neg cio Esta camada cont m a implementa o da l gica de neg cios da aplica o aqui que se concentra o maior esfor o do desenvolvedor Seguindo com nosso exemplo criaremos a classe ContatoBC a qual far uso das classes de persist ncia da se o anterior Como o Demoiselle trabalha com inje o de depend ncias n s sempre programamos para interfa ces Assim criamos inicialmente a interface IContatoBC e em seguida a implementamos na classe ContatoBC figura 9 muine one E aimera De JE EaD E SPP SD FDS Page SUA lt PSTDR q eta Tener Pros PaoadRepuk e Tpk ani gt Core PSD DA Pts Frita e depbsroes ros Perry vp E DRT DA O PRETENSO Wiig purihia PFEP P I L I I d fd SAS A te EEE Figura 9 Camada de Neg cios sem depend ncia da implementa o da Camada de Persist ncia Listagem 3 Inje o de c digo em ContatoBC lnjection IContatoDAO contatoDAO Padroniza o e Reuso de Aplica es Web com Demoiselle Framework Conforme vemos na Listagem 3 n o criamos inst ncia da classe Con tatoBC O pr prio Demoiselle por meio de um aspecto associado interface IBusinessController a qual estendida por IContatoBC injeta o c digo de instancia o em tempo de compila
19. ica podem participar de concorr ncias p blicas junto com grandes empresas pois todos ter o acesso ao Demoiselle e s tecnologias relacionadas sem qualquer custo O Governo Federal ganha pois a ampla concorr ncia tende a diminuir os custos de manuten o dos sistemas de informa o al m do que a pr pria plataforma gratuita o que o desonera em rela o a licen as A iniciativa privada ganha como um todo pois a padroniza o dos sistemas democratiza a concorr ncia evitando que um grupo de privilegiados tenha o mercado governo reservado para si Como diria o matem tico John Nash o melhor resultado vir quando todos do grupo fizerem o melhor para si mesmos e tamb m para o grupo como um todo Mas o Demoiselle extrapola as rela es comerciais entre governo e iniciativa privada Qualquer empresa pode utilizar a plataforma para de senvolver sistemas para qualquer cliente E esse cliente ter a seguran a de que n o depender do criador da aplica o para mant lo N o ficar ref m ou prisioneiro mas ter liberdade de tomar conta de seus sistemas de informa o e de implementar funcionalidades sem ter que esperar por pr ximas vers es Tudo o que algu m precisar para fazer manuten o em uma aplica o desenvolvida pelo Demoiselle ser conhecer os requisitos o framework e a arquitetura de refer ncia sendo que somente os primeiros ir o mudar a cada caso E apesar de inicialmente atender ao desenvolvimen
20. nessController abstra o para o objeto da camada de neg cio e IDAO abstra o para o objeto da camada de persist ncia e Facade abstra o para o objeto da camada de integra o de m dulos subsistemas A l gica de integra o entre camadas reside no pacote br govfra mework demoiselle core layer integration Ele utiliza padr es de projeto tais como Factory Proxy loC e inje o de depend ncias para manter a integra o de camadas com baixo n vel de acoplamento a fim de garan tir melhor manuten o escrita e legibilidade das classes representantes destas camadas No exemplo da agenda n s vimos a forma mais simples de inje o mas a anota o Injection pode receber argumentos o que torna flex vel a instancia o de objetos como vemos nas Listagens 7 e 8 Listagem 7 Exemplos de Inje o de um IBusinessController public class MeuMB implements IViewController ODlnjection private IMeuBC meuBC public class MeuMB implements IViewController lnjection name br gov escola business implementation AlunoBC private IMeuBC meuBC Listagem 8 Exemplos de Inje o de um IDAO public class MeuBC implements IBusinessController lnjection private IMeuDAO meuDAO public class MeuBC implements IBusinessController lnjection name br gov escola persistence dao implementation AlunoDAO private IMeuDAO meuDAO O que importante compreender que o m dulo Core espe
21. o central precise ser modificado Esse modelo de framework arquitetural permite fazer uma analogia com as montadoras de ve culos Os sistemas n o precisam ser fabricados desde o zero Eles podem ser montados a partir de uma infraestrutura gen rica o framework arquitetural a qual s o acoplados componentes que constituem a parte espec fica de cada sistema O objetivo deste artigo esclarecer como se d a constru o de uma aplica o web n o distribu da em Java usando essa biblioteca central de m dulos e um componente fornecido com o pr prio framework o qual n o depende dele Nosso estudo de caso ser uma pe quena agenda telef nica Isso dar uma vis o r pida e geral sobre o processo de desenvolvimento Em seguida destacaremos algumas caracter sticas do Demoiselle usando exemplos do projeto Demoiselle Samples O c digo fonte completo do projeto da agenda pode ser baixado no site da revista Mundoj ser ligados com muita facilidade e para o mercado porque o governo dir quais os padr es tecnol gicos ele pretende usar e ir disponibilizar a ferramenta Daremos um vislumbre da base dessa padroniza o a plataforma Demoiselle para Java aplica o web construindo uma pequena Demoiselle o nome da melhor aeronave constru da por Santos Dumont a qual influenciou significativamente a ind stria da avia o no come o do s culo XX Com ele Dumont realizou voos de at 18 km superiores aos 200m do 14 bis O Dem
22. o transacional que atua no in cio e no fim de cada a o Seu fun cionamento depende de um tipo definido seja Local ou JTA e Local indica que a aplica o ser respons vel pelo gerenciamen to da transa o e Distribu da JTA a aplica o depender de uma implementa o JTA dispon vel no cont iner Acionadores O Core define um mecanismo padronizado de a es a serem executadas pela aplica o Essas a es s o definidas como fun es estruturais da aplica o a saber e Carregamento de configura o e inicializa o de ambiente e etc Localizador de contextos Para que a aplica o possa usufruir dos contextos definidos no m dulo Core a exist ncia de um localizador fundamental A implementa o de cada contexto seguran a transa o mensagem etc dever utilizar o localizador como canal de acesso A estrutura do localizador e seu rela cionamento com os contextos podem ser vistos no diagrama de classes da figura 12 ma www mundoj com br Redirecionamento O m dulo Web implementa um mecanismo de redirecionamento base ado em URL que utilizado por componentes do Demoiselle como o Report mas pode tamb m ser utilizado pelas aplica es As Listagens 12 13 14e 15 mostram os passos para criar um redirecionamento Listagem 12 Criando uma IRedirectAction public class MinhaRedirectAction implements IRedirectAction private ServletRequest request private ServletResponse r
23. oid meu metodo l for IMessage imsg contextoMsg getMessages X addMessage imsg Tratamento de exce o O m dulo Core define uma exce o padr o para as aplica es Appli cationRuntimeException Esta exce o do tipo unchecked encapsula uma mensagem padronizada para facilitar o tratamento pelos m dulos do aplica o Listagem 10 Padroniza o e Reuso de Aplica es Web com Demoiselle Framework Listagem 10 Exemplos de tratamento de exce o com Demoiselle public void MetodoBC if Condi o para lan amento de exce o throw new ApplicationRuntimeException ErrorMessage ERRO 01 public void MetodoMB try MetodoBC catch ApplicationRuntimeException ex Trata exce o Contexto de seguran a O Demoiselle especifica um mecanismo padr o para acesso a dados de seguran a referentes autentica o e autoriza o A autoriza o feita por meio de pap is Listagem 11 Ele faz isso por meio do conjunto de APIs JAAS que permitem s aplica es escritas na plataforma J2EE usar servi os de controle de autentica o e autoriza o sem necessidade de ficarem dependentes dos mesmos O m dulo Web implementa o contexto de seguran a proposto no m dulo Core atrav s de um Singleton O contexto de seguran a inicia lizado a cada requisi o do usu rio com informa es de autentica o e autoriza o Listagem 11 Exemplo de uso do Contexto de Seguran a
24. oiselle foi o primeiro avi o fabricado em s rie no mundo e se notabilizou por ser um projeto de c digo livre pois Santos Dumont permitia a livre utiliza o adapta o e c pia de seu trabalho Segundo Paul Hoffman o idealismo de Dumont chegou a tal ponto que quando aconselharam no a patentear o Demoiselle por dizer ele estar sem dinheiro mesmo que ningu m acreditasse ele recusou Era seu presente para a humanidade disse que preferia terminar seus dias em um asilo de pobres que cobrar aos outros o privil gio de copiar sua inven o e de fazer experimentos a reos Para homenagear um dos brasileiros mais ilustres de todos os tempos conhecido como Pai da Avia o a plataforma de desenvolvimento de software baseada em software livre recebeu o nome de sua inven o copiada adaptada e que serviu de base para o desenvolvimento da avia o Made in Brazil e Padroniza o e Reuso de Aplica es Web com Demoiselle Framework lt Objetivos do Demoiselle Todos os sistemas comprados ou especialmente desenvolvidos para rg os federais dever o utilizar a plataforma Demoiselle As linguagens e outros aspectos que balizaram a elabora o da plataforma constituem padr es o que facilitar sua ado o n o s por parte dos respons veis pelas reas de TI nos rg os federais como tamb m pelas pr prias empresas fornecedoras de solu es para o governo Desse modo o Governo Federal n o precisar comprar p
25. r gov demoiselle samples seguindo a estrutura das figuras 4 e 5 Essa estrutura n o totalmente obrigat ria na verdade mas a refer ncia para implementa o com o Demoiselle N o mostraremos todo o c digo da aplica o neste artigo mas ele estar dispon vel para download no site da Mundo jasane reant Skxm T GE piima b dy defaufigacia e project G deraifipacka ge project iain Ei detaulipackage project bunmess Ei defavfpackage protect business implementado W defadfipackage projeci constar 8 ncia aa a a b Dhim b D rpt D demitebs properties Pibermado cig nmi oi iij properties d del aufipackage projeci message E delmifpacia e project persiianco di defaulipacia e preci persiba dao di defaulipackage project persistence do fitor i defadfipacka e projeci persisben o dao impismantabor dh defmuilipackage project L E defaufipacka e project us managedbaar Gi defaulpackage project ui repor p b p p b p b p b p b p Figura 4 Estrutura da pasta main T D META INF T p WEA MANIFE ST MF E T gt privo gt puig E igib gt pager gt pages M demoene tigib morri T E REHnNH A ptc iga Po Deget J SOM p ji Dra Siga Ti P anpa El ap wab mmi b S dya brass jip maa jap bo S gt bermeplgbes Da oba jip LeCUnty bigin psp D resburces gt templates Figura 5 Estrutura da pasta webapp POJO Ser o criadas duas classes POJO figura 7 referentes s tabelas do banco de dados
26. rodutos mas sim contratar servi os para os quais n o necessitar de treinamentos espec ficos A ado o do Demoiselle pretende automatizar e acelerar a integra o de sistemas aumentar a produtividade e eliminar o retrabalho As premissas que nortearam a elabora o da Demoiselle estabeleciam que a plataforma deveria ser extens vel f cil de usar est vel configur vel confi vel e ter sua documenta o publicada A inten o era atingir padroniza o redu o da curva de aprendizagem maior produtividade simplifica o dos processos reutiliza o de c digos e uma manuten o mais simplificada Outro benef cio esperado a economia financeira com o n o pagamento de licen as de software a expectativa de que haja redu o de 50 nos custos de opera o e manuten o dos sistemas Outro benef cio que pode ser apontado que o governo n o precisa se preocupar em fazer todo o desenvolvimento de seus sistemas podendo contratar a iniciativa privada controlando a tecnologia e ajustando a sua opera o depois Dessa forma ganham tanto o governo quanto as empresas privadas Apesar de ter sido criado inicialmente para isso o uso do Demoiselle Fra mework n o se limita a aplica es para o governo podendo ser utilizado livremente Qualquer pessoa pode baixar o c digo do Demoiselle criar apli ca es e vend las sem ter que investir em infraestrutura de software para desenvolvimento A arquitetura de acoplamen
27. s sobre o motivo de ter sido criado em vez de se adotar um j existente como padr o A inten o n o criar um produto para competir com outros frameworks mas estabelecer uma plataforma que imple mente o conceito de framework integrador que realiza a integra o entre v rios frameworks especialistas e garante a evolu o manutenibi lidade e compatibilidade entre cada um deles Como visto na figura 1 o Demoiselle n o reinventa a roda mas t o somente faz v rios frameworks especialistas consagrados pelo mercado trabalharem em un ssono Sua maior contribui o dar um direcionamento ao uso das tecnologias Made in Brazil e Padroniza o e Reuso de Aplica es Web com Demoiselle Framework O direcionamento tecnol gico importante para os prestadores de servi o pois permite que eles se especializem nas tecnologias que foram definidas como o padr o a ser utilizado Com a ado o de uma arquitetu ra de refer ncia e uma plataforma integradora de tecnologias um rg o do Governo Federal pode contratar uma empresa para desenvolver um sistema e depois ter a seguran a de contratar outra para dar manuten o Ou ainda se tiver uma rea de desenvolvimento de sistemas pode ele mesmo realizar manuten o Isso permite contrata es mais flex veis assim como licita es de ampla concorr ncia Dessa forma pequenas e m dias empresas ou at desenvolvedores ou consultores independentes que trabalhem como pessoa jur d
28. to de aplica es web n o distribu das o Demoiselle evoluir de modo a servir aplica es distribu das desktop e acess veis e embarcadas em dispositivos m veis ampliando o leque de oportunidades de neg cio e criando uma refer n cia para o uso de tecnologias baseadas em Java A qualidade claramente afetada pelo estabelecimento de uma comu nidade de usu rios da plataforma pois efetiva o reuso de componentes de software em vez da recria o dos mesmos O Demoiselle oferece uma oportunidade de agregar a experi ncia de diversas comunidades de software relativas a cada um dos frameworks especialistas e criar uma grande rede de colaborativa de desenvolvimento que consiga convergir seus objetivos e necessidades individuais de modo que todos possam se beneficiar Ambiente de desenvolvimento O ambiente compat vel para o desenvolvimento baseado no Demoiselle composto de JVM IDE e servidor de aplica o A JDK requerida a 1 5 x Como IDE recomendamos o Eclipse 3 3 2 JEE Developer Europa com o plugin AJDT 1 5 2 200804241330 Neste artigo usaremos o Eclipse Os servidores JEE com cont iner web 2 5 s o compat veis com o Demoiselle Isso inclui Tomcat 6 x e JBoss 4 2 x Iniciando Configure o Eclipse para trabalhar com o servidor escolhido e baixe os pacotes do framework Tanto eles quanto os demais artefatos que forem necess rios poder o ser baixados do site da Mundo Crie um projeto chamado addressbook no pacote b
29. to fraco orientada a compo nentes permite que qualquer desenvolvedor customize o Demoiselle para seus prop sitos particulares Ou seja o Serpro est fomentando a ind stria nacional de software ao oferecer para os desenvolvedores uma plataforma completa que integra diversas tecnologias e frameworks especialistas al m da experi ncia dos projetos em Java constru dos no Serpro presentes nos padr es adotados na codifica o Essa oportunidade de neg cio assegurada pelo fato do Demoiselle ser disponibilizado sob a licen a LGPL 3 Qualquer componente utilizado ou desenvolvido para ele deve ser compat vel com essa licen a Mas a LGPL ao contr rio da GPL n o obriga os softwares gerados com o Demoiselle a serem livres e abertos Essa flexibilidade d ao desenvolvedor a liberdade de esco lher se quer ou n o abrir suas aplica es permitindo a cria o de softwares propriet rios conforme a conveni ncia ou necessidade Ressaltando o aspecto da licen a apesar de ter sido feito para atender ao Governo Federal o Demoiselle um software livre e o seu desenvolvi mento feito de forma colaborativa Assim voc tamb m pode ajudar no desenvolvimento e na evolu o do Demoiselle reportando erros sugerindo melhorias submetendo c digo ajudando na documenta o traduzindo ou simplesmente dizendo que voc est usando o framework Arquitetura A estrutura geral do Demoiselle e suas depend ncias podem ser vistas na fi

Download Pdf Manuals

image

Related Search

Related Contents

  Chapter 3 How to Use the Terminal  User Manual - Eclipse Rackmount, Inc.  Bomba Sumergible e Inmersible Centrifugo Helicoidal  Specs  Fisher & Paykel IZONA HC90 User's Manual  British Telecom Rugged IP54  Manual easyONE (PDF file)  Installation Manual  Manual[DOWNLOAD]  

Copyright © All rights reserved.
Failed to retrieve file