Archive

Posts Tagged ‘eclipse’

Comentários do I Café com Tapioca em Sobral

October 17th, 2008

Overview

No último sábado participei do I Café com Tapioca em Sobral, um evento realizado pelo CEJUG. Na oportunidade, tive o prazer de viajar e palestrar com Paulo Sobreira, Silveira Neto e Tarso Bessa.

Falamos sobre o CEJUG, JavaServer Faces, NetBeans, JPA, Hibernate, iReport e certificações Java. O evento contou com a presença de 95 participantes, de Sobral e da Parnaíba. Foi um público muito bom, ultrapassando até CCTs realizados em Fortaleza!

Gostaria de agradecer o apoio e hospitalidade do Yuri, Patrick e Adriano. O Silveira fez um excelente post sobre o evento, vale a pena conferir.

Palestra

Apresentando o CEJUG e o poder do Java

Mini-curso

JPA com Hibernate

Fotos

img_2731.jpg

img_2639.jpg

Mais fotos em: http://picasaweb.google.com.br/cafecomtapioca/ICafComTapiocaEmSobral

cejug, certificação, eventos, frameworks, ide´s, java, javaee, javame, livros, open source , , , , , , , , , , ,

Cartões para todos os gostos

June 5th, 2008

A REFCARDZ lançou um serviço muito bom de cartões. Ela simplesmente elabora cartões com dicas e configurações rápidas das principais tecnologias e ferramentas do mundo Java. Juliano Carniel já blogou sobre os cartões, mas recentemente a refcardz lançou um novo cartão: Dependency Injection in EJB 3.0.cartao-refcardz.jpg

Cartões disponíveis:

  • Windows PowerShell
  • Spring Configuration
  • Getting Started with Eclipse
  • Getting Started with Ajax
  • GWT Style, Configuration and JSNI Reference

Para obter os cartões basta fazer o cadastro no site da refcardz que você receberá um e-mail com o link para fazer o download dos cartões.

frameworks, ide´s, java, javaee , , ,

Série EJB 3.0: Interceptors

May 12th, 2008

Introdução

Uma das novidades da versão 3.0 do EJB são os Interceptors, uma maneira ainda rudimentar de utilizar AOP (Aspect Oriented Programming) em aplicações que utilizam EJB, o inverso do que ocorre com aplicações que utilizam o Spring (falarei sobre isso em outro post). AOP é um paradigma chamado de separation of concerns, que tem como característica quebrar o programa em diversas partes para interferir em seu processamento.

Segundo a especificação, um Interceptor é uma classe POJO (Plain Old Java Object) que não precisa ser anotada ou configurada como um session bean (utilizando as anotações @Stateless ou @Statefull). Ela deve conter um método método público anotado com @AroundInvoke, que retorna um Object, possuir o objeto InvocationContext como parâmetro e lançar a exceção Exception. Ela pode obter recursos do ENC (Enterprise Naming Context) JNDI, como injeção de dependências através da anotação @EJB, recursos através da anotação @Resource e o objeto EntityManager, através da anotação @PersistenceContext.

O objeto InvocationContext contém métodos que retornam a instância do objeto interceptado, bem como seus parâmetros e também um objeto Method que retorna o método que foi interceptado. A lógica de sua utilização gira em torno do método proceed desse objeto, pois quando ele é chamado o método interceptado será executado. Se no ciclo de processamento de um Interceptor um método tiver anotado com @AroundInvoke, o ciclo executará primeiro o Interceptor do método interceptado. Após isto o ciclo será executado normalmente.

Portanto, a lógica da utilização de Interceptors é gerar ou obter informações antes ou depois do método proceed ser chamado.

Para utilizar seus Interceptors em seus EJBs, basta utilizar a anotação @Interceptors(Class[] clazz). Essa anotação pode ser utilizada de duas formas: em métodos ou em classes. Se você utilizá-la em classes, todos os métodos dessa classe serão interceptados. Utilize a anotação @ExcludeClassInterceptors caso queira que seus métodos não sejam interceptados.

Caso não queira utilizar anotações, os Interceptors também podem ser configurados via arquivos XML. Registros (logs), segurança, auditoria e transações são exemplos mais comuns da utilização de Interceptors.

Criando a aplicação

Como IDE utilizei o Eclipse Europa (webtools) e o JBoss 4.2 como servidor de aplicação. No Eclipse, crie um projeto EJB Project (File - New - Project - EJB - EJB Project). Lembre-se de configurar o projeto com o JBoss 4.2, EJB 3.0 e Java 5.0 ou 6.0.

Para fazer o deploy do projeto basta clicar com o botão direito do mouse e escolha a opção Export - EJB JAR File. Feito isso, copie o arquivo gerado (.jar) e coloque na pasta ${CLASSPATH_DO_SEU_JBOSS}/server/default/deploy do seu JBoss. Inicialize o servidor pelo Eclipse (configure-o na opção Servers) ou pelo prompt de commando executando o comando ${CLASSPATH_DO_SEU_JBOSS}/bin/run.bat.

Códigos

AuditPersonInterceptor

public class AuditPersonInterceptor {	/**

  * This method contains the logic for intercepting the flow.

  *

  * @param invocationContext

  * @return

  * @throws Exception

  */

 @AroundInvoke

 public Object auditPerson(InvocationContext invocationContext)

 		throws Exception {

System.out.println("Before method execute...");

Object proceed = invocationContext.proceed();

System.out.println("After method execute...");

return proceed;

 }

}

PersonService

@Remote

public interface PersonService {	/**

  * Insert an Person.

  */

 public void insertPerson();

}

PersonServiceBean

@Stateless

public class PersonServiceBean implements PersonService {	/*

  * (non-Javadoc)

  *

  * @see org.rafaelcarneiro.service.PersonService#insertPerson()

  */

 @Override

 @Interceptors(AuditPersonInterceptor.class)

 public void insertPerson() {

System.out.println("Inserting an Person...");

}

}

Client

public class Client {	/**

  * Method main that obtain the EJB from JNDI and insert an Person.

  *

  * @param args

  * @throws Exception

  */

 public static void main(String[] args) throws Exception {

Context context = new InitialContext();

PersonService personService = (PersonService) context

 			.lookup("PersonServiceBean/remote");

personService.insertPerson();

}

}

Comentários dos códigos

  • AuditPersonInterceptor: representa o nosso Interceptor;
  • PersonService: interface remota para o session bean;
  • PersonServiceBean: session bean do tipo Stateless (sem estado) que implementa a interface remota PersonService e contém o método a ser interceptado;
  • Client: classe que obtém e executa o session bean PersonServiceBean.

Executando

Ao executar a aplicação no JBoss, você verá as mensagens abaixo no console do JBoss:

INFO [STDOUT] Before method execute…
INFO [STDOUT] Inserting an Person…
INFO [STDOUT] After method execute…

Conclusão

EJB 3.0 veio para simplificar o desenvolvimento de softwares baseado em componentes, usando massivamente annotations e diminuindo a quantidade de arquivos e o trabalho com configurações. Interceptor é fácil de ser implementado, basta a utilização de algumas anotações. Como mencionei na introdução desse artigo, os Interceptors do EJB 3.0 ainda tem muito a desejar comparando com o uso de AOP com Spring. Mas quem sabe o JCP (Java Community Procces) e a Sun melhorem seus recursos.

No próximo artigo da Série EJB 3.0 iremos abordar os Web services.

Download do código fonte

Application LearningInterceptors

Referências

Wikipedia: http://en.wikipedia.org/

The Java Community Procces: http://jcp.org/

java, javaee, séries , , , , , , ,

Vídeos-aula de JSF

November 8th, 2007

Aderindo a onda de desenvolvimento em JSF, o blog screencast publicou duas vídeos-aula sobre a utilização de JSF no eclipse europa em duas partes: a primeira, fala sobre como registrar a implementação no eclipse até rodar uma aplicação de exemplo. A segunda fala sobre como colocar JSF e EJB em sua aplicação JEE.

ide´s, java , , ,

Tratamento de NullPointer no Eclipse Europa

July 10th, 2007

Continuando a série de posts sobre NullPointerException e as primeiras impressões do eclipse europa, hoje estava vendo as novas funcionalidades e um amigo do trabalho me alertou sobre uma nova configuração de Errors/Warnings nas preferências do eclipse.

No eclipse europa, foi adicionado um novo item nas configurações do compilador e agora você pode verificar possíveis erros em tempo de compilação. No menu, vá em Window – Preferences e marque a opção Potential null pointer access como Error.

Veja na imagem abaixo:

Crie uma classe de teste e adicione o método abaixo ou crie um se preferir.

Código:

Com essa opção marcada como Error, o compilador irá gerar um erro informando que a variável situacao poderá lançar um erro de NullPointerException. O compilador entende que esse if pode retornar false e a referência situacao não será instanciada e poderá ocorrer um erro de NullPointerException na chamada do método add da interface List.

Você também pode marcar essa funcionalidade como Warning, para não gerar erros em todos os seus projetos e ainda ficar informado de possíveis erros.

Tem mais funcionalidades interessantes, como: classes serializaveis sem o serialVersionUID, atribuições sem efeitos, blocos catch sem conteúdo e vários outros.

ide´s ,

Primeiras impressões do Eclipse Europa

July 9th, 2007

Hoje descompactei o Eclipse Europa para desenvolvedores JEE e fiquei muito satisfeito com essa nova versão. O WTP 2.0 foi lançado e já está disponível nessa versão. Possibilita a criação de vários projetos como: JPA, EJB, J2EE, Web Services e outros. E o melhor, já cria toda a estrutura de diretórios. Possui também auto-complete para as Annotations. A partir de amanhã já irei trabalhar utilizando o Eclipse Europa!

Links relacionados

ide´s , , , ,

Eclipse Europa

June 30th, 2007

Finalmente o tão esperado Eclipse Europa foi lançado. Já fazia um tempo que a comunidade java estava anciosa e voltada para esse lançamento, esperando as novas funcionalidades.

Confira as melhorias e funcionalidades

  • Melhor suporte a debugging, incluindo hyperlink stepping
  • Uma nova funcionalidade de Quick Access (ctrl-3) para melhorar a navegação na IDE
  • Refactoring adicional e “Quick Fix/Assist”
  • Task-focused development (Mylyn)

Confira a lista completa de funcionalidades

Download

ide´s

Conhecendo as teclas de atalho do eclipse

May 31st, 2007

Todo bom programador conhece as vantagens de utilizar o eclipse, dentre elas as teclas de atalho. Com o conhecimento das principais teclas de atalho a produtividade e rapidez nos códigos irá aumentar exponencialmente, pois evitará que o programador busque outras formas para resolver o problema.Para visualizar todos os atalhos disponíveis no eclipse basta pressionar Ctrl + Shift + L. Abaixo segue as principais teclas de atalho usadas no dia-a-dia de um programador e no final do post a versão para impressão de todos os atalhos.


Tecla de Atalho | Função

Ctrl + Shift + O = Organiza os imports (limpa os imports que não estão sendo utilizados ou adiciona caso não exista)
Ctrl + Shift + F = Formata o código de acordo com a configuração nas preferências
Ctrl + Shift + R = Procura qualquer tipo de recurso em qualquer projeto
Ctrl + 1 = Assistência para correções do código
Ctrl + 2,R = Renomeia uma variável em todo o escopo onde está inserida
Ctrl + espaço = Assistente de código
Ctrl + M = Máximiza/Minimiza uma view
Ctrl + O = Visualização completa da classe (métodos, variáveis, construtores…)


A matéria da capa da revista Mundo Java número 09, de autoria do Paulo Silveira, trata exatamente desse assunto, vale a pena conferir.

Downloads: Versão para impressão | Imagens

ide´s