簡體   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