WELD-000072 El bean administrado que declara un ámbito de pasivación debe tener capacidad de pasivación

2 minutos de lectura

avatar de usuario
cristina

Escribí un programa simple en formularios web Java pero recibo el siguiente error:

WELD-000072 El bean administrado que declara un ámbito de pasivación debe tener capacidad de pasivación. Frijol: Frijol Administrado [class 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;
    }
}

Puede hacer que su bean sea capaz de pasivar implementando la interfaz Serializable:

public class DemoBean implements Serializable { ... }

Tenga en cuenta que hay más requisitos para ser capaz de pasivación. Consulte la documentación de soldadura para obtener más información.

  • Gracias por la solución.

    – kevin onofre

    16 dic 2021 a las 22:09


  • ¡Qué mensaje de error críptico!

    – Núcleo Raiden

    27 dic 2021 a las 20:21

avatar de usuario
Tim

El error puede permanecer aunque el bean CDI sea serializable:

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

Clase de ejemplo:

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

Asegúrate de que todo @Interceptores también son sellables:

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

  • Gracias serializable @Interceptors era el problema para mi!

    – Antonio O.

    4 de abril de 2013 a las 10:12

Debe ser serializable.

Ver esta respuesta.

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

Mejor Anders

avatar de usuario
Mohd Kose Avase

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

}

También puede activar el comportamiento de pasivación de su bean con la anotación:

@Stateful(capacidad de pasivación=verdadero)

En este caso, no necesita implementar la interfaz Serializable.

Saludos. Jorge

avatar de usuario
Fabián Pisani

Verificar importaciones

(algunas veces netbeans usaba otros de otras bibliotecas)

Ejemplo. importar javax.faces.view.ViewScoped; cámbielo importando javax.faces.bean.ViewScoped;

avatar de usuario
Marcos Chacaliaza Altamirano

Provocado por: org.jboss.weld.exceptions.DeploymentException: WELD-000072: el bean que declara un ámbito de pasivación debe tener capacidad de pasivación. Frijol: Frijol Administrado [class 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 solucion 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();
    }
  }
}

¿Ha sido útil esta solución?