SlideShare uma empresa Scribd logo
1 de 41
Baixar para ler offline
Instalando e
Utilizando o AppFuse


Sérgio Luiz Ruivace Cerqueira
     sergioruivace@gmail.com




    Renato Moraes de Sousa
       renatoms18@hotmail.com
AppFuse


   •   Programas Necessários:




28/2/2007              Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio   2
Configurando Variáveis de Ambiente

   • Entre nas propriedades do meu computador e vá para a aba
     avançado e clique no botão Variáveis de Ambiente.




28/2/2007         Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio   3
Configurando Variáveis de Ambiente

                                    • Deve-se criar 3 VAs:
                                    • ANT_HOME – Diretório onde
                                      esta instalado o ant
                                    • CATALINA_HOME - Diretório
                                      onde esta instalado o TomCat
                                    • JAVA_HOME - Diretório onde
                                      esta instalado o Java




28/2/2007    Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio           4
Configurando Variáveis de Ambiente

   • Agora adicione a variável PATH:
   • %JAVA_HOME%bin;%ANT_HOME%bin;%CATALINA_HOME%bin




28/2/2007           Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio   5
AppFuse

   •   1)Trocar os arquivos properties.xml, build.properties e colocar o JUnit na
       pasta lib do ant
   a) O JUnit.jar geralmente é encontrado no eclipse, pois este é um framework de
      teste que geralmente vem no plugin do eclipse.




28/2/2007                Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio              6
AppFuse

   b) Colocar na lib do ant.




28/2/2007                Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio   7
AppFuse


   •   c)Trocar o ip, senha e login do Banco de Dados!!!!!!
   •   Pasta-> appfuseproperties.xml




28/2/2007                  Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio   8
AppFuse

   •   Passos no Prompt do DOS
   •   2) Path de onde esta o appfuse e digite “ant new”




28/2/2007               Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio   9
Appfuse


                                                            Escolha
                                                            um nome
                                                            para sua
                                                            Base de
                                                            Dados




                                                            Escolha
                                                            um nome
                                                            para seu
                                                            package


                                                            Escolha o
                                                            framework a
                                                            ser utilizado
                                                            no nosso
                                                            caso o
                                                            Spring


28/2/2007   Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio              10
Appfuse

 •   3) Voltar um nível para usar o ant setup (obs: agora a imagem está mostrando
     outro projeto que foi criado) Passos no DOS.




28/2/2007               Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio               11
AppFuse

   •   3.1) entrar na pasta do novo projeto (ex. cd portinari)




28/2/2007                Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio   12
AppFuse

 •   3.2) Executar ant setup




28/2/2007                 Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio   13
AppFuse

   •   3) Existem duas maneiras de fazer, a primeira forma segue abaixo!
   •   >ant setup -Djsp.precompile=true;tstart;tlog        ->(este cmd constrói a aplicação,
       testa o tomcat e gera um log!)
   •   3.1) A segunda forma de fazer segue abaixo!
   •   > ant setup         ->(constrói a aplicação)




28/2/2007                 Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio                        14
AppFuse

 •   4) importar para o eclipse a aplicação criada. Buscando do seu path onde foi criado.




28/2/2007                  Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio                    15
AppFuse

 •   Abra o browser e digite: http://localhost:8080/<nome_da_aplicação>.Este é o exemplo
     puzzlestyle




28/2/2007                Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio                     16
Appfuse

   • Para configurar o ant no eclipse vá em window/preferences
     clique em ant e Runtime.




28/2/2007          Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio   17
Appfuse

   • Selecione Ant Home Entires(Default) e aperte o botão add External
     Jars. Selecione os JARs que estão na pasta lib do ant que VOCÊ
     INSTALOU e escolha open. Confirme e reinicie o eclipse




28/2/2007            Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio       18
Appfuse

  • Estrutura de diretórios usando o spring:
  • Pacotes build são as classes compiladas.
  • Pacotes src são as classes do codigo
    fonte.
  • Pacotes test são as classes de teste
    unitário.
  • A pasta extras contem componentes que
    o appfuse adicionou para facilitar a
    utilização do mesmo.
  • Na pasta lib ficam todas as bibliotecas
    que serão utilizadas no projeto.
  • Na pasta web estão as paginas jsp,
    alguns arquivos de configuração, scripts
    entre outros.


28/2/2007            Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio   19
Adicionando um pojo
   • Crie uma classe no pacote org.appfuse.model dentro do
     src/dao, ela deve extender o BaseObject do appfuse.




28/2/2007         Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio   20
Adicionando um pojo

   • Construa a classe e mapeie com o XDoclet




28/2/2007         Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio   21
Adicionando um pojo

   • Para mais informações sobre configuração via xdoclet entre no site
     http://xdoclet.sourceforge.net/xdoclet/tags/hibernate-tags.html
   • Alguns exemplos:
   /**
         * @hibernate.property column=quot;codigoquot; not-null=quot;falsequot; length=quot;10quot;
   */
   •     Mapeando atributo/coluna
   /**
   * @hibernate.class table=quot;contaquot;
   */
   •     Mapeando classe/tabela
   /**
   * @hibernate.id column=quot;produto_idquot; generator-class=quot;incrementquot; unsaved-value=quot;nullquot;
   */
   •     Mapeando atributo/coluna que incrementa automaticamente
   /**
         * @hibernate.many-to-one column=quot;fk_agencia_idquot; not-null=quot;falsequot;
   */
   •     Mapeando muitos para um


28/2/2007                      Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio              22
Adicionando um pojo

   • Adicione o build.xml dentro do extras/appgen a tela de
     visualização do ant no eclipse




28/2/2007          Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio   23
Adicionando um pojo

   • Execute o install-detailed
   • Em seguida ira aparecer uma tela perguntando se as classes
     serão criadas a partir de um pojo ou uma tabela, escreva
     pojo e aperte ok
   • Depois aparecerá outra tela perguntando o nome do pojo.
     Digite o nome e aperte ok
   • Aparecerá mais uma tela mas não a trataremos. Logo
     aperte ok sem digitar nada.




28/2/2007           Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio   24
Adicionando um pojo

   • Agora selecione seu projeto e aperte F5, note que irão aparecer
     algumas classes compostas pelo nome do seu pojo em alguns
     pacotes como o Dao, o service ...
   • Adicione ao applicationContext-hibernate.xml o caminho do pojo
     mais o nome seguido de .hbm.xml




28/2/2007            Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio     25
Adicionando um pojo

   • Apague a linha <property name=quot;validatorquot;
     ref=quot;beanValidatorquot;/> no action-servlet.xml do bean com o
     nome = “nomeDoPojoFormController”.
   • Execute o setup do projeto este irá criar o banco de acordo
     com o mapeamento.
   • Agora é só entrar no site do projeto e conferir as paginas
     que foram criadas para apresentação dos objetos e cadastro




28/2/2007          Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio   26
Appfuse

   • Toda vez que for executado o setup do build do projeto
     serão apagados todos os valores contidos nas tabelas do
     banco, porem as colunas e as tabelas não serão apagadas e
     sim modificadas. Ex: caso seja criada uma tabela com nome
     pessoa e posteriormente mude para cliente e execute o
     setup, no banco terá uma tabela pessoa e outra cliente. A
     tabela pessoa deve ser apagada manualmente.
   • O install-detailed do build do appgen sempre cria classes
     pro Dao, pro service, pra web e as paginas. Caso já existam
     outras com o mesmo nome, elas serão apagadas e geradas
     outras de acordo com o padrão do appfuse.
   • É recomendável antes de utilizar setup do build do projeto,
     executar o clean e o undeploy no mesmo build. Caso de um
     erro imprevisível execute os dois também.

28/2/2007          Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio   27
Appfuse

   • Quando for feita alguma alteração na parte web do projeto,
     pode-se executar o deploy-web. Ele é muito mais rápido
     que o deploy comum e geralmente não precisa reiniciar o
     tomcat para visualizar na pagina.
   • Caso queira inserir dados que sempre serão carregados no
     banco(pois todas as vezes que se executa o setup os dados
     são apagados) pode-se alterar o sample-data.xml na pasta
     metadata/sql ele é um xml que contem dados básicos ou
     para teste, inserir os dados é só seguir os que já existirem
     lá.
   • Caso queria inserir os dados existentes no saple-data.xml
     sem executar o setup é so executar o db-load



28/2/2007          Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio    28
Appfuse

                       • A pasta lib contem muitas
                         bibliotecas que foram incorporadas
                         pelo appfuse e podem ser utilizadas
                         no projeto.
                       • Como a dwr utilizada para
                         implementar ajax nas paginas.
                       • Junit utilizada para realizar testes no
                         projeto.
                       • Displaytag uma das tags mais
                         usadas pelo appfuse, esta quando
                         recebe uma lista apresenta tabelas
                         muito versáteis e de fácil utilização
                         nos jsps.


28/2/2007   Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio        29
Appfuse

   • O seu projeto é baseado em outras bibliotecas ai existentes
     (ou seja se elas saírem daí vão fazer um estrago danado!)
     como hibernate, spring, a propria displaytag...
   • Para inserir uma nova biblioteca basta colocá-la nessa pasta
     e em seguida alterar o arquivo lib.properties




28/2/2007          Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio    30
Appfuse

   • A pasta web contem muitas informações que serão muito
     úteis para o projeto.

       • Nela estão todas as
         paginas inclusive as de
         erro.
       • Esta o mapeamento de
         paginas e controladores.
       • Imagens utilizadas no
         projeto
       • Scripts que o appfuse
         adotou.
       • Decoradores, arquivos .css
       • Etc
28/2/2007           Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio   31
Appfuse

   • Na pasta common da pasta web, estão jsps que estão
     inclusos em todas as paginas (comuns a todos) como o
     cabeçalho, o rodapé e o menu.
   • Nesta pasta tambem esta o jsp que inclui todas as taglibs
     existentes no projeto. Esse jsp é inserido pelo appfuse
     quando ele gera automaticamente uma pagina. Caso não
     seja gerado adicione esta tag com o comando no inicio do
     jsp:<%@ include file=quot;/common/taglibs.jspquot;%>
   • Com ela pode-se usar a core do Java, a display tag, tags de
     SQL e de internacionalização e caso queira criar uma tag
     basta criar uma classe Java no pacote src/web taglib
     extendendo tagSupport que ela estará incluída nesse jsp.



28/2/2007          Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio   32
Appfuse

   • Na pasta decorators tem apenas o default.jsp. Ele é
     responsável por adicionar os scripts e os arquivos .css. Caso
     queira adicionar mais algum basta colocar nesse jsp.
   • Na pasta pages, estão as paginas que serão utilizadas no
     projeto.
   • Com o crescimento do projeto tende a crescer muito essa
     pasta.
   • O padrão utilizado pelo appfuse é xxxList.jsp para
     apresentar todos os objetos de um certo tipo. E xxxForm.jsp
     para cadastro de um novo, edição de um já existente, nessa
     edição que ele pode ser deletado.




28/2/2007          Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio     33
Appfuse

   • Na pasta scripts estão os arquivos de javascript. Têm
     muitos arquivos úteis para a apresentação do projeto.
   • Um deles é o calendar.js ele facilita a entrada de dados tipo
     data, de uma forma bem intuitiva para o usuário. Reduzindo
     possibilidades de falha na coleta desses dados.
   • Outros são o prototype.js e o scriptaculous.js eles tem
     scripts que facilitam a programação em javascript e alem
     disso têm ferramentas para a utilização de ajax, como o
     objeto Ajax.Updater do prototype e o Ajax.Autocompleter do
     scriptaculous. Essas ferramentas são altamente
     recomendadas pois agilizam no processo de inserção de
     dados e dão uma aparência desktop para o projeto.



28/2/2007          Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio     34
Appfuse

   • Na pasta styles estão os arquivos .css basicos e uns estilos
     que podem ser escolhidos.
   • Com a alteração de um arquivo desses pode-se mudar
     completamente a visualização da pagina sem precisar
     alterar o jsp.
   • Na pasta WEB-INF estão basicamente arquivos de
     configuração.
   • No arquivo action-servlet.xml está o mapeamento das
     paginas e controladores, que é melhor explicado na próxima
     figura.




28/2/2007           Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio   35
Appfuse

                       Contem o endereço
                       nomeProjeto/editProduto.html




  No action-servlet este endereço esta mapeado assim:
  <prop key=quot;/editProduto.htmlquot;>produtoFormController</prop>




        No action-servlet o bean produtoFormController está assim:
        <bean id=quot;produtoFormControllerquot; class=quot;org.appfuse.webapp.action.ProdutoFormControllerquot; autowire=quot;byNamequot;>
            <!--<property name=quot;validatorquot; ref=quot;beanValidatorquot;/>-->
            <property name=quot;formViewquot; value=quot;produtoFormquot;/>
            <property name=quot;successViewquot; value=quot;redirect:produtos.htmlquot;/>
          </bean>



                                                      Classe que controla a pagina



28/2/2007                      Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio                                     36
Appfuse

   • O arquivo dwr.xml é onde deve-se declarar as classes para
     usar Ajax.
   • Declarando um objeto Produto, ele poderá ser utilizado em
     javascrip e seus metodos.
   <allow>
   <convert converter=quot;beanquot; match=quot;org.appfuse.model.*quot; />
   <create creator=quot;springquot; javascript=quot;DwrManagerquot;>
   <param name=quot;beanNamequot; value=quot;dwrManagerquot;/>
   </create>
   </allow>



   • Este é um exemplo de objeto adicionado, em javascript poderá ser
     utilizado o objeto DwrManger e todos os seus metodos como:
   DwrManager.incluirFase(idTabela, orc, _resposta);




28/2/2007                   Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio   37
Appfuse

   • No arquivo menu-config.xml será configurado a disposição
     do menu, como abas e sub-abas

    <Menu name=quot;FileUploadquot; title=quot;menu.selectFilequot; description=quot;File Uploadquot; width=quot;100quot; page=quot;/selectFile.htmlquot;
        roles=quot;admin,userquot;/>

   • É um menu sem sub intens
    <Menu name=quot;AdminMenuquot; title=quot;menu.adminquot; description=quot;Admin Menuquot; roles=quot;adminquot; width=quot;120quot;
       page=quot;/users.htmlquot;>
            <Item name=quot;ViewUsersquot; title=quot;menu.admin.usersquot; page=quot;/users.htmlquot;/>
            <Item name=quot;ActiveUsersquot; title=quot;mainMenu.activeUsersquot; page=quot;/activeUsers.htmlquot;/>
            <Item name=quot;ReloadContextquot; title=quot;menu.admin.reloadquot; page=quot;/reload.htmlquot;/>
            <Item name=quot;FlushCachequot; title=quot;menu.flushCachequot; page=quot;/flushCache.htmlquot;/>
            <Item name=quot;Clickstreamquot; title=quot;menu.clickstreamquot; page=quot;/clickstreams.jspquot;/>
    </Menu>

   • É um menu com sub-itens




28/2/2007                          Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio                                    38
Appfuse

   • Na pasta classes dentro da pasta WEB-INF estão alguns
     arquivos de configuração e os arquivos ApplicationResources
   • Esses são os arquivos utilizados para a internacionalização
   • De acordo com a língua escolhida no browser o programa
     irá escolher um desses arquivos para mostrar.
   • Caso não tenha a configuração em uma língua o programa
     buscará na padrão se não encontrar na padrão o programa
     buscará em qualquer outra.Ex:
   produto.id=Id
   Poderia ser
   produto.id=Identificador




28/2/2007          Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio   39
Appfuse

   • Hierarquia de chamadas
   • Dao -> DaoHibernate

            Utiliza

   • Service(manager) -> ServiceImpl(managerImpl)




   INTERFACES(FACEDE)                        IMPLEMENTAÇÃO


                 Utiliza


            CONTROLLER


28/2/2007             Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio   40
AppFuse

 •   Agradecimentos em especial:


 •   Rodrigos Paes Phd.


 • Bibliografia
 • https://appfuse.dev.java.net/
 • http://xdoclet.sourceforge.net/xdoclet/tags/hibernate-tags.html




28/2/2007                 Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio   41

Mais conteúdo relacionado

Destaque

Social media Tool for journalists
Social media Tool for journalistsSocial media Tool for journalists
Social media Tool for journalistsSungkyu Lee
 
que significa ser pobre
que significa ser pobreque significa ser pobre
que significa ser pobreconillet
 
Identifying & Integrating Digital Skill Sets into Media Organizations
Identifying & Integrating Digital Skill Sets into Media OrganizationsIdentifying & Integrating Digital Skill Sets into Media Organizations
Identifying & Integrating Digital Skill Sets into Media OrganizationsDan McCarthy
 
BUSCD 8: SxSW and Google Re-Brief
BUSCD 8: SxSW and Google Re-BriefBUSCD 8: SxSW and Google Re-Brief
BUSCD 8: SxSW and Google Re-Briefedward boches
 
Revenue Models &amp; Legal Risks In 3 Screen Convergence Valuations
Revenue Models &amp; Legal Risks In 3 Screen Convergence ValuationsRevenue Models &amp; Legal Risks In 3 Screen Convergence Valuations
Revenue Models &amp; Legal Risks In 3 Screen Convergence ValuationsJames C. Roberts III
 
Grid Utility Technology Drivers - Enabling New Business Models, Siggraph06
Grid Utility Technology Drivers - Enabling New Business Models, Siggraph06Grid Utility Technology Drivers - Enabling New Business Models, Siggraph06
Grid Utility Technology Drivers - Enabling New Business Models, Siggraph06Paul Kamp
 
культура 18 века
культура 18 векакультура 18 века
культура 18 векаguest7e683c
 
Mensajería SMS en el Sector Público
Mensajería SMS en el Sector PúblicoMensajería SMS en el Sector Público
Mensajería SMS en el Sector PúblicoOriol Ros i Mas
 
Social Identity Hierarchies
Social Identity HierarchiesSocial Identity Hierarchies
Social Identity HierarchiesDan McCarthy
 
BUSCD 10: Invent something
BUSCD 10: Invent somethingBUSCD 10: Invent something
BUSCD 10: Invent somethingedward boches
 

Destaque (16)

Sp1u3v
Sp1u3vSp1u3v
Sp1u3v
 
Social media Tool for journalists
Social media Tool for journalistsSocial media Tool for journalists
Social media Tool for journalists
 
que significa ser pobre
que significa ser pobreque significa ser pobre
que significa ser pobre
 
Identifying & Integrating Digital Skill Sets into Media Organizations
Identifying & Integrating Digital Skill Sets into Media OrganizationsIdentifying & Integrating Digital Skill Sets into Media Organizations
Identifying & Integrating Digital Skill Sets into Media Organizations
 
BUSCD 8: SxSW and Google Re-Brief
BUSCD 8: SxSW and Google Re-BriefBUSCD 8: SxSW and Google Re-Brief
BUSCD 8: SxSW and Google Re-Brief
 
Revenue Models &amp; Legal Risks In 3 Screen Convergence Valuations
Revenue Models &amp; Legal Risks In 3 Screen Convergence ValuationsRevenue Models &amp; Legal Risks In 3 Screen Convergence Valuations
Revenue Models &amp; Legal Risks In 3 Screen Convergence Valuations
 
Şaşırırım
ŞaşırırımŞaşırırım
Şaşırırım
 
Grid Utility Technology Drivers - Enabling New Business Models, Siggraph06
Grid Utility Technology Drivers - Enabling New Business Models, Siggraph06Grid Utility Technology Drivers - Enabling New Business Models, Siggraph06
Grid Utility Technology Drivers - Enabling New Business Models, Siggraph06
 
Tevhid Nuru
Tevhid NuruTevhid Nuru
Tevhid Nuru
 
культура 18 века
культура 18 векакультура 18 века
культура 18 века
 
Best Friend
Best FriendBest Friend
Best Friend
 
Mensajería SMS en el Sector Público
Mensajería SMS en el Sector PúblicoMensajería SMS en el Sector Público
Mensajería SMS en el Sector Público
 
Peak10 Solution Stack
Peak10 Solution StackPeak10 Solution Stack
Peak10 Solution Stack
 
sitNL 2014 welcome
sitNL 2014 welcome sitNL 2014 welcome
sitNL 2014 welcome
 
Social Identity Hierarchies
Social Identity HierarchiesSocial Identity Hierarchies
Social Identity Hierarchies
 
BUSCD 10: Invent something
BUSCD 10: Invent somethingBUSCD 10: Invent something
BUSCD 10: Invent something
 

Semelhante a Instalando e Utilizando o AppFuse

Tutorial poke-tool
Tutorial poke-toolTutorial poke-tool
Tutorial poke-toolunifesptk
 
Automação no ambientAutomação no ambiente de desenvolvimento com Maven e ANT
Automação no ambientAutomação no ambiente de desenvolvimento com Maven e ANTAutomação no ambientAutomação no ambiente de desenvolvimento com Maven e ANT
Automação no ambientAutomação no ambiente de desenvolvimento com Maven e ANTelliando dias
 
Minicurso Play Framework - Tão fácil que nem parece Java
Minicurso Play Framework - Tão fácil que nem parece JavaMinicurso Play Framework - Tão fácil que nem parece Java
Minicurso Play Framework - Tão fácil que nem parece JavaWandesson Soares
 
Integração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlIntegração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlManuel Lemos
 
Integracao Contínua com CruiseControl e phpUnderControl
Integracao Contínua com CruiseControl e phpUnderControlIntegracao Contínua com CruiseControl e phpUnderControl
Integracao Contínua com CruiseControl e phpUnderControlDiego Tremper
 
JasperReports Tecnicas de geracao_de_relatorios1
JasperReports  Tecnicas de geracao_de_relatorios1JasperReports  Tecnicas de geracao_de_relatorios1
JasperReports Tecnicas de geracao_de_relatorios1Sliedesharessbarbosa
 
Integração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlIntegração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlDiego Tremper
 
Oficina PostgreSQL Básico Latinoware 2012
Oficina PostgreSQL Básico Latinoware 2012Oficina PostgreSQL Básico Latinoware 2012
Oficina PostgreSQL Básico Latinoware 2012Fabrízio Mello
 
Manual Nuxeo DM 5.4.2 para os profissionais da infomação
Manual Nuxeo DM 5.4.2 para os profissionais da infomaçãoManual Nuxeo DM 5.4.2 para os profissionais da infomação
Manual Nuxeo DM 5.4.2 para os profissionais da infomaçãoSérgio Lampert
 
Advanced live testing em tempo real
Advanced live testing em tempo realAdvanced live testing em tempo real
Advanced live testing em tempo realiMasters
 
Mercurianos - .Net na Prática - Da instalação até o debug da nossa API em um ...
Mercurianos - .Net na Prática - Da instalação até o debug da nossa API em um ...Mercurianos - .Net na Prática - Da instalação até o debug da nossa API em um ...
Mercurianos - .Net na Prática - Da instalação até o debug da nossa API em um ...Eliel Simoncelo
 
Utilizando o samba como servidor de domínio primário
Utilizando o samba como servidor de domínio primárioUtilizando o samba como servidor de domínio primário
Utilizando o samba como servidor de domínio primárioCarlos Melo
 
Aumente sua produtividade com Spring Boot
Aumente sua produtividade com Spring BootAumente sua produtividade com Spring Boot
Aumente sua produtividade com Spring BootFernando Boaglio
 
Integração Contínua com Cruise Control e phpUnderControl
Integração Contínua com Cruise Control e phpUnderControlIntegração Contínua com Cruise Control e phpUnderControl
Integração Contínua com Cruise Control e phpUnderControlDiego Tremper
 
Spring framework 2.5
Spring framework 2.5Spring framework 2.5
Spring framework 2.5Diego Pacheco
 

Semelhante a Instalando e Utilizando o AppFuse (19)

Tutorial poke-tool
Tutorial poke-toolTutorial poke-tool
Tutorial poke-tool
 
Php 07 Cakephp
Php 07 CakephpPhp 07 Cakephp
Php 07 Cakephp
 
Automação no ambientAutomação no ambiente de desenvolvimento com Maven e ANT
Automação no ambientAutomação no ambiente de desenvolvimento com Maven e ANTAutomação no ambientAutomação no ambiente de desenvolvimento com Maven e ANT
Automação no ambientAutomação no ambiente de desenvolvimento com Maven e ANT
 
Minicurso Play Framework - Tão fácil que nem parece Java
Minicurso Play Framework - Tão fácil que nem parece JavaMinicurso Play Framework - Tão fácil que nem parece Java
Minicurso Play Framework - Tão fácil que nem parece Java
 
Integração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlIntegração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControl
 
Integracao Contínua com CruiseControl e phpUnderControl
Integracao Contínua com CruiseControl e phpUnderControlIntegracao Contínua com CruiseControl e phpUnderControl
Integracao Contínua com CruiseControl e phpUnderControl
 
JasperReports Tecnicas de geracao_de_relatorios1
JasperReports  Tecnicas de geracao_de_relatorios1JasperReports  Tecnicas de geracao_de_relatorios1
JasperReports Tecnicas de geracao_de_relatorios1
 
Integração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlIntegração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControl
 
Oficina PostgreSQL Básico Latinoware 2012
Oficina PostgreSQL Básico Latinoware 2012Oficina PostgreSQL Básico Latinoware 2012
Oficina PostgreSQL Básico Latinoware 2012
 
Manual Nuxeo DM 5.4.2 para os profissionais da infomação
Manual Nuxeo DM 5.4.2 para os profissionais da infomaçãoManual Nuxeo DM 5.4.2 para os profissionais da infomação
Manual Nuxeo DM 5.4.2 para os profissionais da infomação
 
Advanced live testing em tempo real
Advanced live testing em tempo realAdvanced live testing em tempo real
Advanced live testing em tempo real
 
Mercurianos - .Net na Prática - Da instalação até o debug da nossa API em um ...
Mercurianos - .Net na Prática - Da instalação até o debug da nossa API em um ...Mercurianos - .Net na Prática - Da instalação até o debug da nossa API em um ...
Mercurianos - .Net na Prática - Da instalação até o debug da nossa API em um ...
 
Utilizando o samba como servidor de domínio primário
Utilizando o samba como servidor de domínio primárioUtilizando o samba como servidor de domínio primário
Utilizando o samba como servidor de domínio primário
 
Aumente sua produtividade com Spring Boot
Aumente sua produtividade com Spring BootAumente sua produtividade com Spring Boot
Aumente sua produtividade com Spring Boot
 
Integração Contínua com Cruise Control e phpUnderControl
Integração Contínua com Cruise Control e phpUnderControlIntegração Contínua com Cruise Control e phpUnderControl
Integração Contínua com Cruise Control e phpUnderControl
 
Nossa experiência com TDD
Nossa experiência com TDDNossa experiência com TDD
Nossa experiência com TDD
 
PHP FrameWARks - FISL
PHP FrameWARks - FISLPHP FrameWARks - FISL
PHP FrameWARks - FISL
 
Puppet overview
Puppet overviewPuppet overview
Puppet overview
 
Spring framework 2.5
Spring framework 2.5Spring framework 2.5
Spring framework 2.5
 

Mais de elliando dias

Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slideselliando dias
 
Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScriptelliando dias
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structureselliando dias
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de containerelliando dias
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agilityelliando dias
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Librarieselliando dias
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!elliando dias
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Webelliando dias
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduinoelliando dias
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorceryelliando dias
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Designelliando dias
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makeselliando dias
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.elliando dias
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebookelliando dias
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Studyelliando dias
 

Mais de elliando dias (20)

Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slides
 
Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScript
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structures
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de container
 
Geometria Projetiva
Geometria ProjetivaGeometria Projetiva
Geometria Projetiva
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agility
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Libraries
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!
 
Ragel talk
Ragel talkRagel talk
Ragel talk
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Web
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduino
 
Minicurso arduino
Minicurso arduinoMinicurso arduino
Minicurso arduino
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorcery
 
Rango
RangoRango
Rango
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Design
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makes
 
Hadoop + Clojure
Hadoop + ClojureHadoop + Clojure
Hadoop + Clojure
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebook
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Study
 

Instalando e Utilizando o AppFuse

  • 1. Instalando e Utilizando o AppFuse Sérgio Luiz Ruivace Cerqueira sergioruivace@gmail.com Renato Moraes de Sousa renatoms18@hotmail.com
  • 2. AppFuse • Programas Necessários: 28/2/2007 Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio 2
  • 3. Configurando Variáveis de Ambiente • Entre nas propriedades do meu computador e vá para a aba avançado e clique no botão Variáveis de Ambiente. 28/2/2007 Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio 3
  • 4. Configurando Variáveis de Ambiente • Deve-se criar 3 VAs: • ANT_HOME – Diretório onde esta instalado o ant • CATALINA_HOME - Diretório onde esta instalado o TomCat • JAVA_HOME - Diretório onde esta instalado o Java 28/2/2007 Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio 4
  • 5. Configurando Variáveis de Ambiente • Agora adicione a variável PATH: • %JAVA_HOME%bin;%ANT_HOME%bin;%CATALINA_HOME%bin 28/2/2007 Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio 5
  • 6. AppFuse • 1)Trocar os arquivos properties.xml, build.properties e colocar o JUnit na pasta lib do ant a) O JUnit.jar geralmente é encontrado no eclipse, pois este é um framework de teste que geralmente vem no plugin do eclipse. 28/2/2007 Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio 6
  • 7. AppFuse b) Colocar na lib do ant. 28/2/2007 Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio 7
  • 8. AppFuse • c)Trocar o ip, senha e login do Banco de Dados!!!!!! • Pasta-> appfuseproperties.xml 28/2/2007 Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio 8
  • 9. AppFuse • Passos no Prompt do DOS • 2) Path de onde esta o appfuse e digite “ant new” 28/2/2007 Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio 9
  • 10. Appfuse Escolha um nome para sua Base de Dados Escolha um nome para seu package Escolha o framework a ser utilizado no nosso caso o Spring 28/2/2007 Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio 10
  • 11. Appfuse • 3) Voltar um nível para usar o ant setup (obs: agora a imagem está mostrando outro projeto que foi criado) Passos no DOS. 28/2/2007 Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio 11
  • 12. AppFuse • 3.1) entrar na pasta do novo projeto (ex. cd portinari) 28/2/2007 Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio 12
  • 13. AppFuse • 3.2) Executar ant setup 28/2/2007 Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio 13
  • 14. AppFuse • 3) Existem duas maneiras de fazer, a primeira forma segue abaixo! • >ant setup -Djsp.precompile=true;tstart;tlog ->(este cmd constrói a aplicação, testa o tomcat e gera um log!) • 3.1) A segunda forma de fazer segue abaixo! • > ant setup ->(constrói a aplicação) 28/2/2007 Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio 14
  • 15. AppFuse • 4) importar para o eclipse a aplicação criada. Buscando do seu path onde foi criado. 28/2/2007 Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio 15
  • 16. AppFuse • Abra o browser e digite: http://localhost:8080/<nome_da_aplicação>.Este é o exemplo puzzlestyle 28/2/2007 Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio 16
  • 17. Appfuse • Para configurar o ant no eclipse vá em window/preferences clique em ant e Runtime. 28/2/2007 Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio 17
  • 18. Appfuse • Selecione Ant Home Entires(Default) e aperte o botão add External Jars. Selecione os JARs que estão na pasta lib do ant que VOCÊ INSTALOU e escolha open. Confirme e reinicie o eclipse 28/2/2007 Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio 18
  • 19. Appfuse • Estrutura de diretórios usando o spring: • Pacotes build são as classes compiladas. • Pacotes src são as classes do codigo fonte. • Pacotes test são as classes de teste unitário. • A pasta extras contem componentes que o appfuse adicionou para facilitar a utilização do mesmo. • Na pasta lib ficam todas as bibliotecas que serão utilizadas no projeto. • Na pasta web estão as paginas jsp, alguns arquivos de configuração, scripts entre outros. 28/2/2007 Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio 19
  • 20. Adicionando um pojo • Crie uma classe no pacote org.appfuse.model dentro do src/dao, ela deve extender o BaseObject do appfuse. 28/2/2007 Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio 20
  • 21. Adicionando um pojo • Construa a classe e mapeie com o XDoclet 28/2/2007 Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio 21
  • 22. Adicionando um pojo • Para mais informações sobre configuração via xdoclet entre no site http://xdoclet.sourceforge.net/xdoclet/tags/hibernate-tags.html • Alguns exemplos: /** * @hibernate.property column=quot;codigoquot; not-null=quot;falsequot; length=quot;10quot; */ • Mapeando atributo/coluna /** * @hibernate.class table=quot;contaquot; */ • Mapeando classe/tabela /** * @hibernate.id column=quot;produto_idquot; generator-class=quot;incrementquot; unsaved-value=quot;nullquot; */ • Mapeando atributo/coluna que incrementa automaticamente /** * @hibernate.many-to-one column=quot;fk_agencia_idquot; not-null=quot;falsequot; */ • Mapeando muitos para um 28/2/2007 Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio 22
  • 23. Adicionando um pojo • Adicione o build.xml dentro do extras/appgen a tela de visualização do ant no eclipse 28/2/2007 Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio 23
  • 24. Adicionando um pojo • Execute o install-detailed • Em seguida ira aparecer uma tela perguntando se as classes serão criadas a partir de um pojo ou uma tabela, escreva pojo e aperte ok • Depois aparecerá outra tela perguntando o nome do pojo. Digite o nome e aperte ok • Aparecerá mais uma tela mas não a trataremos. Logo aperte ok sem digitar nada. 28/2/2007 Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio 24
  • 25. Adicionando um pojo • Agora selecione seu projeto e aperte F5, note que irão aparecer algumas classes compostas pelo nome do seu pojo em alguns pacotes como o Dao, o service ... • Adicione ao applicationContext-hibernate.xml o caminho do pojo mais o nome seguido de .hbm.xml 28/2/2007 Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio 25
  • 26. Adicionando um pojo • Apague a linha <property name=quot;validatorquot; ref=quot;beanValidatorquot;/> no action-servlet.xml do bean com o nome = “nomeDoPojoFormController”. • Execute o setup do projeto este irá criar o banco de acordo com o mapeamento. • Agora é só entrar no site do projeto e conferir as paginas que foram criadas para apresentação dos objetos e cadastro 28/2/2007 Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio 26
  • 27. Appfuse • Toda vez que for executado o setup do build do projeto serão apagados todos os valores contidos nas tabelas do banco, porem as colunas e as tabelas não serão apagadas e sim modificadas. Ex: caso seja criada uma tabela com nome pessoa e posteriormente mude para cliente e execute o setup, no banco terá uma tabela pessoa e outra cliente. A tabela pessoa deve ser apagada manualmente. • O install-detailed do build do appgen sempre cria classes pro Dao, pro service, pra web e as paginas. Caso já existam outras com o mesmo nome, elas serão apagadas e geradas outras de acordo com o padrão do appfuse. • É recomendável antes de utilizar setup do build do projeto, executar o clean e o undeploy no mesmo build. Caso de um erro imprevisível execute os dois também. 28/2/2007 Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio 27
  • 28. Appfuse • Quando for feita alguma alteração na parte web do projeto, pode-se executar o deploy-web. Ele é muito mais rápido que o deploy comum e geralmente não precisa reiniciar o tomcat para visualizar na pagina. • Caso queira inserir dados que sempre serão carregados no banco(pois todas as vezes que se executa o setup os dados são apagados) pode-se alterar o sample-data.xml na pasta metadata/sql ele é um xml que contem dados básicos ou para teste, inserir os dados é só seguir os que já existirem lá. • Caso queria inserir os dados existentes no saple-data.xml sem executar o setup é so executar o db-load 28/2/2007 Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio 28
  • 29. Appfuse • A pasta lib contem muitas bibliotecas que foram incorporadas pelo appfuse e podem ser utilizadas no projeto. • Como a dwr utilizada para implementar ajax nas paginas. • Junit utilizada para realizar testes no projeto. • Displaytag uma das tags mais usadas pelo appfuse, esta quando recebe uma lista apresenta tabelas muito versáteis e de fácil utilização nos jsps. 28/2/2007 Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio 29
  • 30. Appfuse • O seu projeto é baseado em outras bibliotecas ai existentes (ou seja se elas saírem daí vão fazer um estrago danado!) como hibernate, spring, a propria displaytag... • Para inserir uma nova biblioteca basta colocá-la nessa pasta e em seguida alterar o arquivo lib.properties 28/2/2007 Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio 30
  • 31. Appfuse • A pasta web contem muitas informações que serão muito úteis para o projeto. • Nela estão todas as paginas inclusive as de erro. • Esta o mapeamento de paginas e controladores. • Imagens utilizadas no projeto • Scripts que o appfuse adotou. • Decoradores, arquivos .css • Etc 28/2/2007 Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio 31
  • 32. Appfuse • Na pasta common da pasta web, estão jsps que estão inclusos em todas as paginas (comuns a todos) como o cabeçalho, o rodapé e o menu. • Nesta pasta tambem esta o jsp que inclui todas as taglibs existentes no projeto. Esse jsp é inserido pelo appfuse quando ele gera automaticamente uma pagina. Caso não seja gerado adicione esta tag com o comando no inicio do jsp:<%@ include file=quot;/common/taglibs.jspquot;%> • Com ela pode-se usar a core do Java, a display tag, tags de SQL e de internacionalização e caso queira criar uma tag basta criar uma classe Java no pacote src/web taglib extendendo tagSupport que ela estará incluída nesse jsp. 28/2/2007 Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio 32
  • 33. Appfuse • Na pasta decorators tem apenas o default.jsp. Ele é responsável por adicionar os scripts e os arquivos .css. Caso queira adicionar mais algum basta colocar nesse jsp. • Na pasta pages, estão as paginas que serão utilizadas no projeto. • Com o crescimento do projeto tende a crescer muito essa pasta. • O padrão utilizado pelo appfuse é xxxList.jsp para apresentar todos os objetos de um certo tipo. E xxxForm.jsp para cadastro de um novo, edição de um já existente, nessa edição que ele pode ser deletado. 28/2/2007 Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio 33
  • 34. Appfuse • Na pasta scripts estão os arquivos de javascript. Têm muitos arquivos úteis para a apresentação do projeto. • Um deles é o calendar.js ele facilita a entrada de dados tipo data, de uma forma bem intuitiva para o usuário. Reduzindo possibilidades de falha na coleta desses dados. • Outros são o prototype.js e o scriptaculous.js eles tem scripts que facilitam a programação em javascript e alem disso têm ferramentas para a utilização de ajax, como o objeto Ajax.Updater do prototype e o Ajax.Autocompleter do scriptaculous. Essas ferramentas são altamente recomendadas pois agilizam no processo de inserção de dados e dão uma aparência desktop para o projeto. 28/2/2007 Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio 34
  • 35. Appfuse • Na pasta styles estão os arquivos .css basicos e uns estilos que podem ser escolhidos. • Com a alteração de um arquivo desses pode-se mudar completamente a visualização da pagina sem precisar alterar o jsp. • Na pasta WEB-INF estão basicamente arquivos de configuração. • No arquivo action-servlet.xml está o mapeamento das paginas e controladores, que é melhor explicado na próxima figura. 28/2/2007 Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio 35
  • 36. Appfuse Contem o endereço nomeProjeto/editProduto.html No action-servlet este endereço esta mapeado assim: <prop key=quot;/editProduto.htmlquot;>produtoFormController</prop> No action-servlet o bean produtoFormController está assim: <bean id=quot;produtoFormControllerquot; class=quot;org.appfuse.webapp.action.ProdutoFormControllerquot; autowire=quot;byNamequot;> <!--<property name=quot;validatorquot; ref=quot;beanValidatorquot;/>--> <property name=quot;formViewquot; value=quot;produtoFormquot;/> <property name=quot;successViewquot; value=quot;redirect:produtos.htmlquot;/> </bean> Classe que controla a pagina 28/2/2007 Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio 36
  • 37. Appfuse • O arquivo dwr.xml é onde deve-se declarar as classes para usar Ajax. • Declarando um objeto Produto, ele poderá ser utilizado em javascrip e seus metodos. <allow> <convert converter=quot;beanquot; match=quot;org.appfuse.model.*quot; /> <create creator=quot;springquot; javascript=quot;DwrManagerquot;> <param name=quot;beanNamequot; value=quot;dwrManagerquot;/> </create> </allow> • Este é um exemplo de objeto adicionado, em javascript poderá ser utilizado o objeto DwrManger e todos os seus metodos como: DwrManager.incluirFase(idTabela, orc, _resposta); 28/2/2007 Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio 37
  • 38. Appfuse • No arquivo menu-config.xml será configurado a disposição do menu, como abas e sub-abas <Menu name=quot;FileUploadquot; title=quot;menu.selectFilequot; description=quot;File Uploadquot; width=quot;100quot; page=quot;/selectFile.htmlquot; roles=quot;admin,userquot;/> • É um menu sem sub intens <Menu name=quot;AdminMenuquot; title=quot;menu.adminquot; description=quot;Admin Menuquot; roles=quot;adminquot; width=quot;120quot; page=quot;/users.htmlquot;> <Item name=quot;ViewUsersquot; title=quot;menu.admin.usersquot; page=quot;/users.htmlquot;/> <Item name=quot;ActiveUsersquot; title=quot;mainMenu.activeUsersquot; page=quot;/activeUsers.htmlquot;/> <Item name=quot;ReloadContextquot; title=quot;menu.admin.reloadquot; page=quot;/reload.htmlquot;/> <Item name=quot;FlushCachequot; title=quot;menu.flushCachequot; page=quot;/flushCache.htmlquot;/> <Item name=quot;Clickstreamquot; title=quot;menu.clickstreamquot; page=quot;/clickstreams.jspquot;/> </Menu> • É um menu com sub-itens 28/2/2007 Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio 38
  • 39. Appfuse • Na pasta classes dentro da pasta WEB-INF estão alguns arquivos de configuração e os arquivos ApplicationResources • Esses são os arquivos utilizados para a internacionalização • De acordo com a língua escolhida no browser o programa irá escolher um desses arquivos para mostrar. • Caso não tenha a configuração em uma língua o programa buscará na padrão se não encontrar na padrão o programa buscará em qualquer outra.Ex: produto.id=Id Poderia ser produto.id=Identificador 28/2/2007 Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio 39
  • 40. Appfuse • Hierarquia de chamadas • Dao -> DaoHibernate Utiliza • Service(manager) -> ServiceImpl(managerImpl) INTERFACES(FACEDE) IMPLEMENTAÇÃO Utiliza CONTROLLER 28/2/2007 Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio 40
  • 41. AppFuse • Agradecimentos em especial: • Rodrigos Paes Phd. • Bibliografia • https://appfuse.dev.java.net/ • http://xdoclet.sourceforge.net/xdoclet/tags/hibernate-tags.html 28/2/2007 Renato Sousa e Sérgio Cerqueira © LES/PUC-Rio 41