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