![](/img/trans.png)
[英]EntityManager not injected in Stateless Session Bean with @PersistenceContext
[英]Stateless session bean called out of context missing EntityManager
我是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作為某種模型來獲取所有化合物。
問題是,當我在某個持久性上下文之外的某個地方初始化此Session Bean時,因此不知道EntityManager來訪問數據庫。 我相信。
我不知道該怎么辦。 我可以在代碼的較遠部分初始化類ListResource並使EntityManager的依賴項注入正常工作嗎? 還是以某種方式獲取持久化上下文,然后初始化此會話Bean?
我希望這是有道理的。 我要描述它的復雜問題。
(我尚無法發表評論,因此稍后將更新此答案)
請描述“我還有用普通Java編寫的程序的另一部分”的意思。 這是具有主要方法的獨立Java程序嗎?
依賴注入將適用於“托管類”,例如Servlet,JSF ManagedBean或CDI bean。
您仍然可以遠程調用此會話bean。 您的環境是什么(Java EE版本,應用服務器)?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.