Executando código ao iniciar sua classe ou aplicação Java

Não é raro o cenário onde você acaba tendo que executar código durante a inicialização de uma certa classe ou aplicação. Esse artigo apresenta algumas opções sobre como você pode conseguir fazer isso.

Executar código quando a classe é inicializada

Neste cenário, você quer executar alguma lógica quando a classe é carregada pela JRE, e você quer que essa lógica seja executada somente uma única vez, independentemente do número de instâncias daquela classe. Para isso, você pode usar um static initialization block.

Publicado em Java EE | Etiquetas , | Deixe o seu comentário

CDI Producer

CDI (Context and dependency injection) é uma poderosa especificação introduzida no JEE6 e que oferece vários recursos. Um deles é o Producer methods, que é o assunto desse post.

CDI producer methods podem ser usados em alguns cenários, tais como:

  • Tornar Non-CDI beans em CDI beans que podem ser injetados em outros beans. Você pode estar usando alguma biblioteca que não expõe seus beans via CDI mas você quer ter a chance de injetá-los em seus beans CDI.
  • Você tem um bean que requer um construtor com algum argumento.

Continuar a ler

Publicado em Java EE, JBoss | Etiquetas , | Deixe o seu comentário

Construa uma aplicação do zero com JEE 7, Java 8 e Wildfly

Eu recentemente publiquei um curso chamado “Build an application from scratch: JEE 7, Java 8 and Wildfly” no Udemy. Esse curso foca em como usar várias technologias Java e melhores práticas de desenvolvimento de software com o objetivo de criar uma aplicação enterprise completa. Algumas das tecnologias e ferramentas abordadas são:

  • Java EE 7: JPA 2.1, Bean Validation 1.1, JMS 2.0, EJB 3.2, CDI 1.1, JAX-RS 2.0, security.
  • Java 8: Lambda expressions, Date and Time API, streams e mais.
  • Bibliotecas como Gson, JUnit, Mockito e Hamcrest.
  • Arquillian para testes de integração.
  • Wildfly 8 (antigo JBoss) como Application Server.
  • PostgreSQL para produção e HSQLDB/H2 para testes unitários e de integração.
  • Maven.
  • Eclipse IDE
  • Postman Chrome extension para testar todas nossas interfaces REST.

Caso você tenha interesse e quer saber mais detalhes, você pode clicar aqui para olhar todos os detalhes do curso. Nessa página você pode encontrar mais detalhes sobre o curso, assistir alguns free vídeos e, como leitor desse blog, pode se inscrever no curso com mais de 30% de desconto.

Qualquer dúvida é só falar.

Publicado em Java EE, JBoss, Tests | Deixe o seu comentário

Integrando Spock com Maven/Eclipse

Introdução

Neste post vamos ver uma breve introdução sobre o framework de testes Spock e como inegrá-lo ao Maven a ao Eclipse.

Spock

Spock é um framework para construção e especificação de testes usando-se a linguagem Groovy e cuja adoção vem crescendo bastante ultimamente. Embora Groovy seja a linguagem com a qual você deve escrever seus testes usando Spock, ele pode ser usado tanto em aplicações Groovy quanto Java e é compatível com a maioria das IDEs Java, como Eclipse.
O fato de ser necessário escrever os testes em Groovy pode criar um pouco de aversão para quem programa em Java, mas não tem familiaridade com Groovy. Porém, o conhecimento que é preciso ter de Groovy é bem básico e a própria documentação do Spock ajuda com essa questão. Eu mesmo, no momento, sei muito pouco de Groovy e tenho usado Spock sem problemas.
Continuar a ler

Publicado em Tests | Etiquetas , , , | Deixe o seu comentário

Processamento assíncrono com ExecutorServices – Parte 2

Seguindo o que foi apresentado na primeira parte do artigo, vamos falar mais um pouco sobre processamento assíncrono com ExecutorServices. Nessa segunda parte vamos abordar o seguinte caso de uso.
Nosso software receberá e processará um lote de transações. Ao final do processamento desse lote, o sistema deve fazer um “resumo” do processamento, indicando quantas transações foram processadas com sucesso e quantas foram processadas com erro. Esse resumo poderia ser enviado à um outro sistema, por exemplo, que poderia analisar a taxa de sucesso desse lote de transações que foi processado ou algo similar.
Continuar a ler

Publicado em Parallelism | Etiquetas , , , | Deixe o seu comentário

Processamento assíncrono com ExecutorServices

Introdução

Com máquinas cada vez mais potentes e com mais núcleos de processadores, é fundamental que seus programas consigam tirar proveito desses recursos. Do que adianta ter uma máquina com 16 processadores, se seu programa executa toda sua lógica de forma sequencial em uma única thread?Sistemas de mensageria, como JMS e AMQP, ajudam bastante no processamento assíncrono, desacoplado e distribuído. Porém, em alguns casos, eles podem ser uma “bala para matar um mosquito”, pois além de trazerem o overhead de um message broker na arquitetura, podemos estar apenas querendo usar os processadores da máquina, quebrando uma única tarefa que teria que ser executada de forma sequencial e em uma única thread em um conjunto de tarefas a serem executadas de forma assíncrona e em várias threads.
Antes do Java 5, para realizar esse tipo de tarefa, era necessário criar e gerenciar as threads manualmente, o que não era uma tarefa muito agradável. O Java 5 trouxe um framework para processamento concorrente que ajuda bastante: Executor Services.
Continuar a ler

Publicado em Parallelism | Etiquetas , , , | 3 Comentários

TDC 2012 – Java e AMQP: Uma alternativa ao JMS

Durante o TDC desse ano, dei uma palestra sobre Java e AMQP, no lado B da trilha de Java EE. Infelizmente, na hora de mostrar uma aplicação integrando Java com o Rabbit MQ, o notebook com Ubuntu travou e não teve jeito, provavelmente por algum problema com o driver da placa de vídeo ou algo do tipo. :(
Esse post é para apresentar o código que eu fiquei “devendo” durante a palestra. Lembrando que, para poder executá-lo, antes é necessário instalar o Rabbit MQ. Em seu site, existe o procedimento para instalação em diversas plataformas.
Continuar a ler

Publicado em Java EE, Spring | Etiquetas , , , , | 1 Comentário