@Local接口有很多实现

时间:2012-09-28 10:02:27

标签: java java-ee glassfish ejb-3.0

我有@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 的实现 有任何想法吗?也许我可以使用一些部署 - desriptor或其他东西 EJB 3.0, Java EE 5

2 个答案:

答案 0 :(得分:1)

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

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

- 更新

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

这种情况似乎只发生在EJB-in-WAR包装中。在ejb jar中没有发生。

答案 1 :(得分:0)

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

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