Hot deploy de verdade no Eclipse e Tomcat

Você sabia que um desenvolvedor leva em média 1h/dia olhando pro console do Eclipse esperando o Tomcat subir com a aplicação? Pois é, isso acontece pois sempre que alteramos uma classe na aplicação o plugin WTP do Eclipse é obrigado a recarregar todo o contexto da aplicação no Tomcat, o que leva em torno de 30s na maioria das aplicações!

Para diminuir este tempo de espera e ter uma melhor produtividade, nós podemos habilitar o hot deploy de classes no WTP do Eclipse! Dessa forma, quando modificamos uma classes Java o Eclipse se encarrega de atualizá-la no Tomcat sem a necessidade de recarregar todo o contexto, semelhante ao que ocorre com JSPs, CSS, JavaScripts e outros!

Com algumas poucas configurações no Eclipse você já pode se beneficiar do hot deploy de classes e ter uma semana muito, mas muito mais produtiva!

Tagged with: , , , , , , , , , , , , , ,
Posted in Boas Práticas, Desenvolvimento Ágil, Desenvolvimento de Software, Java, JEE

Atualizando programaticamente componentes JSF em requisições AJAX

É muito comum utilizarmos o componente p:outputPanel do Primefaces com o atributo autoUpdate=true quando queremos atualizar componentes automaticamente sempre que uma requisição AJAX é disparada por algum componente. Isso é mais comum ainda quando temos um template Facelets na qual as mensagens de sucesso e erro estão no topo da página.


    

O interessante é que podemos simular este mesmo comportamento de forma programática e sem a necessidade de um conjunto de componentes. Basta a nova API do JSF 2 responsável pela atualização parcial de páginas e requisições AJAX: PartialViewContext. Podemos ver como API funciona no código abaixo:

FacesContext.getCurrentInstance().getPartialViewContext()
            .getRenderIds().add(":mensagens");

Na verdade, a API do JSF 2 só nos permite atualizar o componente h:messages programaticamente. Para que o componente seja sempre atualizado a cada evento AJAX, nós podemos usar um PhaseListener, como discutido no novo post do blog da TriadWorks: Renderizando automaticamente componentes JSF em requisições AJAX.

Além da API PartialViewContext, a solução usa basicamente conceitos de PhaseListener e do ciclo de vida! Estes conceitos são estudados e praticados no curso de JSF 2 com Spring da TriadWorks.

Vale a pena a leitura!

Tagged with: , , , , , , , , , , , , , , , , , , ,
Posted in Java, JEE, JSF, JSF2, web

6 hábitos com Hibernate para melhorar a performance da sua aplicação

Em Setembro tive a oportunidade de palestrar sobre Hibernate Efetivo em Maceió-AL a convite do fundador do ALJUG (Grupo de Usuários Java de Alagoas), Miguel Lima. Esta palestra também foi ministrada no evento do QCONSP 2012.

A idéia da palestra é discutir 6 hábitos/práticas que podemos ter com Hibernate para melhorar a performance e escalabilidade da aplicação. Hábitos simples como configurar um pool de conexões e até hábitos mais delicados, como configurar o cache de segundo nível e maneiras de lidar com o pior problema de performance ao trabalhar com Hibernate: Select N+1.

Para não deixar o assunto apenas na palestra e nos slides, acabamos blogando sobre as 6 práticas no blog da TriadWorks, onde fizemos um pequeno resumo de cada prática para ajudar desenvolvedores iniciantes e experientes a lidarem com estes problemas que são tão comuns e prejudiciais em muitos sistemas.

Tagged with: , , , , , , , , , , , , , , , , , , , ,
Posted in Boas Práticas, Desenvolvimento de Software, Engenharia de Software, Hibernate, Java, JEE, JPA