如何在消息驱动Bean中访问Principal?

时间:2012-11-19 20:59:51

标签: java-ee jms jaas message-driven-bean

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

我考虑将其添加为消息属性,但我宁愿确保这是由JAAS处理的。

1 个答案:

答案 0 :(得分: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>");
}