相关疑难解决方法(0)

CDI:WELD-001408不满意的依赖关系,如何解决?

我用CDI做了一个小测试项目.我的应用程序由EJB EAR和WAR组成,全部部署在Glassfish 4上.我正在使用Hibernate 4.3.4来访问数据库.

我的目标是验证EJB(DAO)中的类是否可以接收EntityManager的注入.

SessionBean + EJB模式并不是很棒,但我必须修改已经创建的应用程序,所以我没有太多选择.

这是我的EJB代码:

@Named
public class DAOTest implements Serializable {
    private static final long serialVersionUID = 1L;

    @PersistenceContext(unitName="CDI-ejb")
    private EntityManager em;

    public void test(){
        //em.getClass();
    }


    public EntityManager getEm() {
       return em;
    }


    public void setEm(EntityManager em) {
        this.em = em;
    }

    public DAOTest() {
        // TODO Auto-generated constructor stub
    }

}
Run Code Online (Sandbox Code Playgroud)

Service.java

@Stateless
@LocalBean
public class Service implements ServiceLocal {

    @Inject DAOTest test;
    /**
    * Default constructor. 
    */
    public Service() {
        // TODO …
Run Code Online (Sandbox Code Playgroud)

java-ee cdi weld glassfish-4

20
推荐指数
2
解决办法
5万
查看次数

@Dependent范围在Wildfly中不是默认的吗?

我在使用Wildfly通过@Inject注入POJO时遇到了一些麻烦.文件明确指出:

@Dependent - 如果未指定,则为默认范围; 这意味着一个对象只存在一个客户端(bean),并且与该客户端(bean)具有相同的生命周期.

但是,当我有两个班级时:

@Singleton
@Startup
public class A{
    @Inject
    private B b;
}

public class B{
    public B(){}
}
Run Code Online (Sandbox Code Playgroud)

我一直在:

注入点上带有限定符@Default的类型B的不满意依赖[BackedAnnotatedField] @Inject [...]

当我添加@Dependent时,一切都像魅力一样.我错过了什么吗?这种行为是野生蝇特有的吗?希望你能帮忙,谢谢.

java java-ee cdi wildfly

0
推荐指数
1
解决办法
1496
查看次数

标签 统计

cdi ×2

java-ee ×2

glassfish-4 ×1

java ×1

weld ×1

wildfly ×1