2

我是 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?

我希望这是有道理的。我要描述它的复杂问题。

4

1 回答 1

0

如果你有一个 Web 服务和一个独立的应用程序调用同一个 bean,我建议你将功能移动到一个单独的无状态 bean 中,并为它创建远程和本地接口。这样,您可以将本地 bean 注入您的 Web 服务 bean,并使用 jndi 调用远程 bean。

更多关于在此处访问 Java EE bean的信息。

或者,您的客户端 Java 代码可以调用 Web 服务来获取所有数据。请参阅有关连接到 RESTful 服务的方法的问题。

于 2012-11-13T07:10:40.203 回答