![](/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.