【问题标题】:DeploymentException: WELD-001408 on injection when using extended classesDeploymentException:使用扩展类时注入时出现 WELD-001408
【发布时间】:2015-01-30 09:30:24
【问题描述】:

我有以下 DBO:

public abstract class DetailDbo{
    ....
}

public abstract class MasterDbo<T>{
    ....
}

public class B extends DetailDbo{
    ....
}

public class A extends MasterDbo<B>{
    ....
}

我的服务:

@Stateless
@LocalBean
public class MyService<T extends MasterDbo<D>, D extends DetailDbo>{
    //implemetation
}

我的豆子:

public class MyBean<T extends MasterDbo<D>, D extends DetailDbo>{

    @Inject
    protected MyService<T, D>   ws;

    ...
}

扩展豆:

SpecialBean extends MyBean<A, B>{
    //implemetation
}

在注入点我得到以下异常:

Caused by: org.jboss.weld.exceptions.DeploymentException: WELD-001408 Unsatisfied dependencies for type [MyService<A, B>] with qualifiers [@Default] at injection point [[field] @Inject protected com.xxx.xx.MyBean.ws]

为什么会出现此错误?

感谢您的帮助!

【问题讨论】:

    标签: jakarta-ee dependency-injection cdi jboss-weld


    【解决方案1】:

    恭喜!您刚刚在 Weld 中发现了一个错误:https://issues.jboss.org/browse/WELD-1855

    在等待修复时,您可以使用此解决方法。将您的 EJB 更改为:

    @Stateless
    @LocalBean
    public class MyService<T extends MasterDbo<? extends DetailDbo>, D extends DetailDbo>{
        //implemetation
    }
    

    它应该可以工作。

    【讨论】:

    • 嗯,即使这样也行不通,不幸的是我不得不将其更改为:public class MyService&lt;T extends MasterDbo&lt;?&gt;, D extends DetailDbo&gt;{
    • 我在 github 上创建了一个测试,它适用于 WildFly 8.2.0(焊接 2.2.6)。您可以自行测试:克隆github.com/antoinesd/CDI-Sandbox 并启动mvn clean test -Pweld-2.2mvn clean test -Pwildlfy-8
    • 必须是我的版本(WELD 1.1.17)
    猜你喜欢
    • 2016-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-20
    • 2020-03-26
    • 2012-02-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多