2011-04-15 6 views
6

हाइबरनेट 3.3.x, ehcache 2.2.xएक नरम-लॉक्ड कैश प्रविष्टि अंतर्निहित ehcache द्वारा समाप्त हो गया था

निम्नलिखित त्रुटि तब होती है, जब मैं एक भी बार में उपयोगकर्ताओं का एक बहुत से प्रकाशित करने का प्रयास । इस बारे में कोई विचार क्यों होगा और यह कैसे सुधारें? उपयोगकर्ताओं की थोक लोडिंग से पहले इस कैश को अक्षम करने का कोई तरीका है, यदि ऐसा है तो मुझे ऐसा कैसे करना चाहिए?

17:17:50,140 WARN [AbstractReadWriteEhcacheAccessStrategy] Cache 
persistence.unit:unitName=my.ear/my-ejb-1.0.0.jar#my.com.mycompany.User.phones Key com.mycompany.User.phones#9915 Lockable : null 

A soft-locked cache entry was expired by the underlying Ehcache. 
If this happens regularly you should consider increasing the cache timeouts and/or capacity limits 

EDIT1:

यह त्रुटि होता है जब मैं जेपीए कॉल के माध्यम से डेटाबेस में उपयोगकर्ताओं का एक बहुत लोड थोक की कोशिश करो। मैं एक आंसू नीचे हुक के माध्यम से कैश प्रबंधक बंद नहीं करता है।

उत्तर

2

विवरण से यह आपकी इकाइयों के लिए दूसरे स्तर के कैश की तरह दिखता है, और उनमें से कुछ समय-समय पर अंतर्निहित ehcache से बेदखल हो रहे हैं। & clearSession हाइबरनेट Session समय-समय पर आपके थोक-सम्मिलन के दौरान, जैसा कि documentation में उल्लिखित है?

+0

मैं इसे आज़मा दूंगा, मैं अभी यह नहीं कर रहा हूं – Joe

+0

परिकल्पना का परीक्षण करने के लिए, आप एएच कैश की 'maxElementsInMemory' को 0 पर सेट करने का प्रयास कर सकते हैं - ताकि कोई प्रविष्टि कभी भी बेदखल न हो - और जांचें कि क्या चेतावनी जाती है दूर। –

1

तुम भी एक Stateless Session का उपयोग कर को देखने के लिए चाहते हो सकता है। यदि नहीं, जैसा कि @ बिनिल थॉमस ने उल्लेख किया है, तो आपको संसाधनों को मुक्त करने के लिए flush और clear पर जाना होगा।

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