1

我有@Local 界面

@Local
public interface IRepo
{  

和两个实现,但只有 1 个bean 实现

@Stateless(name = "RepoBean")
public class RepoBean implements IRepo
{  

第二

public class SimpleRepo implements ILogRepositoryIRepo
{  

并将其注入我的 Web 服务使用

   @EJB(name = "RepoBean")
   private IRepo repository;  

它运行良好jbossWebLogic但是在GlassFish 3.1.1我得到错误(部署时)

  Cannot resolve reference Local ejb-ref name=RepoBean,Local 3.x interface =com.company.IRepo,ejb-link=null,lookup=,mappedName=,jndi-name=,refType=Session because there are 2 ejbs in the application with interface com.company.IRepo.  

但我只有 1 个ejb实现。
有任何想法吗?也许我可以使用一些部署描述符或其他东西。
EJB 3.0, Java EE 5

4

2 回答 2

1

我真的不明白您要做什么,但是如果您有两个实现相同业务接口的 bean,则必须使用 'beanName' 属性,如下所示:

@EJB(beanName = "RepoBean")
private IRepo repository;

- 更新

看看这个:java.net/node/702013。这个问题有一个错误问题:java.net/jira/browse/GLASSFISH-11684

似乎这只发生在 EJB-in-WAR 打包中。在 ejb jar 中不会发生。

于 2012-09-28T14:28:50.460 回答
0

好吧,Glassfish 比 JBoss 和 WebLogic 更正确,Business-Bean-Classes 应该都有自己的 EJB-Local-Interface。

我猜 WL 或 JBoss 会给你一个警告而不是一个错误。

于 2012-09-28T10:21:54.497 回答