[RESOLVIDO]pegar objeto Principal na camada de persistência
1 resposta
G
gambazinho
Pessoal,
alguém sabe como eu faço pra pegar o objeto Principal na camada de persistência?
acontece que minha aplicação não pode depender do request.getUserPrincipal que vem da api de servlet.
preciso de alguma forma recuperar o contexto de segurança e aí obter o usuário autenticado.
tentei fazer da seguinte forma:
bom após muita peregrinação, descobri o problema.
primeiro de tudo é que eu não posso pegar o usuário lá na camada de persistencia como estava pensando, isso deve ser feito na camada EJB por meio do SessionContext.getCallerPrincipal();
mas essa birosca está bugada na versão do jboss que utilizo.
acontece que a versão do Jboss que utilizo a 5.0.1.GA possui um BUG conforme relatado pela própria JBOSS, que só foi resolvido na versão 6.
para contornar isso eu teria de sobrescrever algumas classes. como meu processo de login é via Kerberos, preferi fazer uso da api de servlet mesmo e obter o usuário logado.
mais feio de tudo isso foi a redhat lançar o 5.0.1.GA com esse bug, sabiam do BUG e a prova disso é o fato do login-module aceitar como parâmetro a classe Principal a ser utilizada(ou seja, já sabiam que o negócio tava com pau nos EJB).
mas quem precisar fazer a mesma coisa, basta user SessionContext.getCallerPrincipal(); na camada EJB que funciona nas versões 6 ou superior do JBoss.