And*_*ell 11
您应该能够使用JAAS.这是JBoss 7应该使用的.
调用主体将存储在一个SessionContext你可以通过告诉JBoss它是一个资源获得的.
@Resource
private SessionContext context;
public void myAwesomeMethod() {
String currentUser = context.getCallerPrincipal().getName();
}
Run Code Online (Sandbox Code Playgroud)
如果由于某种原因,注入无法在无状态bean上运行,则可以直接查找EJBContext.
@Stateless
public class HelloBean implements com.foo.ejb.HelloRemote {
public void hello() {
try {
InitialContext ic = new InitialContext();
SessionContext sctxLookup =
(SessionContext) ic.lookup("java:comp/EJBContext");
System.out.println("look up EJBContext by standard name: " + sctxLookup);
} catch (NamingException ex) {
throw new IllegalStateException(ex);
}
}
}
Run Code Online (Sandbox Code Playgroud)
这个片段是从4种方式获得的,以获得EJBContext.