Segurança por Role

Olá…

Bom, essa dúvida eu acho até difícil explicar.

Estou precisando fazer uma segurança por role, por exemplo, suponha que eu tenha a seguinte classe:

@Permissao(role="USUARIO_CAD,USUARIO_CONS")
class CadastroUsuario {

    public Usuario recuperar(String id) {
        ...
    }

    @Permissao(role="USUARIO_CAD")
    public void atualizar(Usuario u) {
        ....
    }
}

As anotações indicam que o usuário logado só pode instanciar um objeto do tipo CadastroUsuario se ele possuir a role USUARIO_CAD ou USUARIO_CONS. E o usuário só pode chamar o método atualizar se ele possuir a role USUARIO_CAD. Caso ele não possua as roles necessárias, é jogada uma SecurityException.

No .net, essas anotações seriam substituídas por: [PrincipalPermissionAttribute(SecurityAction.Demand, Role = “USUARIO_CAD”)], que caso o usuário que está executando o código não possua essas roles, ao chamar o método ou instanciar a classe é jogada uma SecurityException.

Existe algo já pronto para fazer isso??? Se não existe, eu tinha pensado em implementar utilizando anotações, mas não sei se é possível chamar um código quando é instanciado um objeto ou chamado um método de uma classe, para verificar as roles necessárias nessas anotações.

Obrigado,
Fabio