【问题标题】:Getting Cannot resolve reference Local ejb-ref not implementing parent interface获取无法解析引用本地 ejb-ref 未实现父接口
【发布时间】:2012-10-01 04:06:36
【问题描述】:

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

Java 代码

ExamplePlanAssembler.java

@Local
public interface ExamplePlanAssembler {
   ExamplePlan toBO(ExamplePlanEntity entity);
}

ExtendedExamplePlanAssembler.java

@Local
public interface ExtendedExamplePlanAssembler 
extends ExamplePlanAssembler{
   ExtExamplePlan toBO(ExamplePlanEntity entity, ExtExamplePlanEntity extEntity);
}

ExtendedExamplePlanAssemblerImpl.java

@Stateless
public class ExtendedExamplePlanAssemblerImpl 
implements ExtendedExamplePlanAssembler {
   /* Method impls removed */
}

ExamplePlanServiceImpl.java

@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|#]

修复?!

如果我将接口 impl 更改为不仅实现 ExtendedExamplePlanAssembler 接口,还实现父接口 ExamplePlanAssembler,我的部署错误就会消失。

ExtendedExamplePlanAssemblerImpl.java (v2)

@Stateless
public class ExtendedExamplePlanAssemblerImpl 
implements ExtendedExamplePlanAssembler,  ExamplePlanAssembler{
   /* Method impls removed */
}

问题

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

【问题讨论】:

    标签: java dependency-injection glassfish ejb


    【解决方案1】:

    EJB 规范是这么说的,

    例如,由特定会话 bean 公开的客户端视图不会被子类继承 也恰好定义了一个会话 bean。

    @Stateless
    public class A implements Foo { ... }
    @Stateless
    public class B extends A implements Bar { ... }
    

    假设 Foo 和 Bar 是本地业务接口并且没有关联的部署描述符, 会话 bean A 公开本地业务接口 Foo 和会话 bean B 公开本地业务接口 酒吧,但不是 Foo。

    参考here。 EJB3.1 规范第 4.9.2.1 节

    【讨论】:

    • 您的参考链接并没有真正指向直接支持您声明的内容。我会让这个开放几天。如果没有人提供更好的答案,或者您可以提供指向规范中确切措辞的深层链接,我会将答案奖励给您。
    • 以上文字是 ejb 3.1 规范的副本。搜索文本...可能很喜欢:-)
    • 谢谢。这个链接也有点帮助。 weblogs.java.net/blog/sekhar/archive/2009/02/…
    • 然而....给出的例子并没有真正涵盖我的情况。这些示例是类继承,每个类指定不同的接口。在我的示例中,我与实现子接口的类具有接口继承。细微差别。
    【解决方案2】:

    你不能扩展接口 我需要你尝试实现接口(你可以在同一个 bean 类中实现这两个接口) 但现在您需要将关键字“extends”替换为“implements”

    @Local
    public interface ExtendedExamplePlanAssembler 
     extends ExamplePlanAssembler{
      ExtExamplePlan toBO(ExamplePlanEntity entity, ExtExamplePlanEntity  extEntity);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-17
      • 2012-02-21
      • 2018-02-03
      • 2021-07-26
      • 2016-12-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多