1

我目前的情况是,我有一个从数据服务公开的 Web 服务,当我给它用户名时,它会返回用户的电子邮件地址。现在我想在 ESB 中使用这个 Web 服务,并在一个属性中从这个 Web 服务获取电子邮件 ID,并使用 LOG 中介器在控制台中显示它。我现在应该怎么做?

抱歉这个愚蠢的问题,但我是 wso2 esb 的最新成员。所以请帮我解决这个问题。

Now ihave a response like:
<brs:getRecipientKeyResponse xmlns:brs="http://brs.carbon.wso2.org">
 <brs:MailRecipient xsi:type="ax2338:MailRecipient" xmlns:ax2338="http://email.samples/xsd" xmlns:ax2337="http://email.samples/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <ax2337:recipient>kevin</ax2337:recipient>
 </brs:MailRecipient>
</brs:getRecipientKeyResponse>

Ihave to get the recipient element from this response and put this in payload. My complete sequence for this is:
<sequence xmlns="http://ws.apache.org/ns/synapse" name="receiveSeq">
   <log>
      <property name="getRecipient" value="------------Trying to get data Fom BRS Response----------------------------"/>
      <property xmlns:ns="http://org.apache.synapse/xsd" xmlns:ax2337="http://email.samples/xsd" name="Recipient" expression="//ax2337:recipient"/>
   </log>
   <payloadFactory>
      <format>
         <p:GetEmailDetails xmlns:p="http://ws.wso2.org/dataservice">
            <xs:name xmlns:xs="http://ws.wso2.org/dataservice">$1</xs:name>
         </p:GetEmailDetails>
      </format>
      <args>
         <arg xmlns:ns="http://org.apache.synapse/xsd" xmlns:ax2337="http://email.samples/xsd" expression="//ax2337:recipient"/>
      </args>
   </payloadFactory>
   <log>
      <property xmlns:ns="http://org.apache.synapse/xsd" name="getName" expression="get-property('Recipient')"/>
   </log>
   <send receive="DBSeq">
      <endpoint key="emailServiceEP"/>
   </send>
</sequence>

<!--this part is not able to get data --->
 <property xmlns:ns="http://org.apache.synapse/xsd" name="getName" expression="get-property('Recipient')"/>
4

2 回答 2

1

你只需使用你的wso2dss tryit服务在那个请求端代码复制到payloadfactory insted的“?”保持$ 1,$ 2 ..这样并按照你上面的订单顺序传递下面的参数对此起着至关重要的作用我认为这对你有帮助

<payloadFactory>
            <format>
               <p:insert_emp_operation xmlns:p="http://ws.wso2.org/dataservice">
                  <xs:eno xmlns:xs="http://ws.wso2.org/dataservice">$1</xs:eno>
                  <xs:ename xmlns:xs="http://ws.wso2.org/dataservice">$2</xs:ename>
                  <xs:esal xmlns:xs="http://ws.wso2.org/dataservice">$3</xs:esal>
               </p:insert_emp_operation>
            </format>
            <args>
               <arg expression="get-property('eno')"/>
               <arg expression="get-property('ename')"/>
               <arg expression="get-property('esal')"/>
            </args>
         </payloadFactory>
         <send receive="Error_Seq">
            <endpoint>
               <address uri="http://localhost:9764/services/emp_DataService/" format="soap11"/>
            </endpoint>
         </send>
于 2013-03-11T10:48:49.347 回答
0

既然您已经实现了 Dataservice,请将其作为端点 url 提供给您的代理,该代理可以在 wso2esb 中创建。当您向代理发送请求时,您将收到数据服务的响应。只需使用“level=full”做一个日志,您就会看到完整的响应。使用属性调解器并执行 xpath 来选择您需要的值。样本配置:

 <proxy name="StockQuoteProxy">
        <target>
            <endpoint>
                <address uri="DS endpoint"/>
            </endpoint>
            <outSequence>
               <log level="full">
                  <property name="email" expression="xpath from the email attribute in the rseponse"/>
                </log>
                <send/>
            </outSequence>
        </target>

    </proxy>

这是有关如何创建代理的 esb 示例指南;

http://docs.wso2.org/wiki/display/ESB460/Proxy+Service+Samples

于 2013-03-07T15:43:03.947 回答