WELD-000072声明钝化范围的管理bean必须具有钝化功能

时间:2012-03-18 17:21:06

标签: java cdi jboss-weld

我在java web表单中编写了一个简单的程序但是我收到以下错误:

  

WELD-000072声明钝化范围的托管bean必须具有钝化功能。 Bean:管理Bean [类BeanPakage.DemoBeans],带有限定符[@Any @Default @Named]

有谁能告诉我这个错误来自哪里?

import javax.enterprise.context.SessionScoped;
import javax.inject.Named;


@Named("DemoBeans")
@SessionScoped
public class DemoBeans {

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

7 个答案:

答案 0 :(得分:146)

您可以通过实现Serializable接口来实现bean钝化:

public class DemoBean implements Serializable { ... }

请注意,对钝化能力有更多要求。有关更多信息,请参阅焊接文档。

答案 1 :(得分:19)

即使CDI bean可序列化,错误仍可能保留:

WELD-000072 Managed bean declaring a passivating scope must be passivation capable

示例类:

@Named
@ConversationScoped
public class TransactionMatchController implements Serializable {
    ...
}

确保所有 @Interceptors 也可以使用:

@Interceptor
@Transactional
public class TransactionInterceptor implements Serializable {
    ...
}

答案 2 :(得分:6)

必须是可序列化的。

看到这个答案。

https://community.jboss.org/thread/179828

最佳, 安德斯

答案 3 :(得分:5)

点击DemoBeans 序列化

@Named("DemoBeans")
@SessionScoped
public class DemoBeans  implements Serializable
{

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}

答案 4 :(得分:2)

您还可以使用注释激活bean的钝化行为:

@Stateful(passivationCapable =真)

在这种情况下,您不需要实现Serializable接口。

的问候。 乔治

答案 5 :(得分:1)

验证导入

(有时netbeans使用其他库中的其他人)

实施例。 import javax.faces.view.ViewScoped;通过导入javax.faces.bean.ViewScoped;

更改它

答案 6 :(得分:0)

引起:org.jboss.weld.exceptions.DeploymentException:WELD-000072:声明钝化作用域的Bean必须具有钝化功能。 Bean:Managed Bean [类com.marcos.controller.PersonaBean]带限定符[@Default @Named @Any]

我解决了它,显然是CDI,我没认出豆子,我只是让它更明确

@Named
@ViewScoped
public class PersonaBean  implements Serializable {
@Inject
private IPersonaService service;
public void registrar() {

    try {
        service.registrar(null);

    }catch (Exception e) {
        e.printStackTrace();
    }
  }
}

我的解决方案:

@Named ("PersonaBean")
@ViewScoped
public class PersonaBean  implements Serializable {
@Inject
private IPersonaService service;
public void registrar() {

    try {
        service.registrar(null);

    }catch (Exception e) {
        e.printStackTrace();
    }
  }
}