2012-02-24 18 views
5

में नहीं प्रवेश हम निम्नलिखित प्रौद्योगिकी का उपयोग कर एक वेब अनुप्रयोग है: JSF 2.0, EJB 3.1, जेपीए 2.0, JBoss 7.1 अंतिम रूपकैश उपयोग

कभी कभी

पर हम पाते हैं कहीं से निम्न अपवाद:

09:46:29,664 ERROR [org.jboss.ejb3.invocation] (http-10.99.0.10-10.99.0.10-8080-14) JBAS014134: EJB Invocation failed on component VehicleServiceBean for method public abstract java.util.List com.hji.common.service.VehicleService.findVehiclesBySearchCriteriaAndImporterIds(com.hji.common.domain.repository.VehicleRepository$VehicleSearchCriteria,java.lang.String,java.util.List,boolean): java.lang.IllegalStateException: JBAS014531: Cache entry {[36, -111, 
-104, -128, 61, -17, 73, 29, -101, 52, -7, -106, 46, -3, 44, -22]} is not in use 
      at org.jboss.as.ejb3.cache.impl.backing.NonPassivatingBackingCacheImpl.release(NonPassivatingBackingCacheImpl.java:134) [jboss-as-ejb3-7.1.0.Final.jar:7.1.0.Final] 
      at org.jboss.as.ejb3.cache.impl.backing.NonPassivatingBackingCacheImpl.release(NonPassivatingBackingCacheImpl.java:56) [jboss-as-ejb3-7.1.0.Final.jar:7.1.0.Final] 
      at org.jboss.as.ejb3.cache.spi.impl.AbstractCache.release(AbstractCache.java:76) [jboss-as-ejb3-7.1.0.Final.jar:7.1.0.Final] 
      at org.jboss.as.ejb3.cache.spi.impl.AbstractCache.release(AbstractCache.java:39) [jboss-as-ejb3-7.1.0.Final.jar:7.1.0.Final] 
      at org.jboss.as.ejb3.component.stateful.StatefulSessionSynchronizationInterceptor.releaseInstance(StatefulSessionSynchronizationInterceptor.java:197) ... 
**Caused by: java.lang.IllegalStateException: JBAS014531: Cache entry {[36, -111, -104, -128, 61, -17, 73, 29, -101, 52, -7, -106, 46, -3, 44, -22]} is not in use** 
      at org.jboss.as.ejb3.cache.impl.backing.NonPassivatingBackingCacheImpl.release(NonPassivatingBackingCacheImpl.java:134) [jboss-as-ejb3-7.1.0.Final.jar:7.1.0.Final] 
      at org.jboss.as.ejb3.cache.impl.backing.NonPassivatingBackingCacheImpl.release(NonPassivatingBackingCacheImpl.java:56) [jboss-as-ejb3-7.1.0.Final.jar:7.1.0.Final] 
      at org.jboss.as.ejb3.cache.spi.impl.AbstractCache.release(AbstractCache.java:76) [jboss-as-ejb3-7.1.0.Final.jar:7.1.0.Final] 
      at org.jboss.as.ejb3.cache.spi.impl.AbstractCache.release(AbstractCache.java:39) [jboss-as-ejb3-7.1.0.Final.jar:7.1.0.Final] ... 

मैं कुछ समय से वेब खोज रहा हूं लेकिन कोई समाधान नहीं मिला। क्या कोई इस तरह की त्रुटि जानता है?

उत्तर

3

मैं चारों ओर देख रहा हूं क्योंकि मुझे एक ही समस्या है। मुझे केवल दो संभावित स्पष्टीकरण मिले हैं: या तो आपके राज्य के बीन में टाइम-आउट (AS7.1 पर 5000 सेकेंड तक डिफ़ॉल्ट) है, या आप एसएफएसबी के संदर्भ को एक धागे से दूसरे में संदर्भित कर रहे हैं - जो (यह सुझाव दिया जाता है the jboss forum की अनुमति नहीं है। यदि पूर्व, या तो टाइमआउट बढ़ाते हैं या अपवाद को पकड़ते हैं। यदि उत्तरार्द्ध, जेबॉस राज्य के बीन को इंजेक्ट करता है, जहां कहीं भी इसे पास करने के बजाए इसकी आवश्यकता होती है।

मेरी समस्या यह है कि यह मेरे लिए इनमें से कोई भी नहीं है। मेरे पास परीक्षण सेटअप में केवल एक राज्यव्यापी बीन है, जिसे विभिन्न स्टेटलेस बीन्स में अलग से इंजेक्शन दिया जाता है - और मैं टेस्ट रन शुरू करने के कुछ सेकंड के भीतर अपवाद उत्पन्न कर सकता हूं। मैं अभी भी कोशिश कर रहा हूं ट्रैक करने के लिए जहां मैं गलत हो रहा हूं - अगर आपको अपनी समस्या का वैकल्पिक समाधान मिल गया है तो क्या आप इसे पोस्ट कर सकते हैं?

Rgds, जेम्स

मैं संकुचित-यह किया है नीचे समवर्ती उपयोग करने के लिए - मैं अनुक्रमिक अनुरोध के बहुत सारे बना सकते हैं, लेकिन केवल कुछ ही "समवर्ती" लोगों से पहले ऐसा होता है। (मैंने उद्धरणों में समवर्ती रखा है क्योंकि मैं @SessionScoped ejb द्वारा रखे गए लॉक पर सिंक्रोइजिंग कर रहा हूं, इसलिए केवल एकमात्र संभावित समवर्ती कॉल getLock() विधि है जिसे मैंने बनाया है)।

मैं पूरी तरह उलझन में हूं कि वेल्ड @ सत्र स्कोप्ड @ स्टेटफुल ईजेबी के समवर्ती उपयोग को अनुमति देता है या रोकता है या नहीं। मैंने पढ़ा कि सीम पहुंच को क्रमबद्ध करता है (और वेल्ड सीम से पैदा हुआ है) लेकिन यह नहीं पता कि वास्तव में यह मामला है या नहीं। यदि ऐसा है, तो कुछ और मेरे बीन मरने का कारण बन रहा है। यह अलग @ स्टेटलेस बीन्स से समवर्ती पहुंच के माध्यम से आसानी से पुन: उत्पन्न किया जा सकता है।

+0

हाँ आप सही हैं।हम एक ही निष्कर्ष पर आए और हमारी कुछ विधियों को दोबारा दोहराया ताकि सत्र बीन को एक से अधिक बार नहीं बुलाया जा सके। इसके अलावा हम समवर्ती कॉल को रोकने के लिए उपयोगकर्ता को दबाए जाने के बाद बटन निष्क्रिय कर देते हैं। – Primi

0

ठीक है मैं जो भी सोचता हूं वह मुझे एक और सटीक उत्तर प्रदान कर सकता है। मैं राज्यव्यापी ईजेबी पर समवर्ती पहुंच की इजाजत देने में सक्षम नहीं था क्योंकि मेरा ऐप AJAX का उपयोग करता है, इसलिए समवर्ती कॉल अनिवार्य हैं। मुझे याद नहीं है कि मुझे संदर्भ कहां मिला, लेकिन मैं समझता हूं कि एक राज्य के बीन के समवर्ती उपयोग को ईजेबी 3.1 के तहत कंटेनर द्वारा क्रमबद्ध किया जाना चाहिए - इसलिए मुझे ठीक होना चाहिए था।

मैं जेबॉस एएस 7 स्रोत के माध्यम से अपना रास्ता तलाशने की कोशिश कर रहा हूं, और मुझे लगता है कि मुझे समस्या मिली है (वर्तमान में यहां चर्चा के तहत on the jboss AS7 forum)। यह एक बग प्रतीत होता है - यदि आपका कॉल एक सक्रिय लेनदेन (बीएमटी या सीएमटी) के भीतर है तो jboss केवल सिंक्रनाइज़ करता है। यदि ऐसा नहीं है, तो सिंक्रनाइज़ेशन विफल हो जाता है - और यह संभव नहीं है (जहां तक ​​मैं समझ सकता हूं) स्वयं को सिंक्रनाइज़ या लॉक करने के लिए, क्योंकि आप केवल बीन के लिए प्रॉक्सी तक पहुंच प्राप्त करते हैं, अंतर्निहित उदाहरण नहीं। प्रॉक्सी पर सिंक्रनाइज़ करना थ्रेड (ओं) के अलावा किसी अन्य चीज़ के लिए बेकार है, जो प्रॉक्सी मौजूद है।

अब के लिए कामकाज यह सुनिश्चित करना है कि एक समेकित लेन-देन में समेकित हो सकें। मैं यह जानकर आश्चर्यचकित था कि एक विस्तारित पर्सिस्टेंस कॉन्टेक्स्ट पर अक्सर लेनदेन को खोलने और बंद करने का प्रदर्शन ओवरहेड बहुत छोटा था - लेकिन मैंने वास्तव में इसे बहुत कठिन नहीं ठहराया :)

मुझे संदेह है कि समस्या सभी AS7 संस्करणों को प्रभावित करती है , लेकिन केवल एएस 7.1 पर इसकी पुष्टि की है।

+0

हमारे मामले में हमारे पास @TransactionAttribute (TransactionAttributeType.NOT_SUPPORTED) के साथ कई विधियां हैं। तो अगर मैं सही ढंग से समझता हूं, तो टाइप को REQUIRES_NEW में बदलना अपवाद को रोकना चाहिए? (fyi हम जेएसएफ प्रबंधित बीन्स में अधिकांश एसएफएसबी इंजेक्ट करते हैं) – Primi

+0

हां बिल्कुल। मैं REQUIRES_NEW के बजाय आवश्यक के साथ जाऊंगा, फिर यदि कोई है तो विधि मौजूदा लेनदेन में भाग लेगी, या यदि नहीं तो अपना स्वयं का निर्माण करें। मैंने इसे समझने के लिए दिन बिताए - मुझे उपकरण के चारों ओर झुकने के लिए अपने कोड डोमेन को दोबारा प्रतिक्रिया देना पसंद नहीं है, बल्कि मैं उपकरण को झुकाव पसंद करता हूं। मैंने कहा कि मैं एक पूर्ण शौकिया हूं इसलिए शायद मेरी लड़ाई बेहतर तरीके से उठाए! – user1180316

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