2012-07-13 33 views
10

मैं एक प्रबंधित बीन चाहता हूं कि एप्लिकेशन लोड होने पर मेरे जेएसएफ वेब एप्लिकेशन में आंतरिक रूप से शुरू हो। मैं इस वर्ग को कैसे लिख सकता हूं और ग्लासफ़िश में कॉन्फ़िगर कैसे कर सकता हूं?स्टार्ट अप प्रबंधित बीन को कॉन्फ़िगर कैसे करें?

+0

क्या आपने 'ManagedBean (उत्सुक = सत्य) 'की कोशिश की है? यदि आप सीडीआई (@ManagedBean के बजाय नामित) का उपयोग कर रहे हैं तो आपको ऐप प्रारंभ करने के लिए "निरीक्षण" करना होगा .. 'सार्वजनिक शून्य init (@Observes @ आरंभिक वेब अनुप्रयोग वेब अनुप्रयोग) {//कुछ करें} ' (वास्तव में मैंने ग्लासफ़िश में यह कोशिश नहीं की है, मैंने इसे जेबॉस एएस 7 में उपयोग किया है और आपको अन्य सर्वरों पर कुछ कॉन्फ़िगरेशन की आवश्यकता हो सकती है ... जांचें [यह] (http://stackoverflow.com/ प्रश्न/7347516/स्टार्टअप-पोजो-ऑन-ए-वेल्ड-सीम 3-एप्लिकेशन) बाहर ... – FMQ

उत्तर

16

सीएसआई के साथ जेएसएफ में, observeapplication scope के initialization

@Named 
@ApplicationScoped 
public class App { 

    public void startup(@Observes @Initialized(ApplicationScoped.class) Object context) { 
     // ... 
    } 

    public void shutdown(@Observes @Destroyed(ApplicationScoped.class) Object context) { 
     // ... 
    } 

} 

जब हाथों में OmniFaces होने, इस @Eager साथ सरल किया जा सकता।

@Named 
@Eager 
@ApplicationScoped 
public class App { 

    @PostConstruct 
    public void startup() { 
     // ... 
    } 

    @PreDestroy 
    public void shutdown() { 
     // ... 
    } 
} 

now deprecatedjavax.faces.bean एनोटेशन के साथ JSF 2.2- में, एक application scopedmanaged bean जो eagerly प्रारंभ है का उपयोग करें।

@ManagedBean(eager=true) 
@ApplicationScoped 
public class App { 

    @PostConstruct 
    public void startup() { 
     // ... 
    } 

    @PreDestroy 
    public void shutdown() { 
     // ... 
    } 
}