gpt4 book ai didi

java - 使用 EJB 注入(inject)用户实体

转载 作者:行者123 更新时间:2023-11-30 03:37:16 25 4
gpt4 key购买 nike

我在我的应用程序中使用 JAAS 身份验证。认为我有这样的用户实体类:

@Entity
public class User {
@Id
public Long id;

public String name;

...

还有一个像这样的 REST API:

@Stateless
@LocalBean
@Path("/users")
public class Users {

// INJECT USER OBJECT HERE
@Inject
private User user;

@Path("/me")
@Produces({ MediaType.APPLICATION_JSON })
@GET
public User getUser() {
return user;
}
...

无论如何,我是否创建一个 @Produces 方法来从 @SessionContext.getCallerPrincipal() 和 EntityManager 生成 User 实体对象,并将其直接注入(inject)到所有其余 api 中我想要吗?

最佳答案

当您将用户 ID 保存为主体名称时,以下方式应该可以工作。 您需要一个qualifier和生产者方法。一个好方法是创建另一个类来获取用户实体。

public class Resource {
@Inject
private EntityManager em;

@Resource
private SessionContext ctx;

@Produces
@Sessionscoped
@Running // the qualifier
public User getUser() {
User user = em.find(User.class, ctx.getCallerPrincipal().getName());
return user;
}
}

在您的 Users 类中,您必须使用限定符 to 来注释注入(inject)的用户。否则生产者方法的 User 实体无法分配给注入(inject)。

@Inject
@Running
private User user;

关于java - 使用 EJB 注入(inject)用户实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27541349/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com