J’ai écrit un programme simple dans des formulaires Web java mais je reçois l’erreur suivante:
WELD-000072 Le bean géré déclarant un périmètre de passivation doit être compatible avec la passivation. Bean: Bean géré [classe
BeanPakage.DemoBeans
] avec des qualificatifs [@Any
@Default
@Named
]
Quelqu’un peut-il me dire d’où vient cette erreur?
import javax.enterprise.context.SessionScoped; import javax.inject.Named; @Named("DemoBeans") @SessionScoped public class DemoBeans { private Ssortingng name; public Ssortingng getName() { return name; } public void setName(Ssortingng name) { this.name = name; } }
Vous pouvez rendre votre passivation de bean compatible en implémentant l’interface Serializable:
public class DemoBean implements Serializable { ... }
Notez qu’il y a plus d’exigences pour être capable de passivation. Reportez-vous à la documentation relative à la soudure pour plus d’informations.
L’erreur peut restr même si le bean CDI est sérialisable:
WELD-000072 Managed bean declaring a passivating scope must be passivation capable
Exemple de classe:
@Named @ConversationScoped public class TransactionMatchController implements Serializable { ... }
Assurez-vous que tous les @Intercepteurs sont également sialisables:
@Interceptor @Transactional public class TransactionInterceptor implements Serializable { ... }
Il doit être sérialisable.
Voir cette réponse.
https://community.jboss.org/thread/179828
Best, Anders
Faire en DemoBeans
sérialisé
@Named("DemoBeans") @SessionScoped public class DemoBeans implements Serializable { private Ssortingng name; public Ssortingng getName() { return name; } public void setName(Ssortingng name) { this.name = name; } }
Vous pouvez également activer le comportement de passivation de votre bean avec l’annotation:
@Stateful (passivationCapable = true)
Dans ce cas, vous n’avez pas besoin d’implémenter l’interface Serializable.
Cordialement. Jorge
Vérifier les importations
(quelques fois, netbeans utilisait d’autres bibliothèques d’autres bibliothèques)
Exemple. import javax.faces.view.ViewScoped; changez-le par import javax.faces.bean.ViewScoped;
Causée par: org.jboss.weld.exceptions.DeploymentException: WELD-000072: Le bean déclarant une étendue de passivation doit être capable de passiver. Bean: Bean géré [classe com.marcos.controller.PersonaBean] avec qualificateurs [@Default @Named @Any]
Je l’ai résolu, apparemment CDI, je n’ai pas reconnu le haricot, je l’ai juste rendu plus explicite
@Named @ViewScoped public class PersonaBean implements Serializable { @Inject private IPersonaService service; public void registrar() { try { service.registrar(null); }catch (Exception e) { e.printStackTrace(); } } }
la solution pour moi:
@Named ("PersonaBean") @ViewScoped public class PersonaBean implements Serializable { @Inject private IPersonaService service; public void registrar() { try { service.registrar(null); }catch (Exception e) { e.printStackTrace(); } } }