我有一个使用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?