Escrevi um programa simples em formulários da web java, mas estou recebendo o seguinte erro:
WELD-000072 O bean gerenciado que declara um escopo de passivação deve ser capaz de passivação. Bean: Managed Bean [classe
BeanPakage.DemoBeans
] com qualificadores [@Any
@Default
@Named
]
Alguém pode me dizer de onde vem esse erro?
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;
}
}
java
cdi
jboss-weld
christina
fonte
fonte
@Interceptors
era o problema para mim!Deve ser serializável.
Veja esta resposta.
https://community.jboss.org/thread/179828
Atenciosamente, Anders
fonte
Faça
DemoBeans
serializado@Named("DemoBeans") @SessionScoped public class DemoBeans implements Serializable { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }
fonte
Você também pode ativar o comportamento de passivação do seu bean com a anotação:
@Stateful (passivationCapable = true)
Nesse caso, você não precisa implementar a interface serializável.
Saudações. Jorge
fonte
Verificar importações
(algumas vezes o netbeans usou outros de outras bibliotecas)
Exemplo. import javax.faces.view.ViewScoped; altere-o import javax.faces.bean.ViewScoped;
fonte
javax.faces.bean.ViewScoped
em favor dejavax.faces.view.ViewScoped
. Isso significa que preciso examinar todos os beans com escopo de visão e torná-los serializáveis? Dojavax.faces.bean.ViewScoped
javadoc:@deprecated This has been replaced by {@code javax.faces.view.ViewScoped}. The functionality of this corresponding annotation is identical to this one, but it is implemented as a CDI custom scope.
Causado por: org.jboss.weld.exceptions.DeploymentException: WELD-000072: O bean que declara um escopo de passivação deve ser capaz de passivação. Bean: Managed Bean [class com.marcos.controller.PersonaBean] com qualificadores [@Default @Named @Any]
Resolvi, aparentemente CDI, não reconheci o bean, apenas deixei mais explícito
@Named @ViewScoped public class PersonaBean implements Serializable { @Inject private IPersonaService service; public void registrar() { try { service.registrar(null); }catch (Exception e) { e.printStackTrace(); } } }
a solução para mim:
@Named ("PersonaBean") @ViewScoped public class PersonaBean implements Serializable { @Inject private IPersonaService service; public void registrar() { try { service.registrar(null); }catch (Exception e) { e.printStackTrace(); } } }
fonte