【发布时间】:2012-08-23 03:11:51
【问题描述】:
我有一个使用OpenEjb 的@LocalClient 注释(嵌入式容器)并使用@EJB 注释注入EJB 的测试用例:
@LocalClient
public class MyTestCase {
@EJB
private BoxDao boxDao;
...
}
BoxDao 是一个远程 EJB 接口。现在,为了测试,我需要访问 BoxDao 的实现 BoxDaoBean 的一些内部状态,它是一个有状态会话 bean。我在 BoxDaoBean 中创建了一个受保护的方法,它公开了所需的内部状态,但在我的测试用例中我还没有找到访问它的方法,因为注入的 BoxDao 是一个远程接口代理(不能转换为 BoxDaoBean)。
有没有办法在测试用例中访问远程接口BoxDao后面的有状态会话bean?解决方案是否针对 OpenEjb 无关紧要。
更新:很遗憾,我们不能使用 EJB 3.1 特定的解决方案,因为我们有几个 EJB 3.0 项目正在运行。使用 Proxy.getInvocationHandler(boxDao),我可以通过 StatefulEjbObjectHandler 访问 OpenEjb 容器。是否可以通过这种方式访问有状态 bean?
【问题讨论】: