【发布时间】:2015-01-30 04:40:36
【问题描述】:
我正在尝试使用 @Inject 将 EJB 单例 bean 注入 CDI bean。但是注入的实例有时是本地的,有时是远程实例(重新启动时更改)。不一致。
在以下示例中,TestService ejb 的远程实例被注入到 GetTestData cdi 托管 bean。但我期待本地实例。而且它也不一致,有时它会注入本地实例。我通过在 GetTestData 类中打印注入的 bean 发现了这一点。
请注意,我的测试类不包含在部署包中。
知道如何让它持续注入本地实例吗?
EJB 单例 Bean:
@Singleton
@Local(TestService.class)
@Remote(TestServiceRemote.class)
public class TestServiceImpl implements TestService {
..
}
CDI 豆:
public class GetTestData {
@Inject
TestService testService;
....
}
单元测试:
@RunWith(CdiRunner.class)
public class GetTestDataTest {
@Inject
private GetTestData getTestData;
@Produces
@ProducesAlternative
@Mock
private TestService testService;
.....
}
我使用的是JBoss 7.1.1-Final版本(应用服务器),Weld核心版本是1.1.23-Final。
我无法使用@EJB,因为我正在使用 cdi-unit 进行测试。
【问题讨论】:
-
您的问题需要澄清。您的目标服务器和版本是什么?什么是 JBoss 1.1.1-Final?你能分享你的测试、EJB 和它的接口吗?
-
Antoine,添加了示例代码以提高清晰度并回答了您的问题。
标签: jakarta-ee jboss ejb jboss7.x cdi