我是Java EE新手,所以我的問題可能非常基礎。我已經用無狀態會話bean(簡單化)構建了以下REST Web服務:無狀態會話bean調用out of context缺失EntityManager
@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作爲某種模型來獲取所有化合物。
問題是,當我初始化這個Session bean的時候,它在持久化上下文之外,因此並不知道EntityManager來訪問數據庫。我相信。
我不知道該怎麼做。我可以在遠程代碼中初始化類ListResource並使EntityManager的依賴注入工作嗎?或者以某種方式獲得持久化上下文,然後初始化這個會話bean?
我希望它是有道理的。它的複雜問題讓我形容。