2010-09-06 9 views
8

मैं स्कैला में एक प्रोग्राम लिखने की कोशिश कर रहा हूं, जो एसओएपी अनुरोध स्वीकार करेगा, वास्तविक सर्वर से प्रतिक्रिया प्राप्त करें (या इसे स्थानीय डिस्क से पढ़ें) और डेटा को मूल क्लाइंट पर वापस कर दें।स्कैला में एसओएपी-प्रॉक्सी - मुझे क्या चाहिए?

मैं जावा/स्कैला पारिस्थितिक तंत्र के लिए नया हूं, इसलिए मेरे पास कोई सुराग नहीं है, कौन से पुस्तकालयों का चयन करना है। मैंने सुना है स्काला के XML-हैंडलिंग, आदि काफी अच्छा है, इसलिए मैं नहीं जानता, कि क्या मैं कुछ enterprisey साबुन पुस्तकालय/jax-ws, jboss-ws, अक्ष, CXF, xmlbeans तरह ढांचे का उपयोग करना चाहिए

असल में, मैं सिर्फ

  • एक पुस्तकालय, कि अनुरोध (स्वीकार करता है वर्तमान में, मैं jetty पर देख रहा हूँ की जरूरत है, लेकिन मैं कुछ है कि मूल रूप से अभिनेता का समर्थन करता है पसंद करेंगे। scala-http कि कवर करने के लिए लगता है, लेकिन उत्पादन नहीं है पहले से या बनाए रखा, उस मामले के लिए)
  • कुछ पुस्तकालय दूसरे सर्वर से डेटा का अनुरोध करने के लिए (कर्ल जैसे कुछ, जावा/स्केल के लिए libwww-perl)
  • एक निर्माण प्रणाली (चींटी? एसबीटी?)
  • एक IDE (मैं ग्रहण करने के लिए इस्तेमाल कर रहा हूँ, लेकिन इंटेलीजे के स्केला समर्थन बेहतर माना जाता है)
  • (यह परीक्षण करने के लिए वर्तमान में, मैं SoapUI उपयोग कर रहा हूँ)

उत्तर

14

सोप सही मायने में एक घृणित विनिर्देश है, असामान्य हाशिये व्यवहार के लिए क्षमता के बहुत सारे के साथ। हालांकि यह सच है कि स्कैला में एक्सएमएल समर्थन आपको ऐसी लाइब्रेरी को स्क्रैच से लिखने में मदद करेगा, यह अभी भी एक बड़ा प्रयास होगा (इस पर निर्भर करता है कि आपको कितना स्पेक चाहिए)।

इसी तरह, जेटी के पास इसके पीछे वर्षों का विकास है; प्रदर्शन मांगों और अन्य अप्रत्याशित व्यवहार से निपटने के लिए जो आपने शायद नहीं सोचा है ... यहां तक ​​कि स्कैला का सबसे प्रसिद्ध वेब ढांचा, लिफ्ट, इन कारणों से जावा वेब सर्वर के ऊपर चलता है। यह अभी भी अभिनेताओं के साथ बहुत खुशी से काम करता है।

तो इस समय में इस समय, आप जावा वेब सर्वर और ऑफ-द-शेल्फ जावा एसओएपी लाइब्रेरी के साथ एक कोशिश किए गए और परीक्षण किए गए समाधान का उपयोग करके लगभग निश्चित रूप से बेहतर हैं। इन चारों ओर एक पतली स्कैला रैपर जोड़ने का प्रयास स्क्रैच से इन चीजों को बनाने के प्रयास से काफी कम होगा।

बिल्ड सिस्टम के लिए, एसबीटी वर्तमान में स्कैला के लिए उपलब्ध सबसे शक्तिशाली उपकरण है, लेकिन अगर आपको अपनी चुनी गई एसओएपी लाइब्रेरी द्वारा कोड पीढ़ी के लिए जरूरी है तो आपको मेवेन में वापस आने की आवश्यकता हो सकती है।

अंत में, संपादक की पसंद के लिए। यदि आप Emacs का उपयोग करके खुश हैं, तो Ensime प्लगइन सिर्फ अद्भुत है।यदि आपकी पसंद के लिए एक अधिक पारंपरिक जावा आईडीई है, तो वर्तमान में इंटेलिजे सबसे स्थिर विकल्प प्रतीत होता है, हालांकि यह पता होना चाहिए कि यह बहुत तेज़ी से बदल सकता है।

2

बस एक उपकरण एक आंशिक जवाब।

देखो: http बनाने के लिए

  • HttpClient
  • बिल्ड प्रणाली का अनुरोध करता है, अगर आप ant साथ कोई पूर्व अनुभव है मैं sbt
  • सिफारिश करेंगे आईडीई के लिए, मैं IntelliJ एक साथ अच्छे सफलता मिली कुछ महीने पहले। मेरा मानना ​​है कि ग्रहण में सुधार हुआ है लेकिन मुझे नहीं पता कि कितना।
  • SoapUI अभी भी काम करेगा पूरी तरह से
2

प्रॉक्सी सर्वर एसिंक्रोनस/गैर-अवरुद्ध आईओ के लिए क्लासिक उपयोग केस हैं। अगर मैं इस प्रोजेक्ट पर शुरुआत कर रहा था, तो मैं Netty's HTTP support पर एक लंबा नज़र डालने से शुरू करूंगा और प्रोटोकॉल अनुवाद पर जाने से पहले एक सरल रिवर्स प्रॉक्सी (यानी बैकएंड सर्वरों के बैकएंड प्रतिक्रियाओं और बैकएंड प्रतिक्रियाओं को आगे बढ़ाने के लिए आगे बढ़ता हूं) ।

जब प्रोटोकॉल अनुवाद पर काम करने का समय आता है, तो आपको एक्सएमएल पार्सर्स का क्रोध होगा। दुर्भाग्यवश, मेरे ज्ञान के लिए एक अच्छा, उच्च-प्रदर्शन, कम-पदचिह्न पार्सर नहीं है जो मूल रूप से एसिंक्रोनस आईओ को संभालता है; उनमें से कुछ शायद मौजूद हैं लेकिन वाणिज्यिक उत्पादों में एम्बेडेड हैं। अधिक जानकारी के लिए this thread देखें।

हालांकि, आप एक एसएक्स पार्सर का उपयोग करके अतिरिक्त थ्रेड उपयोग की लागत पर "धोखा" कर सकते हैं, जो आम तौर पर "पुश-मी-पुल-यू" पाइपलाइन के आउटपुट का उपभोग करने के लिए आईओ को अवरुद्ध करने पर निर्भर करता है। चूंकि आपके सर्वर के HTTP भाग गैर-अवरुद्ध हैं, इसलिए आप शायद कुछ दर्जन धागे का उपयोग केवल घूमने वाले बाइट्स के लिए कर सकते हैं।

जैसा होता है, मेरे पास been there, and done that है। :)

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