Glassfish-3.1.2.2。
我的项目中有1个Servlet和2个EJB。
Servlet->初始化->打印
// EJB初始化代码
@Stateless
@RunAs("SYSTEM")
@DeclareRoles({"SYSTEM"})
public class Init {
@Resource
EJBContext ejb;
@EJB
private Print print;
public void initialize() {
System.out.println("**********" + ejb.getCallerPrincipal().getName());
System.out.println("**********" + ejb.isCallerInRole("SYSTEM"));
print.printline();
}
}// EJB打印代码:
@Stateless
@DeclareRoles({"SYSTEM"})
public class Print {
@Resource
EJBContext ejb;
public void printline() {
System.out.println("**********" + ejb.getCallerPrincipal().getName());
System.out.println("*********" + ejb.isCallerInRole("SYSTEM"));
}
}//执行结果:
INFO: **********ANONYMOUS (OK)
INFO: **********false (OK)
INFO: **********system (OK)
INFO: **********false (? )为什么我得到的是第二个false (我期望是true)?
web项目与ejb项目的映射
<security-role-mapping>
<role-name>SYSTEM</role-name>
<group-name>system</group-name>
</security-role-mapping>谢谢。
发布于 2013-09-05 00:28:21
我找到了问题所在。实际上,在映射中
'<‘主体名称’>‘用户名’‘
必须使用与组关联的用户名指定。
https://stackoverflow.com/questions/18595507
复制相似问题