Created
April 11, 2012 18:09
-
-
Save jeffbicca/2361046 to your computer and use it in GitHub Desktop.
Migração Demoiselle 1 para Demoiselle 2
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Eis aqui as experiências que tive até o momento, ao migrar algumas funcionalidades de um sistema, desenvolvido usando | |
Demoiselle 1 com JSF 1.2, RichFaces 3.3, JPA para Demoiselle 2, JSF 2, RichFaces 4 e J2EE 6. | |
*** XHTML: | |
- Mudar xmlns do a4j para xmlns:a4j="http://richfaces.org/a4j" | |
- Mudar tag "<body>" para "<h:body>". | |
- Mudar tag "<head> para "<h:head>". | |
- Retirar o prefixo "on" dos eventos atribuidos na propriedade "event" das tags ajax. | |
Ex.: JSF1: "<a4j:support event="onchange">", JSF2: "<a4j:ajax event="change">" | |
*** XHTML (específico RichFaces): | |
- Chamadas JS para RichFaces foram modificadas. Modificar para tentar usar sempre EL | |
"(#{rich:component('idComponente')}).nomeDoMetodo()" | |
Ex.: modal: "#{rich:component('loadingModal')}.show()" | |
- No caso de modais, ainda é possível exibir/ocultar diretamente por JS: | |
"RichFaces.ui.PopupPanel.showPopupPanel('loadingModal')" / "RichFaces.ui.PopupPanel.hidePopupPanel('loadingModal')" | |
- Mudar tag "<a4j:form>" para "<h:form>" padrão JSF. | |
- Mudar tag "<rich:modalPanel>" para "<rich:popupPanel modal="true">" equivalente. | |
- Mudar tag "<a4j:support>" para "<a4j:ajax>" ou "<f:ajax>": | |
-- Mudar propriedade "ajaxSingle" para "execute="@this"". | |
-- Mudar propriedade "reRender" para "render". | |
- Cuidado: referências a this nas chamadas para oncomplete (por exemplo), não passa mais a referência ao objeto que | |
completou, mas sim ao objeto Window! Como alternativa, passar event OU event.source. | |
*** ManagedBeans | |
- Retirar "extends AbstractManagedBean" , "extends SuperCrudMB", "implements IFacade" | |
- Anotar classes como "@ViewController" | |
- Classe "implements Serializable" (verificar necessidade). | |
- Remover referências no faces-config.xml!!! :) | |
*** BusinessControllers | |
- Anotar classes como "@BusinessController". | |
- Classe "implements Serializable" (verificar necessidade). | |
- Referências ao método "findById" do DAO devem ser trocadas para "load" equivalente. | |
*** DAOs | |
- Classes que "extends SuperCrudDAO" agora "extends JPACrud" | |
- Anotar classes como "@PersistenceController". | |
- DICA: em métodos que controlam a transaction fazendo commit ou rollback diretamente pelo entityManager ou session, | |
podem ser decorados agora com a annotation "@Transactional" | |
*** Entities JPA | |
- Retirar "implements IPojo". Colocar "implements Serializable" (obrigatório). | |
*** Configuration | |
- Anotar classe com annotation "@Configuration". | |
- Remover as annotations "@ConfigKey" e tentar utilizar a convenção já estabelecida pelo Demoiselle. Caso isto não seja | |
possível, utilizar a annotation "@Name". | |
*** Scheduler | |
- Até o momento, o Demoiselle 2 não dispõe de um componente ou extensão equivalente ao que se tem disponível no | |
Demoiselle 1. O que mais chega perto é o uso do Scheduler padrão do EJB. Caso não queira se utilizar EJBs no projeto, | |
a alternativa é utilizar um scheduler independente, como o Quartz Scheduler. | |
*** Geral | |
- Trocar as annotations "@Injection" por "@Inject", padrões do CDI!!! :) | |
- Remover as interfaces que só estão sendo utilizadas para funcionar as antigas "@Injection"!!! :) | |
- Classe ManagedBeanUtil não existe mais: | |
-- Nos casos do uso do método addMessage: Fazer a injeção de referência ao MessageContext e utilizar o método add. | |
Ex.: messageContext.add("mensagem"). | |
- Instância de FacesContext, que normalmente era capturado utilizando métodos static, agora podem ser injetados | |
diretamente com @Inject FacesContext facesContext. | |
- ManagedBeans declarados com escopo de sessão no faces-config.xml, agora passam a receber a annotation | |
"@SessionScoped", padrão do CDI. :) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment