2017-06-21 62 views
0

我测试使用JUnit和OpenEJB的容器为我的豆提供上下文我的申请。它从类路径中找到所有的bean并启动它们。可惜的是有一些豆类我想从上下文中删除,这样我就可以与其他实现替换这些豆子,嘲讽某些功能。OpenEJB的 - 排除单豆

我知道openejb.deployments.classpath.exclude财产。 我甚至尝试如下properties.put("openejb.deployments.classpath.exclude", ".*/CommonCache.*");因为它是在this SO question sugested使用它。

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代码中手动操作。

回答

0

如果有人感兴趣,我没有设法从上下文中删除bean。虽然在上下文中unbind()方法似乎并没有对OpenEJB的环境中工作。 我成功地用rebind()手动替换了bean,但是已经太晚了,因为它们已经被注入到另一个bean中。

他们的方式我解决了我的问题是通过在模拟实现上使用注释@Alternative。我还必须在beans.xml中添加条目以显示容器中的这些豆类,并将其从@EJB注入到@Inject