0

在 MDB 的 onMessage 方法中,如何检索发起请求的 JAAS 用户主体的名称?我的应用程序正在使用 Servlet 登录和 jdbcRealm。

我已经考虑将它添加为消息属性,但我宁愿确保它由 JAAS 处理。

4

1 回答 1

1

它是固有处理的,您所要做的就是注入和使用MessageDrivenContext

..
@Resource
private MessageDrivenContext mdc;

public void onMessage(Message message) {
    Principal principal = mdc.getCallerPrincipal();
    System.out.println(principal.getName());
    //ALTERNATIVELY, YOU CAN USE A METHOD mdc.isCallerInRole("<role name>");
}
于 2012-11-23T08:01:14.290 回答