Java 获取无法解析引用本地ejb引用未实现父接口
我试图弄明白为什么我需要实现这两个接口以避免部署问题 Java代码 示例PlanAssembler.java ExtendedExamplePlanAssembler.java ExtendedExamplePlanAssemblerImpl.java 示例PlanServiceImpl.java 部署错误 修复?! 如果我将接口impl更改为不仅实现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
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);
}