繁体   English   中英

OpenEJB-排除单个bean

[英]OpenEJB - exclude single beans

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

我知道openejb.deployments.classpath.exclude属性。 我什至尝试按以下方式使用它properties.put("openejb.deployments.classpath.exclude", ".*/CommonCache.*"); 正如在这个SO问题中被轻描淡写的那样。

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代码中的手动操作来实现都无所谓。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM