Java 获取无法解析引用本地ejb引用未实现父接口

Java 获取无法解析引用本地ejb引用未实现父接口,java,dependency-injection,glassfish,ejb,Java,Dependency Injection,Glassfish,Ejb,我试图弄明白为什么我需要实现这两个接口以避免部署问题 Java代码 示例PlanAssembler.java ExtendedExamplePlanAssembler.java ExtendedExamplePlanAssemblerImpl.java 示例PlanServiceImpl.java 部署错误 修复?! 如果我将接口impl更改为不仅实现ExtendedExamplePlanAssembler接口,而且实现父ExamplePlanAssembler接口,则部署错误将消失 E

我试图弄明白为什么我需要实现这两个接口以避免部署问题

Java代码 示例PlanAssembler.java

ExtendedExamplePlanAssembler.java

ExtendedExamplePlanAssemblerImpl.java

示例PlanServiceImpl.java

部署错误 修复?! 如果我将接口impl更改为不仅实现
ExtendedExamplePlanAssembler
接口,而且实现父
ExamplePlanAssembler
接口,则部署错误将消失

ExtendedExamplePlanAssemblerImpl.java(v2)

问题 为什么将父接口添加到我的
实现
声明中可以解决部署问题?

EJB规范这么说

例如,特定会话bean公开的客户机视图不是由 还定义了一个会话bean

@Stateless
public class A implements Foo { ... }
@Stateless
public class B extends A implements Bar { ... }
假设Foo和Bar是本地业务接口,并且没有关联的部署描述符, 会话bean A公开本地业务接口Foo,会话bean B公开本地业务接口 酒吧,但不是福


参考资料。EJB3.1规范第4.9.2.1节您不能扩展接口 我需要您尝试实现接口(您可以在同一个bean类中实现这两个接口) 但现在,您需要将关键字“extenses”替换为“implements”


你的参考链接并没有直接指向支持你的主张的东西。我会把这个开几天。如果没有人提供更好的答案,或者您可以提供规范中确切措辞的深层链接,我将把答案授予您。上面的文本是EJB3.1规范的副本。搜索文本…可能是searc afain:-)谢谢。这个链接也有帮助。然而。。。。所举的例子并不完全涵盖我的情况。示例是类继承,每个类指定不同的接口。在我的示例中,我对实现子接口的类进行了接口继承。细微差别。
@Local
public interface ExtendedExamplePlanAssembler 
extends ExamplePlanAssembler{
   ExtExamplePlan toBO(ExamplePlanEntity entity, ExtExamplePlanEntity extEntity);
}
@Stateless
public class ExtendedExamplePlanAssemblerImpl 
implements ExtendedExamplePlanAssembler {
   /* Method impls removed */
}
@Stateless
public class ExamplePlanServiceImpl 
implements ExamplePlanService {
   private ExamplePlanAssembler examplePlanAssembler ;
   @EJB
   public void setAssembler(ExamplePlanAssembler examplePlanAssembler) {
       this.examplePlanAssembler = examplePlanAssembler;
    }
}
[#|.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|#]
@Stateless
public class ExtendedExamplePlanAssemblerImpl 
implements ExtendedExamplePlanAssembler,  ExamplePlanAssembler{
   /* Method impls removed */
}
@Stateless
public class A implements Foo { ... }
@Stateless
public class B extends A implements Bar { ... }
@Local
public interface ExtendedExamplePlanAssembler 
 extends ExamplePlanAssembler{
  ExtExamplePlan toBO(ExamplePlanEntity entity, ExtExamplePlanEntity  extEntity);
}