2015-04-21 6 views
10

का उपयोग कर वसंत बूट में दूरस्थ रूप से एक बीन का खुलासा करना संभव है। मुझे जावा क्लाइंट्स द्वारा दूरस्थ उपयोग के लिए कुछ सेवा का खुलासा करना होगा (वे httpinvoker का उपयोग करेंगे) और अन्य भाषाओं (वे आरईएसटी का उपयोग करेंगे)।क्या आरईएसटी और httpInvoker

क्या मैं वसंत बूट को दोनों का पर्दाफाश करने के लिए कॉन्फ़िगर कर सकता हूं? (मुझे कोई फर्क नहीं पड़ता कि विभिन्न बंदरगाहों के साथ दो अलग-अलग उदाहरणों का उपयोग किया जाएगा, जैसे कि this post)।

मैं जावा ग्राहकों के लिए एक API प्रदान करने के विचार है कि आंतरिक बाकी का उपयोग करता है, क्योंकि यह नहीं बल्कि मैन्युअल RestTemplate. का उपयोग कर रहा HttpInvoker की अवधारणा की तरह कोड में सभी बाकी अंतिमबिंदुओं तार की कठिन है क्योंकि एक ProxyFactoryBean इस्तेमाल किया जाता है फेंक दिया स्वतः। यदि Spring Remoting ऐसा करने में सक्षम होगा, तो यह जेएमएस, एएमक्यूपी और अन्य लोगों के लिए किया जा सकता है, मैं इस तरह से आगे बढ़ूंगा।

+0

आप शायद दो मुहावरे मिश्रण कर रहे हैं। httpInvoker दूरस्थ प्रक्रिया कॉल के बारे में है। आप बस एक विधि कहते हैं, कुछ तर्कों में गुजरते हैं और कुछ प्रकार के परिणाम प्राप्त करते हैं। आरईएसटी में आप किसी विशेष स्थिति को बदलने के साथ बहुत कुछ कर रहे हैं (यह मूल रूप से आरईएसटी विचार है)। मुझे लगता है, इस तरह के मामले के लिए सबसे अच्छा समाधान आपकी सेवा के सामने दो अलग-अलग facades होगा जो प्रत्येक एपीआई शैली के सिद्धांतों का पालन करें। – mp911de

+0

मुझे लगता है कि दोनों तकनीकें राज्य को बदलने की अनुमति देती हैं। आरईएसटी में यह एक http GET है, httpInvoker के साथ आप getMethod कहते हैं।मूल्यों को संशोधित/बनाने के लिए REST उपयोग PUT/POST और httpInvoker कॉल सेट/बनाएं। लेकिन जब आप दो facades के बारे में बात कर रहे हैं यह वह जगह है जहां यह दिलचस्प है: यह एक सुरुचिपूर्ण तरीके से कैसे किया जा सकता है? – Marged

+0

@ मार्ज किया गया क्यों आप स्प्रिंग्स HttpInvoker जैसे बहिष्कृत टूल का उपयोग करना चाहते हैं? यह स्प्रिंग 2.0 में पहले से ही बहिष्कृत हो गया था, मुझे नहीं लगता कि स्प्रिंग बूट उस पर स्वत: कॉन्फ़िगर करेगा या निर्भरता का प्रबंधन भी करेगा। –

उत्तर

2

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

अन्यथा आप अपनी बाकी सेवाओं को उपभोग करने के लिए अपना खुद का जार बना सकते हैं और अपने जावा क्लाइंट को बाकी सेवा के बारे में ज्ञान के बिना इसका उपयोग करने दें।

+0

के बिना स्वयं कर सकते हैं। एक जार बनाना जो आरईएसटी इंटरफ़ेस को कॉल करता है वह दृष्टिकोण है जिसे मैंने डंप किया था। मैं एक आसान दृष्टिकोण तलाशता हूं जहां सबसे बड़ा हिस्सा स्वचालित रूप से बनाया जाता है। यह httpinvoker और REST के लिए काम करता है जब मैं प्रत्येक तकनीक को अलग-अलग उपयोग करता हूं। – Marged

0

HttpInvoker वसंत-एकीकरण के बाद गिरा दिया गया था 2.x: http://docs.spring.io/spring-integration/docs/2.0.x/reference/html/httpinvoker.html (! महत्वपूर्ण हेडर विवरण देता है)। Spring Integration Http with Spring Boot and @RequestMapping

उम्मीद है कि इस हो जाता है: http://docs.spring.io/spring-integration/docs/latest-ga/reference/html/http.html

वहाँ भी है एक और अतः किसी HTTP समर्थन और कुछ प्रासंगिक जानकारी के साथ वसंत बूट के बारे में पूछ के साथ पोस्ट: वहाँ 3.x और 4.x संस्करणों में HTTP समर्थन करने के लिए एक संदर्भ है आप खरगोश छेद से बाहर रास्ता का हिस्सा है।

+1

शायद मैं इस बारे में गलत व्याख्या कर रहा हूं लेकिन सिर्फ इसलिए कि स्प्रिंग _Integration_ HttpInvoker के लिए समर्थन छोड़ देता है, यह इस बात से नहीं है कि स्प्रिंट ने खुद को गिरा दिया या हटा दिया। क्योंकि मैं वसंत एकीकरण का उपयोग नहीं कर रहा हूं, मुझे समस्याओं में भाग नहीं लेना चाहिए। – Marged

+0

हाँ ... आप सही हैं। http://docs.spring.io/spring/docs/current/spring-framework-reference/html/remoting.html –

1

हम दोनों तकनीकों का उपयोग यहां करते हैं। जावा-टू-जावा इनवोकेशन के लिए HttpInvoker। अन्य ग्राहकों के लिए HTTP पर सादा पुराना JSON (आरईएसटी के समान लेकिन असली आरईएसटी नहीं)। मुझे लगता है कि परियोजना jsonrpc4j HTTP सामान को लागू करने का एक अच्छा तरीका प्रदान करता है।

3

स्प्रिंग बूट में HTTP आवेदक एंडपॉइंट्स का खुलासा करना वास्तव में इतना आसान है कि ऐसा लगता है कि कुछ गुम है। एक @SpringBootApplication है कि अपने रास्ते पर spring-webmvc (spring-boot-starter-web पोम का उपयोग कर उदाहरण के लिए) में, निम्न सेम परिभाषा जोड़ें:

@Bean(name = "/my.service") 
public HttpInvokerServiceExporter myHttpInvokerServiceExporter(MyService myServiceImpl) { 
    HttpInvokerServiceExporter exporter = new HttpInvokerServiceExporter(); 
    exporter.setServiceInterface(MyService.class); 
    exporter.setService(myServiceImpl); 
    return exporter; 
} 

HTTP invoker endpoint अब /my.service में सामने आ रहा है और किसी भी अन्य मैपिंग को प्रभावित नहीं करेगा। आप जितना चाहें उतने एंडपॉइंट जोड़ सकते हैं; और फिर शीर्ष पर REST के लिए कुछ @RequestMapping एस।

1

वसंत-आराम-चालक पर एक नज़र डालें। यह जावा इंटरफेस को आरईएसटी सेवाओं से बांधता है। यह सेवा को "उजागर करने" की समस्या का समाधान नहीं करता है, लेकिन इसे उपभोग करने में बहुत आसान बनाता है। आरपीसी और राज्य हस्तांतरण:

https://github.com/ggeorgovassilis/spring-rest-invoker

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