我正在使用 EJB3.1、CDI 和持久域对象模式编写 JEE6 应用程序。 在某些情况下,我需要在实体 (jpa2.0) 中有一个 session bean 的实例。 使用@Inject 或@EJB 注入(inject)它不起作用。它始终是空引用。
唯一可能的解决方案是通过 InitialContext 进行查找。但这真的很糟糕。 有谁知道如何从实体访问 session bean 的解决方案吗?
我读过有关无状态 session bean 工厂的内容,但找不到任何示例。
最佳答案
实体是由你创建的,如果你想将 beans 注入(inject)到它们中,它们应该由容器创建。
从技术上讲,您可以让 CDI 容器管理您的实体,而不是使 new YourEntity
使用 @Inject @New YourEntity entity
。但这有点违反直觉。我没试过。
这是关于贫血数据模型与领域驱动设计的更广泛讨论的一部分。 IE。您的实体是否应该是没有任何行为的数据持有者,或者他们也应该有逻辑(并隐藏他们的状态)
关于java - 将 session bean 注入(inject)实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8133594/