gpt4 book ai didi

java - 如何通过远程接口(interface)代理访问有状态 session bean?

转载 作者:太空宇宙 更新时间:2023-11-04 08:05:23 48 4
gpt4 key购买 nike

我有一个使用 OpenEjb 的测试用例的@LocalClient注释(嵌入式容器)并使用@EJB注释注入(inject)EJB:

@LocalClient
public class MyTestCase {

@EJB
private BoxDao boxDao;

...

}

BoxDao 是一个远程 EJB 接口(interface)。现在,为了进行测试,我需要访问 BoxDao 实现 BoxDaoBean 的一些内部状态,它是一个有状态 session bean。我在 BoxDaoBean 中创建了一个 protected 方法,它公开了所需的内部状态,但我在测试用例中还没有找到访问它的方法,因为注入(inject)的 BoxDao 是一个远程接口(interface)代理(无法转换为 BoxDaoBean)。

有没有办法访问测试用例中远程接口(interface) BoxDao 后面的有状态 session bean?如果解决方案是 OpenEjb 也没关系具体。

更新:不幸的是,我们无法使用 EJB 3.1 特定的解决方案,因为我们正在运行多个 EJB 3.0 项目。使用 Proxy.getInspirationHandler(boxDao),我可以通过 StatefulEjbObjectHandler 访问 OpenEjb 容器。是否可以通过这种方式访问​​有状态bean?

最佳答案

您可以尝试让 BoxDaoBean 也公开一个 @LocalBean 接口(interface)。单个 EJB 可以公开来自 @WebService@Local@Remote、JAX-RS 等的几乎无限数量的 View 。

只需像这样更新你的bean:

@Stateful
@LocalBean
public class BoxDaoBean implements BoxDao {
//...
}

然后向您的测试添加另一个字段:

@LocalClient
public class MyTestCase {

@EJB
private BoxDao boxDao;

@EJB
private BoxDaoBean boxDaoBean;

...

}

关于java - 如何通过远程接口(interface)代理访问有状态 session bean?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12162177/

48 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com