title: Getting Cannot resolve reference Local ejb-ref not implementing parent interface
body: <p>I'm trying to figure out why I need to implement both of these interfaces in order to avoid deployment issues.</p>
  
  <h2>Java Code</h2>
  
  <p><strong>ExamplePlanAssembler.java</strong>
  </p>
  
  <pre><code>@Local
  public interface ExamplePlanAssembler {
     ExamplePlan toBO(ExamplePlanEntity entity);
  }
  </code></pre>
  
  <p><strong>ExtendedExamplePlanAssembler.java</strong>
  </p>
  
  <pre><code>@Local
  public interface ExtendedExamplePlanAssembler 
  extends ExamplePlanAssembler{
     ExtExamplePlan toBO(ExamplePlanEntity entity, ExtExamplePlanEntity extEntity);
  }
  </code></pre>
  
  <p><strong>ExtendedExamplePlanAssemblerImpl.java</strong>
  </p>
  
  <pre><code>@Stateless
  public class ExtendedExamplePlanAssemblerImpl 
  implements ExtendedExamplePlanAssembler {
     /* Method impls removed */
  }
  </code></pre>
  
  <p><strong>ExamplePlanServiceImpl.java</strong>
  </p>
  
  <pre><code>@Stateless
  public class ExamplePlanServiceImpl 
  implements ExamplePlanService {
     private ExamplePlanAssembler examplePlanAssembler ;
     @EJB
     public void setAssembler(ExamplePlanAssembler examplePlanAssembler) {
         this.examplePlanAssembler = examplePlanAssembler;
      }
  }
  </code></pre>
  
  <h2>Deployment Error</h2>
  
  <pre><code>[#|.507-0500|SEVERE|gf3.1.2|javax.enterprise.system.tools.deployment.org.glassfish.deployment.common
  |_ThreadID=83;_ThreadName=Thread-7;|Cannot resolve reference Local ejb-ref name=
  com.myco.services.business.ExampleServiceImpl/examplePlanAssembler,Local 3.x interface =
  com.myco.services.assembly.ExamplePlanAssembler,ejb-link=null,lookup=,mappedName=,jndi-name=,refType=Session|#]
  
  [#|.508-0500|SEVERE|gf3.1.2|javax.enterprise.system.core.com.sun.enterprise.v3.server
  |_ThreadID=83;_ThreadName=Thread-7;|Exception while deploying the app [mycoservicesear]|#]
  
  [#|.508-0500|SEVERE|gf3.1.2|javax.enterprise.system.core.com.sun.enterprise.v3.server
  |_ThreadID=83;_ThreadName=Thread-7;|Cannot resolve reference Local ejb-ref name=
  com.myco.services.business.ExampleServiceImpl/examplePlanAssembler,Local 3.x interface =
  com.myco.services.assembly.ExamplePlanAssembler,ejb-link=null,lookup=,mappedName=,jndi-name=,refType=Session
  java.lang.RuntimeException: Cannot resolve reference Local ejb-ref name=
  com.myco.services.business.ExampleServiceImpl/examplePlanAssembler,Local 3.x interface =
  com.myco.services.assembly.ExamplePlanAssembler,ejb-link=null,lookup=,mappedName=,jndi-name=,refType=Session
  
  
  [#|.516-0500|SEVERE|gf3.1.2|javax...gf.deployment.admin
  |_ThreadID=83;_ThreadName=Thread-7;|Exception while deploying the app [mycoservicesear] : Cannot resolve reference Local ejb-ref name=
  com.myco.services.business.ExampleServiceImpl/examplePlanAssembler,Local 3.x interface =
  com.myco.services.assembly.ExamplePlanAssembler,ejb-link=null,lookup=,mappedName=,jndi-name=,refType=Session|#]
  </code></pre>
  
  <h2>The Fix?!</h2>
  
  <p>If I change my interface impl to implement not only the <code>ExtendedExamplePlanAssembler</code> interface, but also the parent <code>ExamplePlanAssembler</code> interface, my deployment error disappears.</p>
  
  <p><strong>ExtendedExamplePlanAssemblerImpl.java (v2)</strong>
  </p>
  
  <pre><code>@Stateless
  public class ExtendedExamplePlanAssemblerImpl 
  implements ExtendedExamplePlanAssembler,  ExamplePlanAssembler{
     /* Method impls removed */
  }
  </code></pre>
  
  <h2>The Question</h2>
  
  <p><em>Why</em> does adding the parent interface to my <code>implements</code> declaration resolve deployment issues?</p>