Esse artigo faz parte da revista Java Magazine edição 49. Clique aqui para ler todos os artigos desta edição
Clique aqui para ler esse artigo em PDF.
EJB 3.0: Aplicando Interceptors
Interceptação nativa de métodos e princípios
Entre os muitos novos recursos da especificação Enterprise Java Beans 3.0 estão os Interceptors, que chamam a atenção por ser um início do amadurecimento da utilização da Programação Orientada a Aspectos (AOP) dentro de containers EJB. O uso de Interceptors possibilita lidar melhor com tarefas “cross
Visão e aplicabilidade
À medida que os sistemas orientados a objetos (OO) evoluíram e cresceram em complexidade, tornou
Primeiro exemplo: conceitos básicos
Para facilitar o entendimento dos conceitos fundamentais, vamos usar um exemplo centrado na classe ContaBean, mostrada na Listagem 1. Esta classe é um Stateless Session Bean e possui métodos para obtenção do número da conta e para creditar, debitar e obter o saldo. O método debitar() lança a exceção SaldoInsuficienteException caso o valor passado como parâmetro seja menor que o valor do saldo existente. Além disso, para que a lógica de negócio contida nos métodos possa ser executada, é necessária antes uma verificação de permissões de acesso. Somente de posse da permissão necessáriaserá possível a execução de cada um dosmétodos. ContaLocal é a interface local doEJB e é mostrada na Listagem 2.
Listagem 1. Stateless Session Bean ContaBean com verificação de permissão de acesso e “código emaranhado”.
package jm.banco.ejb;
//...imports
@Stateless
public class ContaBean {
private static final String OPERACAO_CONTA = “OPERACAO_CONTA”;
private float saldo;
public void credita(float valor) {
ControleAcesso.verificaPermissao(
new PermissaoBancaria(OPERACAO_CONTA));
this.saldo = this.saldo + valor;
}
public void debita(float valor) throws SaldoInsuficienteException {
ControleAcesso.verificaPermissao(
new PermissaoBancaria(OPERACAO_CONTA));
if (this.saldo < valor) throw new SaldoInsuficienteException();
else this.saldo = this.saldo
}
public float getSaldo() {
ControleAcesso.verificaPermissao(
new PermissaoBancaria(OPERACAO_CONTA));
return this.saldo;
}
}
Listagem 2. Interface local para o EJB ContaBean."
[...] continue lendo...