2012-11-19 76 views
0

在MDB的onMessage方法中,如何檢索發起請求的JAAS用戶主體的名稱?我的應用程序使用Servlet登錄和jdbcRealm。如何訪問消息驅動Bean中的委託人?

我曾考慮將此添加爲消息屬性,但我寧願確保這由JAAS處理。

回答

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>"); 
} 
+0

非常感謝!我希望MDB有更好的文檔。 – Graham

+0

不客氣!關於文檔,您可以在官方的Oracle文檔中找到有關MDB和示例的介紹,但我同意,它可以是更詳細的。 –