2009-11-13 17 views
5

में एक आंतरिक ServletRequest को फायर करें मैं वेब एप्लिकेशन के लिए पृष्ठभूमि कार्यों को शेड्यूल करने के लिए क्वार्ट्ज का उपयोग कर रहा हूं। इनमें से कुछ कार्य एक ही वेब एप्लिकेशन के खिलाफ अनुरोधों को बंद कर देते हैं।टॉमकैट

मैं किसी भी प्रकार की नेटवर्क सेटिंग्स के आधार पर बचना चाहता हूं (उदाहरण के लिए डेटा केंद्र के भीतर से अपने डोमेन नाम के साथ अनुरोध ठीक से रूट नहीं किया जा सकता है)। क्या ServletRequest को आग लगाने के लिए जावा एपीआई है और इसे आंतरिक रूप से टॉमकैट द्वारा संभाला गया है (बिना किसी वास्तविक HTTP के)?

मैं अभी भी पृष्ठभूमि कार्यों के लिए जावा कोड को कॉल करने के बजाय काम को सर्वलेट अनुरोध में लपेटना चाहता हूं, ताकि मैं कॉन्फ़िगरेशन विकल्प के रूप में नियमित HTTP अनुरोध पर वापस जा सकूं।

टोमकैट-विशिष्ट कोड स्वीकार्य है।

उत्तर

0

दिलचस्प धारणा। इसके लिए निश्चित रूप से कोई मानक एपीआई नहीं है, और मुझे नहीं लगता कि एक प्रकाशित टोमकैट-विशिष्ट तंत्र भी है।

अनुरोध प्राप्त करने के लिए क्या होगा? एक सर्वलेट? JSP? वसंत नियंत्रक? उस पर निर्भर करता है, और लक्ष्य के आधार पर, आप संभावित रूप से कंटेनर के माध्यम से इसे रूट करने के बजाय सीधे लक्ष्य का आह्वान करने में सक्षम हो सकते हैं। लेकिन अगर आपके पास जेएसपी, फ़िल्टर का ढेर, और अन्य सर्वलेट जटिलताएं हैं, तो यह संभवतः है एक विकल्प नहीं है।

अगर आप यात्रा पर वसंत का उपयोग कर रहे हैं, तो आपके क्वार्ट्ज नौकरी को सीधे नियंत्रक के साथ तारित किया जा सकता है और यह आपको पसंद करना आसान होगा। क्या तुम भाग्यशाली हो

+1

मैं एक यूआरएल (सीधे कॉलिंग नियंत्रकों के विपरीत) के माध्यम से जाना चाहता हूं ताकि मैं बाद में नियमित HTTP पर वापस जा सकूं। चीजें decoupled रखता है। – Thilo

+0

मानक एपीआई: अगर मैं अपने आप को एक सर्वलेट के अन्दर थे, मुझे लगता है मैं requestDispatcher.include (fakedRequest, fakedResponse) कर सकता है। लेकिन मैं नहीं। – Thilo

1

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

यदि उपरोक्त धारणा सही है तो आप केवल व्यवसाय-प्रसंस्करण तर्क से सर्वलेट/जेएसपी तर्क को रद्द कर सकते हैं और सीधे अपने निर्धारित कार्यों से व्यवसाय-तर्क परत कक्षाओं को कॉल कर सकते हैं।

0

उपयोग URLConnection, या अपाचे-कॉमन्स httpclient साथ स्थानीय होस्ट/127.0.0.1 - इस प्रकार यह ठीक से कराई जाएगी।

+1

यह मानता है कि सर्वर 127.0.0.1 को सुन रहा है, जो हमेशा मामला नहीं है। – skaffman

+0

0.0.0.0 के बारे में क्या? :) – Bozho

0

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

यदि आप वास्तविक समस्या और कार्यात्मक आवश्यकता के बारे में कुछ और बताते हैं जिसके लिए आपको लगता है कि यह समाधान है, तो हम बहुत बेहतर सुझावों के साथ आ सकते हैं।

+0

"वास्तविक समस्या और कार्यात्मक आवश्यकता": मैं वास्तव में, यह करने के लिए की जरूरत नहीं है मैं सिर्फ अगर मैं कर सकता जानना चाहते हैं। – Thilo

+0

आप 'java.net.URL कनेक्शन' या अपाचे कॉमन्स एचटीपी क्लाइंट के साथ ऐसा कई बार उल्लेख कर सकते हैं। पूरी तस्वीर हालांकि थोड़ी गंध है, मैं बस इसके बारे में चेतावनी देना चाहता था इससे पहले कि यह बहुत देर हो चुकी है। – BalusC