- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 WSO2 Esb 代理服务中创建的 2 个序列有一个小问题。
这是我的配置:
我的代理 (Pepkor_Product_Search_Proxy) 需要搜索 Web 服务和数据服务以获取产品信息并返回响应(如果需要则聚合)。
我的代理服务调用了 2 个服务;托管在 DSS 上的数据服务和托管在 AS 上的 Web 服务。代理请求被发送到 2 个“请求序列”,它们格式化请求以匹配 AS 和 DSS 上相应服务调用的预期消息。收到响应后,我将它们发送到 2 个“响应序列”,以便根据(与 WSDL 一致)将它们格式化为代理服务响应。然而,一旦到达这些序列中的发送中介,执行就会停止,并且它们不会被代理的输出序列接收。
发送中介正在使用默认行为(应该是发送到代理序列),例如:
所有 4 个序列(2 Rq + 2Rs)都是动态的并保存在 system_/conf: registry
我仅从一个服务收到 soap 中的消息(似乎 rs 序列正在响应,而不是代理的输出序列!)
我想知道如何将这些“中介”响应按顺序返回到我的代理中...
我尝试了序列中介而不是克隆,但无济于事。
请参见下文:Rq mssg、代理和“响应”序列突触配置以及代理碳日志。
在此先感谢您,如果您需要任何其他信息,请告诉我。
SOAP 请求:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:prod="http://za.co.pepkor/product_service/">
<soapenv:Header/>
<soapenv:Body>
<prod:productSearchReq>
<!--Optional:-->
<productName>NIKE_SHIRTS</productName>
<!--Optional:-->
<productSize>7</productSize>
<!--Optional:-->
<productColour>RED</productColour>
</prod:productSearchReq>
</soapenv:Body>
</soapenv:Envelope>
代理:
<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse" name="Pepkor_Product_Search_Proxy"
transports="https http" startOnLoad="true" trace="disable">
<target>
<inSequence>
<log level="custom">
<property name="Sending request to :"
value="ackServiceSearchSeqRq and shcServiceSearchSeqRq sequences..." />
</log>
<clone sequential="true">
<target sequence="conf:/ackServiceSearchSeqRq" />
<target sequence="conf:/shcServiceSearchSeqRq" />
</clone>
</inSequence>
<outSequence>
<log level="custom">
<property name="Out Sequence reached"
value="++++++++++++++=========Aggregating now========+++++++++++++++++==" />
</log>
<aggregate>
<completeCondition>
<messageCount min="-1" max="-1" />
</completeCondition>
<onComplete expression="//productDetails">
<log level="custom" separator=",">
<property name="::::"
value="======================= Sending Back the Aggregated Responses. ===============" />
</log>
</onComplete>
</aggregate>
<respond />
</outSequence>
<faultSequence />
</target>
<publishWSDL key="gov:service_integration/wsdls/PepKorProductSearch.wsdl" />
</proxy>
确认服务 Rs 序列
<?xml version="1.0" encoding="UTF-8"?>
<sequence xmlns="http://ws.apache.org/ns/synapse" name="ackServiceSearchSeqRs">
<log level="custom">
<property name="Below Response recieved from Ack-WS" value="==================" />
</log>
<log level="full" />
<property xmlns:ns1="http://ack.pepkor.org" xmlns:ns="http://org.apache.synapse/xsd"
xmlns:ax23="http://ack.pepkor.org/xsd" name="product_Colour"
expression="//ns1:productSearchResponse/ns1:return/ax23:product_Colour/text()"
scope="default" type="STRING" />
<log level="custom">
<property xmlns:ns="http://org.apache.synapse/xsd" name="ackRs:Colour : "
expression="$ctx:product_Colour" />
</log>
<property xmlns:ns1="http://ack.pepkor.org" xmlns:ns="http://org.apache.synapse/xsd"
xmlns:ax23="http://ack.pepkor.org/xsd" name="product_ID"
expression="//ns1:productSearchResponse/ns1:return/ax23:product_ID/text()"
scope="default" type="STRING" />
<log level="custom">
<property xmlns:ns="http://org.apache.synapse/xsd" name="ackRs:ID : "
expression="$ctx:product_ID" />
</log>
<property xmlns:ns1="http://ack.pepkor.org" xmlns:ns="http://org.apache.synapse/xsd"
xmlns:ax23="http://ack.pepkor.org/xsd" name="product_Name"
expression="//ns1:productSearchResponse/ns1:return/ax23:product_Name/text()"
scope="default" type="STRING" />
<log level="custom">
<property xmlns:ns="http://org.apache.synapse/xsd" name="ackRs:Name : "
expression="$ctx:product_Name" />
</log>
<property xmlns:ns1="http://ack.pepkor.org" xmlns:ns="http://org.apache.synapse/xsd"
xmlns:ax23="http://ack.pepkor.org/xsd" name="product_Size"
expression="//ns1:productSearchResponse/ns1:return/ax23:product_Size/text()"
scope="default" type="STRING" />
<log level="custom">
<property xmlns:ns="http://org.apache.synapse/xsd" name="ackRs:Size : "
expression="$ctx:product_Size" />
</log>
<property xmlns:ns1="http://ack.pepkor.org" xmlns:ns="http://org.apache.synapse/xsd"
xmlns:ax23="http://ack.pepkor.org/xsd" name="source"
expression="//ns1:productSearchResponse/ns1:return/ax23:source/text()"
scope="default" type="STRING" />
<log level="custom">
<property xmlns:ns="http://org.apache.synapse/xsd" name="ackRs:Source : "
expression="$ctx:source" />
</log>
<property xmlns:ns1="http://ack.pepkor.org" xmlns:ns="http://org.apache.synapse/xsd"
xmlns:ax23="http://ack.pepkor.org/xsd" name="type"
expression="//ns1:productSearchResponse/ns1:return/ax23:type/text()"
scope="default" type="STRING" />
<log level="custom">
<property xmlns:ns="http://org.apache.synapse/xsd" name="ackRs:Type : "
expression="$ctx:type" />
</log>
<payloadFactory media-type="xml">
<format>
<productDetails xmlns:pep="http://za.co.pepkor/product_service/">
<productID>$1</productID>
<productName>$2</productName>
<productSize>$3</productSize>
<productColour>$4</productColour>
<productType>$5</productType>
<sourceID>$6</sourceID>
</productDetails>
</format>
<args>
<arg xmlns:ns="http://org.apache.synapse/xsd" evaluator="xml"
expression="$ctx:product_ID" />
<arg xmlns:ns="http://org.apache.synapse/xsd" evaluator="xml"
expression="$ctx:product_Name" />
<arg xmlns:ns="http://org.apache.synapse/xsd" evaluator="xml"
expression="$ctx:product_Size" />
<arg xmlns:ns="http://org.apache.synapse/xsd" evaluator="xml"
expression="$ctx:product_Colour" />
<arg xmlns:ns="http://org.apache.synapse/xsd" evaluator="xml"
expression="$ctx:type" />
<arg xmlns:ns="http://org.apache.synapse/xsd" evaluator="xml"
expression="$ctx:source" />
</args>
</payloadFactory>
<send />
</sequence>
Shc 服务 Rs 序列
<?xml version="1.0" encoding="UTF-8"?>
<sequence xmlns="http://ws.apache.org/ns/synapse" name="shcServiceSearchSeqRs">
<log level="custom">
<property name="Below response recieved from Shc-DS" value="==================" />
</log>
<log level="full" />
<property xmlns:ns1="SHC" xmlns:ns="http://org.apache.synapse/xsd"
name="Product_ID" expression="//ns1:productDetails/ns1:Product_ID/text()"
scope="default" type="STRING" />
<log level="custom">
<property xmlns:ns="http://org.apache.synapse/xsd" name="shcRs: Product_ID : "
expression="$ctx:Product_ID" />
</log>
<property xmlns:ns1="SHC" xmlns:ns="http://org.apache.synapse/xsd"
name="Product_Name" expression="//ns1:productDetails/ns1:Product_Name/text()"
scope="default" type="STRING" />
<log level="custom">
<property xmlns:ns="http://org.apache.synapse/xsd" name="shcRs: Product_Name : "
expression="$ctx:Product_Name" />
</log>
<property xmlns:ns1="SHC" xmlns:ns="http://org.apache.synapse/xsd"
name="Product_Size" expression="//ns1:productDetails/ns1:Product_Size/text()"
scope="default" type="STRING" />
<log level="custom">
<property xmlns:ns="http://org.apache.synapse/xsd" name="shcRs: Product_Size : "
expression="$ctx:Product_Size" />
</log>
<property xmlns:ns1="SHC" xmlns:ns="http://org.apache.synapse/xsd"
name="Product_Colour" expression="//ns1:productDetails/ns1:Product_Colour/text()"
scope="default" type="STRING" />
<log level="custom">
<property xmlns:ns="http://org.apache.synapse/xsd" name="shcRs: Product_Colour : "
expression="$ctx:Product_Colour" />
</log>
<property xmlns:ns1="SHC" xmlns:ns="http://org.apache.synapse/xsd"
name="Product_Type" expression="//ns1:productDetails/ns1:Product_Type/text()"
scope="default" type="STRING" />
<log level="custom">
<property xmlns:ns="http://org.apache.synapse/xsd" name="shcRs: Product_Type : "
expression="$ctx:Product_Type" />
</log>
<property xmlns:ns1="SHC" xmlns:ns="http://org.apache.synapse/xsd"
name="Source" expression="//ns1:productDetails/ns1:Source/text()"
scope="default" type="STRING" />
<log level="custom">
<property xmlns:ns="http://org.apache.synapse/xsd" name="shcRs: Source : "
expression="$ctx:Source" />
</log>
<payloadFactory media-type="xml">
<format>
<productDetails xmlns="">
<productID>$1</productID>
<productName>$2</productName>
<productSize>$3</productSize>
<productColour>$4</productColour>
<productType>$5</productType>
<sourceID>$6</sourceID>
</productDetails>
</format>
<args>
<arg xmlns:ns="http://org.apache.synapse/xsd" evaluator="xml"
expression="$ctx:Product_ID" />
<arg xmlns:ns="http://org.apache.synapse/xsd" evaluator="xml"
expression="$ctx:Product_Name" />
<arg xmlns:ns="http://org.apache.synapse/xsd" evaluator="xml"
expression="$ctx:Product_Size" />
<arg xmlns:ns="http://org.apache.synapse/xsd" evaluator="xml"
expression="$ctx:Product_Colour" />
<arg xmlns:ns="http://org.apache.synapse/xsd" evaluator="xml"
expression="$ctx:Product_Type" />
<arg xmlns:ns="http://org.apache.synapse/xsd" evaluator="xml"
expression="$ctx:Source" />
</args>
</payloadFactory>
<send />
</sequence>
SOAP Rs
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<productDetails>
<productID>214562</productID>
<productName>NIKE_SHIRTS</productName>
<productSize>7</productSize>
<productColour>RED</productColour>
<productType>SHIRT</productType>
<sourceID>SHC</sourceID>
</productDetails>
</soapenv:Body>
</soapenv:Envelope>
WSO2 碳记录
https ://文档。谷歌。 com/文档/d/12At0zir99H9cOo9hzNrgG33r52PHF0W32XLyBT6dzUQ/编辑? usp=共享
编辑
我的 AggHandlerSequence :
<sequence xmlns="http://ws.apache.org/ns/synapse">
<log level="custom">
<property name="pocSearchRsHandlerSeq reached" value="++++++++++++++=========Aggregating now========+++++++++++++++++=="></property>
</log>
<aggregate>
<completeCondition>
<messageCount min="-1" max="-1"></messageCount>
</completeCondition>
<onComplete xmlns:ns="http://org.apache.synapse/xsd" xmlns:prod="http://za.co.pepkor/product_service/" expression="//prod:productSearchResp/productDetails">
<log level="custom" separator=",">
<property name="::::" value="======================= Sending Back the Aggregated Responses. ==============="></property>
</log>
<respond></respond>
</onComplete>
</aggregate>
</sequence>
还有我的一个 Rs Seq
<sequence xmlns="http://ws.apache.org/ns/synapse">
:
:
<payloadFactory media-type="xml">
<format>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prod="http://za.co.pepkor/product_service/">
<soapenv:Body>
<prod:productSearchResp>
<productDetails xmlns="">
<productID>$1</productID>
<productName>$2</productName>
<productSize>$3</productSize>
<productColour>$4</productColour>
<productType>$5</productType>
<sourceID>$6</sourceID>
</productDetails>
</prod:productSearchResp>
</soapenv:Body>
</soapenv:Envelope>
:
:
<sequence key="conf:/pocSearchRsHandlerSeq"></sequence>
:
:
但是我在肥皂中得到了这个卢比
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<productDetails>
<productID>2145627</productID>
<productName>NIKE_SHIRTS</productName>
<productSize>7</productSize>
<productColour>RED</productColour>
<productType>SHIRT</productType>
<sourceID>ACK</sourceID>
</productDetails>
<productDetails>
<productID>214562</productID>
<productName>NIKE_SHIRTS</productName>
<productSize>7</productSize>
<productColour>RED</productColour>
<productType>SHIRT</productType>
<sourceID>SHC</sourceID>
</productDetails>
</soapenv:Body>
</soapenv:Envelope>
但是我想要一个类似于 Rs seq 中的 Payload 工厂的响应,已经尝试使用 corrolateOn 表达式。我能否将这些聚合字段存储为属性并在负载工厂中使用它们,或者我如何将 Agg 响应映射到 ?
最终编辑
完美这里是一个 Rs seq 有效负载:(这将由 agg 处理程序接收)
<productDetails xmlns="">
<productID>$1</productID>
<productName>$2</productName>
<productSize>$3</productSize>
<productColour>$4</productColour>
<productType>$5</productType>
<sourceID>$6</sourceID>
</productDetails>
还有我的完整聚合处理程序:
<sequence xmlns="http://ws.apache.org/ns/synapse">
<log level="custom">
<property name="pocSearchRsHandlerSeq reached" value="++++++++++++++=========Aggregating now========+++++++++++++++++=="></property>
</log>
<aggregate>
<completeCondition>
<messageCount min="-1" max="-1"></messageCount>
</completeCondition>
<onComplete xmlns:ns="http://org.apache.synapse/xsd" expression="//productDetails">
<log level="custom" separator=",">
<property name="::::" value="======================= Formatting the Aggregated Responses. ==============="></property>
</log>
<log level="full"></log>
<payloadFactory media-type="xml">
<format>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prod="http://za.co.pepkor/product_service/">
<soapenv:Body>
<prod:productSearchResp> $1 </prod:productSearchResp>
</soapenv:Body>
</soapenv:Envelope>
</format>
<args>
<arg expression="//productDetails" evaluator="xml"></arg>
</args>
</payloadFactory>
<respond></respond>
</onComplete>
</aggregate>
</sequence>
最佳答案
如果你想使用聚合中介,这两个响应必须与你使用这个中介的顺序相同
在你的代理序列中,你使用克隆并像你已经做的那样调用“ackServiceSearchSeqRq”和“shcServiceSearchSeqRq”
在每个请求序列中,您根据要调用的服务格式化您的请求,然后通过以下方式之一使用发送调解器:
<send> <endpoint key="xxx"> </send>
:来自您的 2 个服务的 2 个响应将转到您的代理的 outSequence<send receive="MyAggregateSequence"> <endpoint key="xxx"> </send>
:来自您的 2 个服务的 2 个响应将转到“MyAggregateSequence”在代理的 outSequence 或“MyAggregateSequence”中,根据您选择的选项,您使用过滤器或开关中介来确定它是来自 ackService 还是来自 shcService 的响应,并决定应用哪个转换(注意您使用 payloadFactory 创建的 productDetails 节点,如果没有 namespace ,则在调用聚合中介之前每次都指定 xmlns="":在您的示例中不是这种情况)。在 aggregate/onComplete 内部,您可以使用没有端点的发送中介将聚合消息发送回代理的调用者。
在你的例子中,有 2 <send/>
,每个 2 Rs 序列中的一个:第一个发送给代理的调用者,第二个什么都不做(ESB 必须说你尝试响应 2 次)。
关于WSO2 ESB "Send"中介没有发送到代理的输出序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27901905/
在之前的工作中,有很多关于“企业服务总线”(ESB) 的讨论。我读了一本关于它的概念书的部分内容,但从未真正理解如何具体实现/集成它。我熟悉 SOA/队列/目录服务/等。但我不明白 ESB 到底是什么
我正在使用 Mule ESB 公开 CXF 服务,我需要将请求按原样传递给条件路由器。我看到的大多数示例都将响应传递给条件路由器。 如何在不更改 wsdl 的情况下转发请求? 最佳答案 当 OP 给出
谁能告诉我MQ(消息队列)和ESB(企业服务总线)有什么区别?我知道两者都提供进程间通信和处理消息传递,但在互联网上没有那么多信息,每个人都以不同的方式描述它。我也不知道 Message broker
我创建了一个具有一个端点的自定义路由器。自定义路由器根据入站 URL 的 URL 参数查找端点的目标。我有一个正在运行的示例,我正在浏览器中对其进行测试。我正在尝试解决最后一件事。当我使用 http:
我将一系列服务分组为 Carbon 应用程序,然后将其部署在 WSO2 ESB 上。如果这些服务之一在部署期间失败,则其他服务都不会部署在 ESB 上,而是在重试时出现 Service laready
谁能告诉我MQ(消息队列)和ESB(企业服务总线)有什么区别?我知道两者都提供进程间通信和处理消息传递,但在互联网上没有那么多信息,每个人都以不同的方式描述它。我也不知道 Message broker
JBPM 和 BPEL(和 ESB)有什么区别? 你能解释一下吗? RGDS 最佳答案 我对 JBPM 不太熟悉。但它似乎是一个业务工作流,可以与 Java 服务或基本上基于 Java 的流程一起使用
因此,使用 Mule ESB,我正在 Bing 中搜索某些 PDF 文件。然后我解析 JSON 响应以捕获文件位置的 URL。现在我需要检索文件并保存在本地。以下是我到目前为止所拥有的,但我有一种感觉
这个问题不好问。所以我会尽力问清楚。 我们已经有一个企业 SOA 套件 10G 系统正在运行。 一个小过程,我就这样解释。 Consumer->ESB->BPEL->ESB->Provider Web
我可以在任何应用服务器上部署 Mule。如果是这样,我们如何部署 Mule 示例。 我已将我的 eclipse 配置为运行 JBoss,并且 Mule Flows 不会部署在 JBOss 服务器中。同
我有一个 Mule 应用程序,我在其中向多个 WebServices 发送请求并聚合我得到的响应列表,这个想法是通过从处理列表的 CustomJavaClass 返回它来获取列表的第一个响应: ret
使用 Mule ESB 我注意到您可以(通过任意点连接器)连接应用程序、数据库、Web 服务等。由于我在不同的 ESB(企业服务总线)之间进行比较,我遇到了 WSO2 ESB 并阅读了文档,它似乎只允
我正在构建一个基于 REST 的 Web 服务(有些可能是基于 Soap 的)并且将由外部代理调用。代理是我们网络之外的任何软件。 我正在考虑两种选择 i) 在 esb 外部的容器上运行 Web 服务
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我在 mysql 中创建了一个 SP,它接受 6 个输入参数并给出 2 个输出参数。我想从数据库查找中调用它。我不知道该怎么做。我尝试过不同的 2 代码,但没有成功。请帮忙。 突触代码:
我正在调用下面播种的其余服务
您在何处、何时以及为何在 PHP 项目中使用 ESB? 您认为在 PHP 项目中使用 ESB 有意义的地点、时间和原因? ESB(和 ESB 促进器,如 Mule)是否提供了 PHP 和原生 LAMP
我一直在 SO 和 Mule 论坛上苦苦挣扎,但找不到有效的解决方案。 esb 接收包含一个 id 的单个请求,该请求创建一个 XML 负载,该负载由相关 id 列表组成。然后将此 XML 有效负载拆
我和我的团队将致力于 APIGEE,这是一个 API 开发平台,用于在我们的应用程序中公开一些服务。我正在浏览他们的文档,并试图了解 APIGEE 或任何其他 API 开发平台(如 Mashery)的
我试图了解 ESB Mediation是,确切地说(具体例子),并且正在撞墙。 根据维基百科,数据中介重定向到 Data Transformation文章,唯一提到调解是模糊和神秘的: When th
我是一名优秀的程序员,十分优秀!