8 Replies Latest reply on Sep 29, 2010 1:33 AM by jaikiran pai

    JBoss AS 6 SNAPSHOT, NonDeterministicInterfaceException

    Elias Ross Master

      Testing on the latest AS build (as of today).

       

      I have a no-interface singleton/startup bean depending on a bean with a remote and local interface and seeing this error. I'm not sure what this means entirely.

       

      Caused by: org.jboss.ejb3.ejbref.resolver.spi.NonDeterministicInterfaceException: beanInterface specified, com.autodesk.lbs.afx.subscriptionmanager.SubscriptionManager, is not unique within EJB SubscriptionManagerEJB
              at org.jboss.ejb3.ejbref.resolver.ejb30.impl.EJB30MetaDataBasedEjbReferenceResolver.isMatch(EJB30MetaDataBasedEjbReferenceResolver.java:225) [:]
              at org.jboss.ejb3.ejbref.resolver.ejb31.impl.EJB31MetaDataBasedEjbReferenceResolver.isMatch(EJB31MetaDataBasedEjbReferenceResolver.java:77) [:]
              at org.jboss.ejb3.ejbref.resolver.ejb30.impl.EJB30MetaDataBasedEjbReferenceResolver.findSessionBean(EJB30MetaDataBasedEjbReferenceResolver.java:108) [:]
              at org.jboss.ejb3.ejbref.resolver.ejb30.impl.EJB30MetaDataBasedEjbReferenceResolver.resolveEjb(EJB30MetaDataBasedEjbReferenceResolver.java:76) [:]
              at org.jboss.ejb3.ejbref.resolver.ejb30.impl.ScopedEJBReferenceResolver.find(ScopedEJBReferenceResolver.java:62) [:]
              at org.jboss.ejb3.ejbref.resolver.ejb30.impl.ScopedEJBReferenceResolver.resolveWithinDeploymentUnit(ScopedEJBReferenceResolver.java:106) [:]
              at org.jboss.ejb3.ejbref.resolver.ejb30.impl.ScopedEJBReferenceResolver.resolveEjb(ScopedEJBReferenceResolver.java:77) [:]
              at org.jboss.ejb3.singleton.aop.impl.AOPBasedSingletonContainer.resolveEJB(AOPBasedSingletonContainer.java:669) [:1.0.0-alpha-14]
              at org.jboss.injection.EJBRemoteHandler.ejbRefDependency(EJBRemoteHandler.java:132) [:1.5.2]
              at org.jboss.injection.EJBRemoteHandler.handleFieldAnnotations(EJBRemoteHandler.java:378) [:1.5.2]
              at org.jboss.injection.InjectionUtil.processFieldAnnotations(InjectionUtil.java:160) [:1.5.2]
              at org.jboss.injection.InjectionUtil.processAnnotations(InjectionUtil.java:197) [:1.5.2]
              at org.jboss.ejb3.EJBContainer.processMetadata(EJBContainer.java:680) [:1.5.2]
              at org.jboss.ejb3.singleton.deployer.SingletonContainerDeployer.deploy(SingletonContainerDeployer.java:215) [:1.0.0-alpha-14]
              at org.jboss.ejb3.singleton.deployer.SingletonContainerDeployer.deploy(SingletonContainerDeployer.java:85) [:1.0.0-alpha-14]
              at org.jboss.deployers.spi.deployer.helpers.AbstractRealDeployerWithInput.deploy(AbstractRealDeployerWithInput.java:125) [:2.2.0.Alpha7]
              ... 34 more

       

      The bean in question looks like:

       

      @Stateless
      public class SubscriptionManagerEJB implements SubscriptionManagerLocal,
              SubscriptionManager {

       

      And the local/remote interfaces look like:

       

      @Local
      public interface SubscriptionManagerLocal extends SubscriptionManager {}
      
      @Remote
      public interface SubscriptionManager { // business methods here ... 
      }

       

      This is probably not good coding, still it's a pattern in use throughout the deployment...