मैं दिया बड़ी सफलता के साथ AbstractRoutingDataSource का उपयोग कर दिया है, लेकिन एक मुद्दा सूझा है मैं का समाधान नहीं कर सकते हैं: जब मैं एक अतुल्यकालिक विधि @Async
का उपयोग कर शुरू, यह स्थानीय धागा के संदर्भ खो देता है, और मैं डेटाबेस संदर्भ स्विच सेट करने के लिए जगह का पता नहीं लगा सकता। आम तौर पर मैं इसे एक पहलू या HandlerInterceptor
में करता हूं, लेकिन @Async
उन सामान्य मार्गों में से किसी के माध्यम से नहीं जाता है। क्या कोई इंटरसेप्टर या कुछ ऐसा है जो मैं एसिंच कॉल की शुरुआत और अंत में आग लगाने के लिए कॉन्फ़िगर कर सकता हूं ताकि मैं डेटाबेस संदर्भ सेट कर सकूं?स्प्रिंग @Async और AbstractRoutingDataSource
स्प्रिंग संदेश बोर्डों पर एक समान प्रश्न मिला। कोई जवाब नहीं है, हालांकि: http://forum.springsource.org/showthread.php?83792-Async-annotated-method-hanging-on-session-scoped-bean
संपादित करें: DataSource
मैं निष्पादन प्रवाह डिबग है, और AbstractRoutingData स्रोत वास्तव में async सूत्र में कहा जाता रहा है, लेकिन इससे पहले पहलू बुलाया जा रहा है इसके बुलाया हो रही है, तोThreadLocal
मान सेट होने से पहले ही हाइबरनेट सत्र में पहले से सेट है। AsyncExecutionInterceptor
के लिए स्रोत कोड देख रहे हैं, जो @Async
का समर्थन करता है, क्योंकि इसकी वजह से इंटरसेप्टर Order
मान के रूप में देता है, इसलिए इसे किसी और चीज़ से पहले निकाल दिया जाता है।