WELD-000072 एक पारित होने की गुंजाइश की घोषणा करने वाले प्रबंधित बीन सक्षम होना चाहिए


89

मैंने जावा वेब फॉर्म में एक सरल प्रोग्राम लिखा था, लेकिन मुझे निम्नलिखित त्रुटि प्राप्त हो रही है:

WELD-000072 एक पारित होने की गुंजाइश की घोषणा करने वाले प्रबंधित बीन सक्षम होना चाहिए। बीन: प्रबंधित बीन [वर्ग BeanPakage.DemoBeans] क्वालीफायर के साथ [ @Any @Default @Named]

क्या कोई मुझे बता सकता है कि यह त्रुटि कहां से आई है?

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

जवाबों:


174

आप अपने बीन की निष्क्रियता को सीरियलाइज़ल इंटरफ़ेस लागू करके सक्षम बना सकते हैं:

public class DemoBean implements Serializable { ... }

ध्यान दें कि पास होने में सक्षम होने के लिए अधिक आवश्यकताएं हैं। अधिक जानकारी के लिए वेल्ड प्रलेखन देखें।


20

CDI बीन क्रमबद्ध होने के बावजूद त्रुटि बनी रह सकती है:

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

उदाहरण वर्ग:

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

सुनिश्चित करें कि सभी @Inceptceptors को अलग करने योग्य हैं:

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

धन्यवाद, serializable @Interceptorsमेरे लिए समस्या थी!
एंथनी ओ।


5

धारावाहिक बनाएंDemoBeans

@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

आप एनोटेशन के साथ अपने बीन के निष्क्रिय व्यवहार को भी सक्रिय कर सकते हैं:

@Stateful (passivationCapable = सच)

इस मामले में आपको सीरियल इंटरफ़ेस लागू करने की आवश्यकता नहीं है।

सादर। जॉर्ज


1

आयात सत्यापित करें

(कुछ समय नेटबीन्स ने अन्य पुस्तकालयों से दूसरों का इस्तेमाल किया)

उदाहरण। आयात javax.faces.view.ViewScoped; इसे आयात javax.faces.bean.ViewScoped द्वारा बदलें;


दरअसल JSF 2.3 javax.faces.bean.ViewScopedइसके पक्ष में है javax.faces.view.ViewScoped। क्या इसका मतलब है कि मुझे अपने सभी दृश्य स्कॉप्ड बीन्स से गुजरना होगा और उन्हें धारावाहिक बनाना होगा? से javax.faces.bean.ViewScopedजावाडोक: @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.
वसिल Svetoslavov

0

इसके कारण: org.jboss.weld.exception.DeploymentException: WELD-000072: बीन एक निष्क्रिय गुंजाइश की घोषणा करने में सक्षम होना चाहिए। बीन: प्रबंधित बीन [वर्ग com.marcos.controller.PersonaBean] क्वालीफायर के साथ [@Default @ नाम @Any]


मैंने इसे हल किया, जाहिरा तौर पर सीडीआई, मैंने बीन को नहीं पहचाना, मैंने इसे और अधिक स्पष्ट किया

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

    try {
        service.registrar(null);

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

मेरे लिए समाधान:

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

    try {
        service.registrar(null);

    }catch (Exception e) {
        e.printStackTrace();
    }
  }
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.