2012-07-16 31 views
5

मैं जानना चाहता हूं कि RequestScoped संदर्भ वर्तमान में किसी विधि में सक्रिय है या नहीं।क्या यह जानने का कोई तरीका है कि ContextNotActiveException को पकड़ने के बिना कोई राज्य सक्रिय है या नहीं?

@Inject private BeanManager beanManager; 

public boolean isRequestScopeActive() { 
    try { 
     if (beanManager.getContext(RequestScoped.class).isActive()) { 
      return true; 
     } else { 
      return false; 
     } 
    } catch (final ContextNotActiveException e) { 
     return false; 
    } 
} 

मुझे लगता है कि यह एक ContextNotActiveException सिर्फ अगर एक गुंजाइश सक्रिय है या नहीं पता करने के लिए पकड़ने के लिए थोड़ा भारी है:

फिलहाल, यहां मैं क्या कर रहा है।

क्या आपके पास सीडीआई में किसी संदर्भ के राज्य (सक्रिय या नहीं) को जानने का कोई बेहतर तरीका है?

+0

RequestScoped बहुत सक्रिय होना चाहिए, जब तक आप एक async घटना के माध्यम से कुछ नहीं कर रहे हैं। तुम क्या करने की कोशिश कर रहे हो? – LightGuard

+0

हां, मैं इसे पहचानने की कोशिश कर रहा हूं क्योंकि संभावित रूप से मैं एक एसिंक घटना में या एक निर्धारित समय में हूं ... https://issues.jboss.org/browse/SEAMPERSIST-78 –

+0

देखें, उस स्थिति में, आपके पास क्या है शायद सबसे अच्छा समाधान है – LightGuard

उत्तर

3

हाँ, हमारे पास सीडीआई 1.0 में एकमात्र विकल्प है ContextNotActiveException को पकड़ना। यह वास्तव में ऐप्स के लिए एक बड़ी समस्या होने के समाप्त होता है, जहां इंजेक्शन के लिए दायरा कार्यान्वयन उपलब्ध नहीं है। जैसे आप केवल @Inject RequestScopedContextImpl rq; नहीं देख सकते हैं और .isActive() विधि की जांच कर सकते हैं, क्योंकि हमारे पास कार्यान्वयन विवरण जानने के बिना उस कक्षा तक पहुंच नहीं है।

संबंधित मुद्दे

 संबंधित मुद्दे