Artigos
Dominando o Spring Roo, publicado na Java Magazine 79
06/05/10
Sim é verdade, faz tempo que não escrevo nada para o blog. Infelizmente tenho andado bem ocupado com estudos, trabalho e família, mas hoje trago nesse post uma boa notícia.
Hoje a revista Java Magazine publicou a versão digital da edição 79 e muito em breve deverá publicar também a sua versão impressa.
Estou escrevendo este post no meu blog sobre esta revista e principalmente sobre esta edição, porque ela contém meu primeiro artigo para esta revista.
O artigo aborda de uma forma teórica e prática o uso do Spring Roo que é classificado como uma ferramenta para desenvolvimento ágil de aplições web utilizando a linguagem Java.
Infelizmente não vou colocar todo o conteúdo do artigo aqui
, então por favor, leiam a revista para conferir o artigo completo e depois me mandem suas opiniões, críticas e sugestões
para que os próximos artigos sejam melhores.
Para ver o site da revista, clique na imagem da capa da revista e para ver a revista no formato digital, clique no link a seguir:
Clique aqui para acessar a revista online
Veja abaixo um resumo do que você vai encontrar no artigo:
Neste artigo você vai entender o que é o Spring Roo, sua arquitetura, como ele funciona para proporcionar mais agilidade no desenvolvimento, suas principais características e funcionalidades, e como utilizá-lo para desenvolver aplicativos de forma mais rápida e sem perder qualidade.
O exemplo prático desse artigo, embora simples, utilizará frameworks como Spring IOC/DI e MVC, Hibernate, Tiles e Bean Validation, envolverá também testes de integração baseados em JUnit, internacionalização, rotinas em AspectJ e controle de dependências via Maven.
Vale ressaltar que a utilização da maioria destes frameworks/ferramentas acontecerá de forma transparente para o desenvolvedor, e não se espante ao ver que o exemplo será gerado com a execução de aproximadamente 15 linhas.
Agora no www.imasters.com.br
18/02/09
Alguns dias atrás fui convidado pelo Tiago Baeta (coordenador da área de conteúdo do iMasters) para publicar artigos no imasters, resolvi aceitar o convite.
O primeiro artigo publicado foi um artigo copiado do blog, pois pretendo postar todos artigos que escrever tanto aqui no blog, como no imasters também.
Quem quiser conferir meus artigos publicados no imasters, o link é:
http://imasters.uol.com.br/indice/autor/113119/rodrigo_lazoti
Gerando Log de EJB com Interceptor e Log4J
10/02/09
Uma forma simples de gerar log de uma aplicação é utilizando bibliotecas como Log4J ou Commons Logging, mas ficar incluindo em todas as classes necessárias, chamadas a métodos para gerar log pode ser uma tarefa muito repetitiva.
O Spring framework resolve esse problema utilizando AOP (programação orientada a aspectos), onde podemos criar uma classe que inspeciona e gera os logs de chamadas a métodos de outras classes, assim economizamos tempo e poupa-se código também.
Utilizando a espeficicação EJB 3.0 podemos também nos beneficiar de um recurso parecido com o utilizando pelo Spring na qual chama-se Interceptors, com ele podemos interceptar chamadas aos métodos de negócio dos nossos Sessions Beans e Message Driven Beans.
Para demonstrar seu funcionamento, Vou criar um pequeno exemplo utilizando um Stateless Session Bean e um Interceptor utilizando Log4J, porém este post não visa explicar como configurar um projeto EJB e a ferramente Log4J, mas simplesmente demonstrar como utilizar Interceptors em uma simples aplicação que utiliza EJB.
Primeiro vou criar o Interceptor, o método intercept tem a finalidade de gerar o log de todas as classes que ele interceptar, o método é definico com a anotação @AroundInvoke, este método pode se encontrar em uma classe separada (como no exemplo a seguir) ou no próprio session bean, lembrando apenas que só pode ter um único método anotado por classe, mas nada impede de termos várias classes de interceptors.
package br.com.rodrigolazoti;
import javax.interceptor.AroundInvoke;
import javax.interceptor.InvocationContext;
import org.apache.log4j.Logger;
public class LoggerInterceptor {
@AroundInvoke
public Object intercept( InvocationContext invocationContext ) throws Exception {
Logger log = Logger.getLogger( "myProject" );
String methodName = invocationContext.getMethod().getName();
String className = invocationContext.getTarget().getClass().getName();
log.debug( "Calling Method: " + className + "." + methodName );
long timeBefore = System.currentTimeMillis();
try {
return invocationContext.proceed();
}
catch ( Exception e ) {
log.error( "Error on calling method " + className + "." + methodName );
log.error( "Root cause: ", e );
throw e;
}
finally {
long timeAfter = System.currentTimeMillis();
log.info( "Method " + className + "." + methodName + " called in " +
( timeAfter - timeBefore ) + "ms" );
}
}
}
Agora vou criar o interface remota do meu session bean:
package br.com.rodrigolazoti;
import javax.ejb.Remote;
@Remote
public interface MyServiceBean {
Integer sum( Integer[] values );
String createWelcomeMessage( String name );
}
Finalmente a implementação do session bean, repare que utilizo a anotação @Interceptors, onde posso definir um ou mais interceptors para esta classe, podemos também definir um interceptor para um método ou até mesmo excluir um interceptor de um método ou classe utilizando a anotação @ExcludeClassInterceptors. Utilizando a configuração via XML podemos definir um interceptor para um grupo de ejb’s por exemplo.

Últimos comentários