Rodando um EJB Scheduler com RunAS [resolvido]

1 resposta
G

Tenho um EJB Scheduler:

@Schedule(second = "0", minute = "0", hour = "*") protected void scheduledTimeout(final Timer t) { [...] branchRemote.doAnything(); }

E no meu EJB:

@Override @RolesAllowed(BusinessConstants.ROLE_SYSTEM) public void receiptFile(File file) { System.out.println(context.getCallerPrincipal()); System.out.println(context.isCallerInRole(BusinessConstants.ROLE_SYSTEM)); }

Noto que quando eu rodo o EJB a o caller é sempre anonymous, sendo assim tenho sempre um acess denied quando tento rodar o EJB. Tentei usar a annotation @RunAs na classe scheduler, porém mesmo assim recebo um access denied. Se eu comento o RolesAllowed noto que o caller retorna como SYSTEM quando eu uso o RunAS, porém quando faço um isCallerInRole recebo um FALSE.

Como faço para fazer o controle de permissão? Eu não posso deixar esse método como “público”.

1 Resposta

G

Enfim, corrigido. A documentação não é muito clara quanto ao uso do RunAs. De fato quando você usa o RunAs, ao contrário do que eu achei, você especifica o user e não a role. O que eu fiz foi adicionar no meu sun-ejb.jar o pseudo-usuário SYSTEM com a role SYSTEM e tudo funcionou bem.

Criado 18 de abril de 2010
Ultima resposta 18 de abr. de 2010
Respostas 1
Participantes 1