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

chr*_*ina 77 java cdi jboss-weld

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

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

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

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

Mat*_*ndy 158

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

public class DemoBean implements Serializable { ... }
Run Code Online (Sandbox Code Playgroud)

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


Tim*_*Tim 19

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

WELD-000072 Managed bean declaring a passivating scope must be passivation capable
Run Code Online (Sandbox Code Playgroud)

示例类:

@Named
@ConversationScoped
public class TransactionMatchController implements Serializable {
    ...
}
Run Code Online (Sandbox Code Playgroud)

确保所有@Interceptors都是可以自由的:

@Interceptor
@Transactional
public class TransactionInterceptor implements Serializable {
    ...
}
Run Code Online (Sandbox Code Playgroud)


and*_*ard 6

它必须是可序列化的.

看到这个答案.

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

最好,安德斯


小智 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;
    }

}
Run Code Online (Sandbox Code Playgroud)