我正在尝试从未经身份验证的源(连接到队列的消息驱动Bean)调用安全EJB上的方法。 MDB通过@EJB将一个EJB注入其中,这很好,但目标EJB有@SecurityDomain(“stuff”)和@RequireRole(“user”),并且在执行时会生成 huge 堆栈周围的痕迹:
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)
我试图通过使用@SecurityDomain(“stuff”)@RunAs(“sysuser”)注释的临时EJB提供角色来解决这个问题,这个临时bean将原始目标EJB注入其中。我的理解是目标EJB将具有从“sysuser”角色下的临时bean调用的方法。然而,我仍然得到相同的堆栈跟踪,导致数据库回滚创建。
Path MDB - >如果没有这些堆栈跟踪,SecureEJB可能会在某些变体中出现吗?代理方法是否在正确的道路上取得成功,还是我需要添加到混合中?
干杯, 安迪