2017-06-21 98 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