2010-07-31 10 views
11

मुझे जावा ईई एप्लिकेशन बनाना है जो बड़े दस्तावेज़ों को विभिन्न प्रारूपों में परिवर्तित करता है। प्रत्येक रूपांतरण में 10 सेकंड और 2 मिनट लगते हैं। एसओएपी अनुरोध क्लाइंट एप्लिकेशन से किए जाएंगे जिन्हें मुझे बनाना होगा।लंबे समय तक चलने वाले वेब सेवा संचालन को कैसे संभालें?

सबसे अच्छा तरीका है इन लंबी चलने वाली अनुरोधों को हैंडल करने में क्या है? स्पष्ट रूप से प्रक्रिया को उपयोगकर्ता को बिना किसी प्रतिक्रिया के चलाने के लिए अधिक समय लगता है।

मैं निम्नलिखित तरीके प्रतिक्रिया के कुछ प्रकार प्रदान करने के लिए के बारे में सोच सकते हैं, लेकिन मुझे यकीन है कि अगर वहाँ एक बेहतर तरीका कुछ मानकीकृत नहीं है, शायद नहीं हूँ।

  1. क्लाइंट थ्रेड से अनुरोध करता है और सर्वर प्रतिक्रिया में दस्तावेज़ भेजता है, जिसमें कुछ मिनट लग सकते हैं। तब तक ग्राहक "कृपया प्रतीक्षा करें" संदेश, प्रगति स्पिनर इत्यादि दिखाता है (यह लागू करना आसान लगता है।)
  2. ग्राहक "प्रारंभ रूपांतरण" आदेश भेजता है। सर्वर किसी प्रकार का जॉब आईडी देता है जिसे ग्राहक अक्सर स्थिति अद्यतन या अंतिम दस्तावेज़ के लिए मतदान करने के लिए उपयोग कर सकता है। (यह उपयोगकर्ता के अनुकूल प्रतीत होता है, क्योंकि मैं प्रगति प्रदर्शित कर सकता हूं, लेकिन सर्वर को राज्यिक होने की भी आवश्यकता है।)
  3. ग्राहक "प्रारंभ रूपांतरण" आदेश भेजता है। किसी भी तरह से सर्वर क्लाइंट को सूचित करता है जब यह किया जाता है।

वहाँ अन्य तरीकों हैं (यहाँ मैं भी कैसे इस करने के लिए पता नहीं है)? प्रदर्शन, स्थिरता, गलती सहनशीलता, उपयोगकर्ता-मित्रता इत्यादि के मामले में कौन सा सबसे अच्छा है?

आपके उत्तरों के लिए धन्यवाद।

+0

आप को कैसे खत्म किया था इस को लागू करने पर सर्वर परिणाम पूछने के लिए है का उपयोग कर देना चाहिए? मुझे इस सवाल का सामना करना पड़ रहा है और # 2 पर विचार कर रहा था, फिर मैंने आपका प्रश्न देखा और सोचा कि मैं पूछूंगा। – SqlRyan

+0

मैं अभी भी इस पर हूं। क्योंकि यह एक शौक परियोजना है क्योंकि इसमें थोड़ा समय लगता है। लेकिन मुझे अभी भी विश्वास है कि # 2 सबसे अच्छा समाधान है। –

उत्तर

5

इस लगभग सभी किया सर्वर साइड के बाद से, वहाँ बहुत ज्यादा नहीं एक ग्राहक सर्वेक्षण के अलावा सर्वर किसी भी तरह स्थिति पर जानकारी के लिए क्या कर सकते है।

# 1 ठीक है, लेकिन उन वास्तव में तेजी से अधीर हो। अधिकांश लोगों के लिए "कुछ मिनट" थोड़ा लंबा है। # 3 को लागू करने के लिए आपको HTTP Streaming की आवश्यकता होगी, लेकिन मुझे लगता है कि यह अधिक है।

मैं सिर्फ # 2 के साथ जाना होगा।

+3

हमें इसी तरह की स्थिति का सामना करना पड़ा और केवल # 2 एक व्यावहारिक समाधान की तरह लग रहा था। – Hemant

1

3 के लिए सर्वर क्लाइंट के लिए वापस लौट सकते हैं और एक अद्वितीय ID कि आईडी ग्राहक बाद में किसी समय

+0

यही कारण है क्या # 2 – NullUserException

+1

सर्वर sateful.Client एक सतत् दुकान में आईडी बना रहेगा और सर्वर भी एक सतत् डेटा स्टोर करने के लिए आईडी जारी रहती है और फिर बाद में ग्राहक आईडी कायम प्रयोग करेंगे होने की जरूरत नहीं करता है स्टोर से सर्वर – Lisa

+0

से जानकारी का अनुरोध करने के लिए हमने ऊपर जो रेखांकित किया है उसका उपयोग किया है और यह पूरी तरह से अच्छी तरह से काम करता है। एकमात्र मुद्दा यह है कि हमारे पास हमारे क्लाइंट के दो संस्करण हैं और कुछ क्लाइंट बाद के संस्करण में माइग्रेट नहीं हुए हैं, जहां उन्होंने बाद में सर्वर से जानकारी का अनुरोध करने के लिए आईडी का उपयोग किया था – Lisa