【问题标题】:OpenEJB - exclude single beansOpenEJB - 排除单个 bean
【发布时间】:2017-06-21 11:46:08
【问题描述】:

我正在使用 junit 和 OpenEJB 容器测试我的应用程序,以便为我的 bean 提供上下文。它正在从类路径中找到所有 bean 并启动它们。不幸的是,我想从上下文中删除一些 bean,所以我可以用其他实现替换这些 bean,模拟某些功能。

我知道openejb.deployments.classpath.exclude 属性。 我什至尝试按照properties.put("openejb.deployments.classpath.exclude", ".*/CommonCache.*"); 的方式使用它,因为它在this SO question 中被建议。

OpenEJB 看到此属性,但 bean 仍在启动,如下面的日志所示。

Using 'openejb.deployments.classpath.exclude=.*/CommonCacheBean.*'
Auto-deploying ejb CommonCacheBean: EjbDeployment(deployment-id=CommonCacheBean)
Jndi(name="java:global/ejbs/CommonCacheBean!my.package.ICommonCache")
Created Ejb(deployment-id=CommonCacheBean, ejb-name=CommonCacheBean, container=Default Stateless Container)

所以这是我的问题。有没有办法从 OpenEJB 上下文中排除单个 bean?是通过这种配置方式还是通过java代码中的手动操作来实现对我来说并不重要。

【问题讨论】:

    标签: java junit ejb openejb


    【解决方案1】:

    如果有人感兴趣,我没有设法从上下文中删除 bean。尽管上下文中有一个unbind() 方法,但它似乎不适用于OpenEJB 上下文。 我成功地将 bean 手动替换为 rebind(),但为时已晚,因为它们已经被注入到另一个 bean 中。

    他们解决我的问题的方法是在模拟实现中使用注释 @Alternative。我还必须在beans.xml 中添加条目以显示容器这些bean 并将我注入它们的方式从@EJB 更改为@Inject。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-06
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-12
      相关资源
      最近更新 更多