jmc*_*n92 1 cdi ejb-3.0 java-ee-6 jboss7.x
我正在使用带有CDI的JBoss 7.1.1.
我在JNDI中有一个名为ServiceAccount的无状态bean.这是真正的服务实现.我有另一个名为ServiceAccountMock的Statelss bean,它是一个Mock服务.两者都来自同一个界面,并打包在service.ear中.
我想要做的是在bean.xml中声明模拟服务作为替代,重新部署我的服务,然后所有客户端都看到模拟版本(在客户端没有改变任何东西).
当我部署我的service.ear时,JBoss说:
java.lang.IllegalArgumentException: JBAS011046: A component named 'ServiceAccount' is already defined in this module
Run Code Online (Sandbox Code Playgroud)
这是事实,两种服务都以相同的方式声明(@Stateless(name ="ServiceAccount")).
如果我更改模拟版本的名称,我必须在客户端更改使用哪个EJB(我不想这样做).
有谁知道这是怎么做到的吗 ?
我认为您不能在同一个应用程序中部署具有相同名称的2个bean.
如果bean的客户端只是本地客户端,则应使用CDI类型注入选择.
@Alternative注释保留在模拟上.@Inject注释而不是@EJB可能有帮助的注释).EJB规范和CDI尚未完全一致.EJB有一些元素,如名称,需要在应用程序上是唯一的,并且在CDI替代功能中不予考虑.
所以我认为你不能混合使用EJB名称注入选择和CDI替代注入选择.
| 归档时间: |
|
| 查看次数: |
4549 次 |
| 最近记录: |