2012-12-21 23 views
5

के साथ एसओएपी का उपयोग कर एक पुरानी सेवा प्रॉक्सी हम एसओएपी के साथ एक विश्वसनीय वेब सेवा प्रॉक्सी करना चाहते हैं।डब्ल्यूएसओ 2 ईएसबी

आरईएसटी सेवा जीईटी विधि का उपयोग करती है और क्वेरी पैरामीटर के माध्यम से इनपुट स्वीकार करती है। यह प्रकार के आवेदन/सीएसवी का संसाधन पैदा करता है।

क्या डब्लूएसओ 2 ईएसबी/Synapse इस तरह के परिदृश्य का समर्थन करता है, और क्या कोई उदाहरण उपलब्ध है?

उदाहरण अनुरोध

सोप प्रॉक्सी अनुरोध:

<request> 
    <fromDate>2012-01-01</fromDate> 
    <toDate>2012-12-31</toDate> 
</request> 

बाकी Endpoint अनुरोध:

http://localhost/person?fromDate=2012-01-01&toDate=2012-12-31 

प्रतिक्रिया का उदाहरण

बाकी Endpo पूर्णांक रिस्पांस

"Name","Age","Sex" 
"Geoff","22","Male" 

सोप प्रॉक्सी रिस्पांस

<person> 
    <name>Geoff</name> 
    <age>22</age> 
    <sex>Male</sex> 
<person> 

बहुत धन्यवाद।

उत्तर

5

यदि मैं आपको सही ढंग से समझता हूं, तो आप एक एसओएपी सेवा के रूप में एक आरईएसटी सेवा का पर्दाफाश करना चाहते हैं, ताकि एसओएपी ग्राहक ईएसबी के माध्यम से अपनी आरईएसटी सेवा तक पहुंच सकें?

अगर ऐसा है, यह संभव है :) आप इन से नमूना 152 की जांच करनी चाहिए: http://docs.wso2.org/wiki/display/ESB451/Proxy+Service+Samples

यह है कि कैसे आप एक सोप अनुरोध ले समझाने और यह एक बाकी बैकएंड के पास और फिर बदलने देंगे एक एसओएपी प्रतिक्रिया में आरईएसटी प्रतिक्रिया।

संपादित करें: यहां बताया कि आप टिप्पणियों में पूछा क्या करने पर एक नमूना विन्यास है, उम्मीद है कि यह आप शुरू कर दिया :)

<proxy xmlns="http://ws.apache.org/ns/synapse" name="RESTProxy" transports="https,http" statistics="disable" trace="disable" startOnLoad="true"> 
    <target> 
     <inSequence> 

     <!-- We set the HTTP Method we want to use to make the REST request here --> 
     <property name="HTTP_METHOD" value="GET" scope="axis2"/> 

     <!-- This is where the magic happens, for what you want i.e. mapping SOAP "params" to REST query param's --> 
     <property name="messageType" value="application/x-www-form-urlencoded" scope="axis2"/> 

     <send> 
      <endpoint> 
       <!-- This is the RESTful URL we are going to query, like the one in the ESB example 152 --> 
       <address uri="http://localhost/person" /> 
      </endpoint> 
     </send> 

     </inSequence> 

     <outSequence> 
     <log level="full"/> 
     <property name="messageType" value="text/xml" scope="axis2"/> 
     <send/> 
     </outSequence> 
    </target> 
    <description></description> 
</proxy> 

फिर सोप अनुरोध आप ESB के लिए कर की तरह कुछ किया जाना चाहिए मिल जाएगा:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soapenv:Header/> 
    <soapenv:Body> 
    <person> 
     <fromDate>2012-01-01</fromDate> 
     <toDate>2012-12-31</toDate> 
    </person> 
    </soapenv:Body> 
</soapenv:Envelope> 

आशा में मदद करता है :)

+0

बहुत धन्यवाद, उदाहरण बहुत उपयोगी है। हालांकि हम अभी भी सोच रहे हैं - हम अपने आरईएसटी कॉल के लिए एसओएपी एक्सएमएल पैरामीटर को क्वेरी पैरामीटर में कैसे परिवर्तित कर सकते हैं? क्या आप मदद कर सकते हैं? –

0

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

0

1. आप सोप प्रॉक्सी से मूल्य प्राप्त करने की आवश्यकता

2. आपको इसे स्थानीय चर

3 में स्टोर करने की आवश्यकता है। आप क्वेरी पैरामीटर

4. का उपयोग कर बाकी सेवा के लिए मूल्य उत्तीर्ण करने की आवश्यकता है कि आप एक सोप स्वरूप

सोप अनुरोध किया जाएगा करने के लिए बाकी सेवा से प्रतिक्रिया प्रारूप में तैयार करना,

<request> <fromDate>2012-01-01</fromDate> <toDate>2012-12-31</toDate> </request>

आप सोप प्रॉक्सी के रूप में अनुरोध से मूल्य स्टोर कर सकते हैं,

<proxy xmlns="http://ws.apache.org/ns/synapse" name="RESTProxy" transports="https,http" statistics="disable" trace="disable" startOnLoad="true><target> 
    <inSequence> 
     <property name="fromDate" expression="//fromDate" scope="default" type="STRING"/> 
     <property name="toDate" expression="//toDate" scope="default" type="STRING"/> 

तो फिर तुम मूल्यों बाकी सेवा के द्वारा, पारित कर सकते हैं

<send> 
    <endpoint> 
      <http method="GET" uri-template="http://localhost/person?fromDate=={get-property('fromDate')}&amp;toDate={get-property('toDate')}"/> 
    </endpoint> 
</send> 
</inSequence> 

तो आप PayloadFactory मध्यस्थ का उपयोग कर सकते हैं प्रतिक्रिया स्वरूप,

<outSequence> 
<payloadFactory media-type="xml">  
     <format> 
       <person> 
         <Name>$1</Name> 
         <Age>$2</Age> 
         <Sex>$3</Sex> 
       </person> 
     </format> 
       <args> 
        <arg evaluator="json" expression="$.Name"/> 
        <arg evaluator="json" expression="$.Age"/> 
        <arg evaluator="json" expression="$.Sex"/> 
       </args> 
</payloadFactory> 
    <send/> 
    </outSequence> 
    </target> 
    <description/> 
    </proxy> 

तो प्रॉक्सी की प्रतिक्रिया हो जाएगा,

<person> 
    <name>Geoff</name> 
    <age>22</age> 
    <sex>Male</sex> 
<person>