2010-01-26 9 views
5

वसंत के साथ वसंत सेम scoped: 2.5.6.SEC01का उपयोग करते हुए सत्र डीडब्ल्यूआर

डीडब्ल्यूआर: 2.0.5

मैं एक सत्र डीडब्ल्यूआर से सेम scoped उपयोग करना चाहते हैं। यह ठीक काम करता है, जब मैं बीन को सिंगलटन होने के लिए कॉन्फ़िगर करता हूं। मैंने इस शिक्षक को पढ़ा: (http://directwebremoting.org/dwr/server/integration/spring.html) और मेरे applicationContext.xml को संशोधित किया, लेकिन यह अभी भी कहीं गलत है।

मेरे applicationContext.xml:

http://pastebin.com/m8d57f18

यह अच्छी तरह से ORK, लेकिन जब मैं एक AJAX समारोह का उपयोग करें, मैं इस अपवाद:

11: 31: 09,593 जानकारी [DefaultRemoter] Exec: DBTestAjaxFunc.testJNDI() 11: 31: 09,609 [DefaultRemoter] विधि निष्पादन में विफल रहा है चेतावनी देते हैं: org.springframework.beans.factory.BeanCreationException: नाम 'scopedTarget.dbtestajax' के साथ बीन बनाने में त्रुटि: स्कोप 'सत्र' वर्तमान धागे के लिए सक्रिय नहीं है; को सिंगलटन से संदर्भित करने का इरादा रखते हुए इस बीन के लिए स्कॉप्ड प्रॉक्सी को परिभाषित करने पर विचार करें; कोई धागा बाध्य अनुरोध मिला: आप अनुरोध की बात कर रहे हैं एक वास्तविक वेब अनुरोध के बाहर, या विशेषताओं मूल रूप से प्राप्त करने के धागे के बाहर एक अनुरोध को संसाधित नेस्टेड अपवाद java.lang.IllegalStateException है? इस मामले में, RequestContextListener या RequestContextFilter का उपयोग वर्तमान अनुरोध बेनकाब करने के लिए: यदि आप वास्तव में एक वेब अनुरोध के भीतर काम कर रहे हैं और अभी भी इस संदेश मिलता है, अपने कोड शायद DispatcherServlet/DispatcherPortlet की बाहर चल रहा है।

ऐसा लगता है कि एओपी प्रॉक्सी नहीं बनाया गया था, लेकिन मुझे नहीं पता कि क्यों।

  • aspectjrt.jar
  • aspectjweaver.jar
  • cglib-nodep-2.2.jar
  • dwr.jar
  • spring.jar
  • वसंत: classpath में

    Libs -aop.jar

  • वसंत-डीआईआर-2.0.xsd
  • वसंत-web.jar
  • वसंत-webmvc.jar

किसी भी विचार? (धन्यवाद!)

+0

क्या आप 'web.xml' में स्प्रिंग' डिस्पैचर सर्वलेट 'के माध्यम से जा रहे हैं? – skaffman

+0

हाँ, जब मैं पृष्ठ में किसी भी AJAX सुविधा का उपयोग नहीं करता, यह काम करता है, जैसे कि नियंत्रक आदि के साथ एक वसंत रूप की तरह। –

+0

नहीं, मेरा मतलब है कि डीडब्ल्यूआर अनुरोध 'डिस्पैचर सर्वलेट' से गुजर रहा है, या यह सीधे डीडब्ल्यूआर पर जा रहा है? – skaffman

उत्तर

7

सत्र के लिए या अनुरोध-स्कोप्ड बीन्स वसंत में काम करने के लिए, वर्तमान अनुरोध और सत्र को वर्तमान धागे से जोड़ना है।आम तौर पर, यह DispatcherServlet द्वारा किया जाएगा, लेकिन यदि आप इसका उपयोग नहीं कर रहे हैं, तो आपको एक विकल्प की आवश्यकता है।

इस मामले में विकल्प RequestContextListener या RequestContextFilter, या तो जिनमें से आप अपने web.xml करने के लिए तार कर सकते हैं, और दोनों ओएस जो आप अनुरोध और सत्र-दायरे सेम का उपयोग करने की अनुमति देगा। बस सुनिश्चित करें कि आप उन्हें web.xml में कॉन्फ़िगर करें ताकि डीडब्लूआर अनुरोध उनके माध्यम से गुजर सकें।

+0

यदि मेरा वेब। एक्सएमएल में एक वसंत डिस्पैचर सर्वलेट और एक डाइरसर्लेट है, तो dwr अनुरोध dwrServlet से गुज़र जाएगा, है ना? ओह, और वे कक्षाएं "डिफ़ॉल्ट" कक्षाएं हैं .. अगर मैं उनकी कार्यक्षमता को विस्तारित करना चाहता हूं तो मुझे उनसे अधिकार प्राप्त करना होगा? और यदि ऐसा है तो मेरा कोड कहां जाएगा और मैं विरासत वर्ग कहां रखूंगा और मैं उससे कैसे लिंक करूं? ... दूसरे पर हालांकि मुझे यह एक नया सवाल बनाना चाहिए ... – KyleM

1

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

+0

जाहिर है इस सवाल का जवाब नहीं, लेकिन यह मेरी समस्या हल हो गई। धन्यवाद। –

+0

या स्कोप्ड प्रॉक्सी बनाकर: @ स्कोप (मान = "सत्र", प्रॉक्सीमोड = स्कॉप्डप्रॉक्सी मोड। TARGET_CLASS) – Cojones

+0

मुझे लगता है कि teh RequestContextLisener की आवश्यकता होगी और बीन में एक इंटरफ़ेस होगा। – ccppjava

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

  • कोई संबंधित समस्या नहीं^_^