如何集成wso2 DSS服务器和wso2 ESB
我当前的场景是,我有一个从data service公开的web服务,当我给它用户名时,它会返回用户的电子邮件地址。现在,我想在ESB中使用此web服务,并从属性中的此web服务获取电子邮件id,并使用日志中介器在控制台中显示它。 我现在应该做什么,怎么做 很抱歉这个愚蠢的问题,但我是wso2 esb的最新成员。所以请在这方面帮助我如何集成wso2 DSS服务器和wso2 ESB,wso2,wso2esb,wso2dss,Wso2,Wso2esb,Wso2dss,我当前的场景是,我有一个从data service公开的web服务,当我给它用户名时,它会返回用户的电子邮件地址。现在,我想在ESB中使用此web服务,并从属性中的此web服务获取电子邮件id,并使用日志中介器在控制台中显示它。 我现在应该做什么,怎么做 很抱歉这个愚蠢的问题,但我是wso2 esb的最新成员。所以请在这方面帮助我 Now ihave a response like: <brs:getRecipientKeyResponse xmlns:brs="http://brs.ca
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')"/>
现在我有一个类似以下的响应:
凯文
我必须从这个响应中获取recipient元素,并将其放入有效负载中。我对此的完整顺序是:
$1
既然已经实现了数据服务,就将其作为端点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>
既然已经实现了数据服务,就将其作为端点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>
您只需使用您的wso2dss tryit服务,将请求端代码复制到payloadfactory中,而不是“?”保留$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>
$1
$2
$3
您只需使用您的wso2dss tryit服务,将请求端代码复制到payloadfactory中,而不是“?”保留$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>
$1
$2
$3
我还有一个问题。我在一个名为Recipient的属性中捕获了一个名称。现在我想把这个传给有效载荷工厂。如何做到这一点?我的代码是:它是这样的$在args中,您需要按顺序增加参数,比如,$1,$2..i还有一个问题。我在一个名为Recipient的属性中捕获了一个名称。现在我想把这个传给有效载荷工厂。如何做到这一点?我的代码是:它是这样的$在args中,您需要按顺序增加参数,如,$1,$2。。