【问题标题】:Weld injection failing when calling a method from an super/abstract class with Wicket使用 Wicket 从超级/抽象类调用方法时焊接注入失败
【发布时间】:2010-08-19 16:45:05
【问题描述】:

我遇到了焊接检票口问题。当@Inject-ing 从抽象类继承的 EJB 时,如果我尝试从抽象类调用方法,我会收到 ejb-ref 错误。 但是,如果我从具体类中调用一个方法,它就可以完美地工作。我可以重写方法并调用它们,我可以将一个重写的方法委托给抽象类(让重写的方法调用 super.method()),这样就可以了。我必须对抽象类进行某种配置吗?

谢谢。

【问题讨论】:

    标签: java ejb wicket jboss-weld


    【解决方案1】:

    这是根据我使用 Seam 的经验得出的猜测。 Weld 注入了一个代理来包装你的 bean。代理仅拦截公共方法并将这些方法委托给底层 bean(在您的情况下为 EJB)。当您在代理上调用受保护的方法或从同一包中的类调用包私有方法时,该方法不会被拦截,而是直接在代理上调用,这会导致您的错误。简而言之,只需调用公共方法或通过接口返回所有依赖项并将其注入。

    【讨论】:

    • 感谢您的回复,添加公共接口的工作方式与覆盖方法的工作方式相同,但是公共接口无法扩展任何其他接口,因为我仍然有复制代码...
    • 我从@Inject 更改为@EJB 并且效果很好,如果有人想写下这个答案,我会接受。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-02
    相关资源
    最近更新 更多