【问题标题】:Specified reference was matched by more than one EJB - EJB 3.1指定的引用与多个 EJB - EJB 3.1 匹配
【发布时间】:2012-01-10 22:30:59
【问题描述】:

我对为什么在将我的耳朵部署到独立的 jboss AS 6 localhost 时收到以下错误有点困惑:

“java.lang.RuntimeException: 指定的引用 (ForecastUtilityLocal') 与多个 EJB 匹配” - 请参阅下面的详细信息...

部署错误: 由于以下原因,部署“vfs:///C:/jboss/jboss-6.0.0.Final/server/default/deploy/ear-1.0.0.ear”出错:java.lang。 RuntimeException:指定参考 [EJB 参考:beanI erface 'com.ls.forecast.ejb.util.ForecastUtilityLocal',beanName 'null',mappedName 'null',lookupName 'null',拥有单元 'ComponentDeploymentContext@23001552{org.jboss.metadata.ejb.jboss.JBossEnte riseBeanMetaData.ExpectedReturnEngineServiceImpl}'] 与多个 EJB 匹配:[org.jboss.metadata.ejb.jboss.JBossSessionBean31MetaData@63db1386{For​​ecastCacheManager}, org.jboss.metadata.ejb。 oss.JBossSessionBean31MetaData@ee01f6d1{ForecastUtility}]。明确指定 beanName 或确保 beanInterface 是唯一的。

    at org.jboss.deployers.plugins.deployers.DeployersImpl.checkComplete(DeployersImpl.java:1228) [:2.2.0.GA]
    at org.jboss.deployers.plugins.main.MainDeployerImpl.checkComplete(MainDeployerImpl.java:905) [:2.2.0.GA]
    at org.jboss.system.server.profileservice.deployers.MainDeployerPlugin.checkComplete(MainDeployerPlugin.java:87) [:6.0.0.Final]
    at org.jboss.profileservice.deployment.ProfileDeployerPluginRegistry.checkAllComplete(ProfileDeployerPluginRegistry.java:107) [:0.2.2]
    at org.jboss.system.server.profileservice.bootstrap.BasicProfileServiceBootstrap.start(BasicProfileServiceBootstrap.java:135) [:6.0.0.Final]
    at org.jboss.system.server.profileservice.bootstrap.BasicProfileServiceBootstrap.start(BasicProfileServiceBootstrap.java:56) [:6.0.0.Final]
    at org.jboss.bootstrap.impl.base.server.AbstractServer.startBootstraps(AbstractServer.java:827) [jboss-bootstrap-impl-base.jar:2.1.0-alpha-5]
    at org.jboss.bootstrap.impl.base.server.AbstractServer$StartServerTask.run(AbstractServer.java:417) [jboss-bootstrap-impl-base.jar:2.1.0-alpha-5]
    at java.lang.Thread.run(Thread.java:619) [:1.6.0_20]

这个 EJB 是用@Singleton 注释的,那么怎么会有多个实例呢?

@Singleton
@Local(ForecastUtilityLocal.class)
public class ForecastUtility implements ForecastUtilityLocal {

private static final Logger logger = LoggerFactory
        .getLogger(ForecastUtility.class);

@EJB
private CacheHelperLocal cacheHelper;
....
}

例如,它在不同的 EJB 中被引用,例如:

@Singleton
@Startup
@Local(CacheHelperLocal.class)
public class CacheHelper implements CacheHelperLocal {

@EJB
private ForecastModelUtilityLocal forecastModelUtility;

@EJB
private ConnectionManagerLocal connectionManager;

@EJB
private ForecastCacheManagerLocal forecastCacheManager;

@EJB
private ForecastUtilityLocal forecastUtility;
...
}

【问题讨论】:

    标签: jakarta-ee ejb-3.1 jboss6.x


    【解决方案1】:

    检查您是否不小心将@Local(ForecastUtilityLocal.class) 放在另一个 EJB 上。

    【讨论】:

      猜你喜欢
      • 2014-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-17
      相关资源
      最近更新 更多