Escribí un programa simple en formularios web de Java, pero recibo el siguiente error:
WELD-000072 El bean administrado que declara un ámbito de pasivación debe tener capacidad de pasivación. Bean: Bean administrado [clase
BeanPakage.DemoBeans
] con calificadores [@Any
@Default
@Named
]
¿Alguien puede decirme de dónde viene este error?
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
fuente
fuente
@Interceptors
fue el problema para mí!Debe ser serializable.
Vea esta respuesta.
https://community.jboss.org/thread/179828
Lo mejor, Anders
fuente
Hacer
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; } }
fuente
También puede activar el comportamiento de pasivación de su bean con la anotación:
@Stateful (passivationCapable = verdadero)
En este caso, no es necesario implementar una interfaz serializable.
Saludos. Jorge
fuente
Verificar importaciones
(algunas veces netbeans usó otras de otras bibliotecas)
Ejemplo. import javax.faces.view.ViewScoped; cámbielo importando javax.faces.bean.ViewScoped;
fuente
javax.faces.bean.ViewScoped
a favor dejavax.faces.view.ViewScoped
. ¿Significa esto que tengo que revisar todos mis beans de alcance de vista y hacerlos serializables? Desde eljavax.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: Bean que declara un alcance pasivante debe ser capaz de pasivación Bean: Bean administrado [clase com.marcos.controller.PersonaBean] con calificadores [@Default @Named @Any]
Lo resolví, aparentemente CDI, no reconocí el bean, solo lo hice más 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(); } } }
la solución para mi:
@Named ("PersonaBean") @ViewScoped public class PersonaBean implements Serializable { @Inject private IPersonaService service; public void registrar() { try { service.registrar(null); }catch (Exception e) { e.printStackTrace(); } } }
fuente