我是 Java EE 的新手,所以我的问题可能非常基本。我使用无状态会话 bean(简化)构建了以下 REST Web 服务:
@Path("/list/")
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
@Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
@Stateless
public class ListResource {
@PersistenceContext(unitName = "unitName")
private EntityManager em;
@GET
@Path("/")
public List<Compound> getCompounds() {
List<Compound> list = tq.getResultList();
if (list.isEmpty()) {
throw new WebApplicationException(Response.status(404).entity("There are no compounds in database.").build());
}
return list;
}
}
它就像魅力一样。它可以通过 URL 访问并返回 JSON。问题是我有另一部分用纯 Java 编写的程序需要使用这个 Session bean 作为某种模型来获取所有 Compound。
问题是当我在某个地方初始化这个 Session bean 时,它在持久性上下文之外,因此不知道 EntityManager 来访问数据库。我相信。
我不知道该怎么办。我可以在代码的远处初始化类 ListResource 并让 EntityManager 的依赖注入工作吗?或者以某种方式获取持久性上下文,然后初始化这个会话 bean?
我希望这是有道理的。我要描述它的复杂问题。