Я пытаюсь вызвать методы в защищенном EJB-компоненте из неаутентифицированного источника (компонент, управляемый сообщениями, подключенный к очереди). MDB имеет EJB, внедренный в него через @EJB, что нормально, но целевой EJB имеет @SecurityDomain ("stuff") и @RequireRole ("user"), и при выполнении генерирует огромные трассировки стека вокруг:
17:14:03,275 ERROR [STDERR] java.lang.NullPointerException
17:14:03,276 ERROR [STDERR] at org.jboss.ejb3.security.helpers.EJBContextHelper.getCallerPrincipal(EJBContextHelper.java:99)
17:14:03,276 ERROR [STDERR] at org.jboss.ejb3.EJBContextImpl.getCallerPrincipal(EJBContextImpl.java:136)
Я попытался исправить это, предоставив роль через промежуточный EJB-компонент, аннотированный @SecurityDomain ("stuff") @RunAs ("sysuser"), в этот промежуточный EJB-компонент вставлен исходный целевой EJB-компонент. Насколько я понимаю, целевой EJB будет иметь методы, вызываемые из промежуточного компонента под ролью "sysuser". Тем не менее, я все еще получаю те же трассировки стека, что приводит к откату базы данных при создании.
Возможен ли путь MDB -> SecureEJB в каком-то другом варианте без этих следов стека? Подход прокси на правильном пути к успеху, или я должен добавить что-то в микс?
Ура,
Andy