从REST服务注入的EJB中的主体

时间:2015-04-20 16:24:31

标签: rest java-ee wildfly wildfly-8

我有一个简单的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主体相同?

1 个答案:

答案 0 :(得分:1)

试试这个:

@Resource
EJBContext context;

...

context.getCallerPrincipal()