CDI & EJB: Sending asynchronous mail on transaction success

Hello again! 🙂

This time I’ve chosen a common task that most of the time, in my opinion, is done the wrong way: sending e-mails. Not that people can’t figure out how e-mail APIs work, such as JavaMail or Apache’s commons-email. What I usually see as a problem is that they underestimate the need to make the sending mail routine asynchronous, and that it also should only run when the underlying transaction commits successfully (most of the time).

Click to continue to read about sending async mail…

JSF: Validation at the right phase (understanding the life cycle)

Para versão em português, clique aqui.

Hi everyone!

Although the title emphasises the word validation, this article is actually about the JSF life cycle. That’s because I believe that one of the easiest ways to truly understand the life cycle is by making something we do all the time: validating user input.

Click to continue reading “JSF: Validation at the right phase”…

Generic DAO example

Para ler a versão em português, clique aqui.

Hey guys!

For this post I’m gonna show how to implement a “Generic DAO” class. It’s something junior developers struggle with, and usually end up writing lots of “DAO” classes doing the exact same thing. A “Generic DAO” is a convenient way to have a single class (or component one might say) responsible for persistent operations in any entity in your code. This is what I mean:

Click to continue reading “Generic DAO Example”…

Exemplo DAO genérico

To read the english version, click here.

Olá a todos!

Para esse post vou mostrar como implementar um “DAO genérico”. É algo que desenvolvedores iniciantes apanham bastante, e normalmente acabam escrevendo um monte de código repetido que faz a mesma coisa. Um “DAO genérico” é uma maneira conveniente de ter uma única classe (ou componente se preferir) que consiga fazer operações de persistência em tipos de entidade diferentes. Por exemplo:

Clique para continuar lendo “Exemplo DAO Genérico”…

Novidades do Java 8: JSR 310 – Date and Time API

Fala pessoal!

Esse post é para você que nem conseguiu assimilar as novidades do Java 7 ainda! Sim, porque o Java 8 está logo ali. 😀
Depois de um atraso até bem justificado, o lançamento da versão final do JDK 8 ficou para março/2014, o que já está bem próximo.

Nenhuma outra versão da plataforma Java teve tantas novidades como essa, a 8. A última grande novidade foi a introdução de generics no Java 5, e isso foi em 2004! No meio de todas essas novidades, a que vou falar aqui é uma também muito aguardada.

A JSR 310 foi aprovada pelo comitê executivo em 2007. Há 6 anos! E está esperando um lugar ao sol desde então. Finalmente foi incorporada ao Java 8 e quem quiser brincar antes do lançamento oficial é só baixar uma early access release do JDK 8 no site do Open JDK

A opinião de todos com relação a API atual para manipulação de datas do Java SE é unânime: Ruim demais. A JSR 310, baseada em grande parte no framework JODA-TIME, veio para tentar resgatar nossa dignidade 🙂

Clique para continuar lendo sobre “Date and Time API”…

Tutorial SPI (Service Provider Interface)

Para esse artigo escolhi um assunto que é um mistério para muita gente: SPI’s. Sim, eu falei SPI e não API. SPI’s são maneiras bastante eficazes de garantir baixo acoplamento entre consumidor/serviços. Por exemplo, qualquer um que já escreveu um código usando JDBC na vida já deve ter escrito aquela infame instrução: Class.forName(“um.nome.de.driver.jdbc”);.
Nos drivers JDBC mais recentes, os chamados “type 4”, nao é mais necessário escrever a linha acima para inicializar o driver, pois os mesmos já foram implementados usando o “service provider mechanism”. Traduzindo, os drivers atuais são uma implementação de SPI.

Na intenção de ser mais didático e convencer qualquer cético que venha a ler esse artigo, vou usar um exemplo fictício mas não muito longe da realidade.

Clique para continuar lendo “Tutorial SPI”…

JSF 2: Como alterar estilo de campos inválidos

Nesse post vou abordar três maneiras possíveis de destacar campos inválidos de uma tela JSF. Em muitos casos, principalmente quando um formulário é grande e as mensagens de erro são exibidas somente na seção superior da tela, é útil para o usuário que os campos que possuem erros sejam destacados de alguma forma para facilitar encontra-los:

Clique para continuar lendo “JSF 2: Como alterar estilo de campos inválidos”…