我有一个简单的REST网络服务,它使用基本身份验证。
@Path("/ws")
@Stateless
public class MyWebservice {
@EJB
private MyEJB myEjb;
@GET
@Path("/get")
@Produces(MediaType.APPLICATION_JSON)
public MyObject getObject() {
return myEjb.getObject();
}
}
EJB也非常简单:
@Stateless
public class MyEJB {
@Resource(lookup = "java:comp/EJBContext")
private SessionContext sessionContext;
@PermitAll
public MyObject getObject() {
return new MyObject();
}
}
但是,当我调试时,sessionContext
中EJB中的主体始终是“匿名的”,无论我使用哪个用户对WS进行身份验证。
如何将EJB主体设置为与针对Web服务进行身份验证的EJB主体相同?
答案 0 :(得分:1)
试试这个:
@Resource
EJBContext context;
...
context.getCallerPrincipal()