2012-03-18 13 views
60

me escribió un programa sencillo en formularios web Java, pero estoy recibiendo el siguiente error:Java error: Weld-000072 bean gestionado declarar un alcance de pasivación debe haber pasivación capaz

WELD-000072 Managed bean declaring a passivating scope must be passivation capable. Bean: Managed Bean [class BeanPakage.DemoBeans] with qualifiers [@Any @Default @Named]

puede alguien decirme donde este error ¿viene de?

mi código es:

package BeanPakage; 

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




} 

Respuesta

121

Usted puede hacer que su pasivación frijol capaz implementando la interfaz Serializable:

public class DemoBean implements Serializable { ... } 

nota que hay más requisitos para ser capaces de pasivación. Consulte la documentación de Soldadura para más información.

19

El error puede permanecer a pesar de que el grano de CDI es serializable:

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

clase Ejemplo:

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

Asegúrese de que todos los @Interceptors son seializable así:

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

Muchas gracias hombre. Luchando con esto por 1 hora ... –

+0

¡Gracias, '@ Interceptores 'serializables fue el problema para mí! –

5

Marca DemoBeansserializado

@Named("DemoBeans") 
@SessionScoped 
public class DemoBeans implements Serializable 
{ 

    private String name; 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

} 
2

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

@Stateful (passivationCapable = true)

En este caso no es necesario para implementar la interfaz Serializable .

Atentamente. Jorge

0

Verificar importaciones

(algunas veces netbeans usados ​​otros de los demás bibliotecas)

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

0

Causado por: org.jboss.weld.exceptions.DeploymentException: WELD-000072: Bean que declara que un ámbito de pasivación debe ser apto para la pasivación. Bean: Managed Bean [clase com.marcos.controller.PersonaBean] con los calificadores [@Default @Named @Any]


Lo resuelto, al parecer, CDI, no reconocía el grano, acabo de hacer que sea más explícita

@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 mí :

@Named ("PersonaBean") 
@ViewScoped 
public class PersonaBean implements Serializable { 
@Inject 
private IPersonaService service; 
public void registrar() { 

    try { 
     service.registrar(null); 

    }catch (Exception e) { 
     e.printStackTrace(); 
    } 
    } 
} 
Cuestiones relacionadas