apa_java49_G.gif" border=0>
ns = "urn:schemas-microsoft-com:office:office" />
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.
package jm.banco.ejb;
//...imports
@Local
public interface ContaLocal {
public void credita(float valor);
public void debita(float valor) throws SaldoInsuficienteException;
public float getSaldo();
}
Listagem 3. Classe “mock” para controle de acesso.
package jm.banco.seguranca;
public class ControleAcesso {
public static void verificaPermissao(PermissaoBancaria permissao) {
if (permissao.getPermissao().equals(“accountOperation”)) {
System.out.println(“Permissao ok”);
}
}
}
Listagem 4. Classe ”mock” para permissão de acesso.