Wso2 带PayLoadFactory的ESB:错误:java.io.IOException:响应解压缩失败
我有这样一个场景: 我使用来自数据服务的一些信息和来自另一个数据服务的另一个信息,我希望将这两个信息合并到一个唯一的响应中 在这个测试中,我不使用数据服务,而是在SOAPUI中使用模拟服务,两个模拟服务可以单独工作 我要合并的数据,例如: 数据服务1响应:Wso2 带PayLoadFactory的ESB:错误:java.io.IOException:响应解压缩失败,wso2,esb,Wso2,Esb,我有这样一个场景: 我使用来自数据服务的一些信息和来自另一个数据服务的另一个信息,我希望将这两个信息合并到一个唯一的响应中 在这个测试中,我不使用数据服务,而是在SOAPUI中使用模拟服务,两个模拟服务可以单独工作 我要合并的数据,例如: 数据服务1响应: <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:obt="http://informatizacion.uci.cu/servicios
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
xmlns:obt="http://informatizacion.uci.cu/servicios/assets/ObtenerPersonas">
<soap:Header/>
<soap:Body>
<obt:Personas>
<!--Zero or more repetitions:-->
<obt:Persona>
<obt:idExpediente>T123654</obt:idExpediente>
<obt:primerNombre>yanaka</obt:primerNombre>
<obt:primerApellido>perez</obt:primerApellido>
<obt:segundoApellido>perez</obt:segundoApellido>
<obt:sexo>F</obt:sexo>
<obt:ci>920125848</obt:ci>
<obt:provincia>ok</obt:provincia>
<obt:municipio>yes</obt:municipio>
<obt:area>facultad</obt:area>
<obt:esDocente>false</obt:esDocente>
</obt:Persona>
</obt:Personas>
</soap:Body>
</soap:Envelope>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
xmlns:preg="http://pregrado.uci.cu">
<soap:Header/>
<soap:Body>
<preg:Personas>
<!--Zero or more repetitions:-->
<preg:Persona>
<preg:idExpediente>11111</preg:idExpediente>
<preg:primerNombre>jorge</preg:primerNombre>
<preg:primerApellido>infante</preg:primerApellido>
<preg:segundoApellido>osorio</preg:segundoApellido>
<preg:sexo>M</preg:sexo>
<preg:ci>1221122112211221</preg:ci>
<preg:provincia>rdf</preg:provincia>
<preg:municipio>dsf</preg:municipio>
<preg:area>df</preg:area>
<preg:esDocente>true</preg:esDocente>
</preg:Persona>
<preg:Persona>
<preg:idExpediente>gero et</preg:idExpediente>
<preg:primerNombre>sonoras imperio</preg:primerNombre>
<preg:primerApellido>quae divum incedo</preg:primerApellido>
<preg:segundoApellido>verrantque per auras</preg:segundoApellido>
<preg:sexo>per auras</preg:sexo>
<preg:ci>circum claustra</preg:ci>
<preg:provincia>nimborum in</preg:provincia>
<preg:municipio>foedere certo</preg:municipio>
<preg:area>profundum quippe ferant</preg:area>
<preg:esDocente>false</preg:esDocente>
</preg:Persona>
</preg:Personas>
</soap:Body>
</soap:Envelope>
当我在AS 5.1.0中使用数据服务时,我看到了以下错误:
org.apache.axiom.soap.SOAPProcessingException:第一个元素必须包含本地名称、信封,但找到了faultstring
如果我放置TCPMon,我可以看到以下消息交换:
Incoming message:
POST /mockAssetsSOAP12Binding HTTP/1.1
Content-Encoding: gzip
Content-Type: application/soap+xml; charset=UTF-8
Server: Jetty(6.1.x)
Transfer-Encoding: chunked
Host: 127.0.0.1:8888
Connection: Keep-Alive
124
<?xml version='1.0' encoding='UTF-8'?><soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
xmlns:preg="http://pregrado.uci.cu"><soap:Body>
<obt:ObtenerPersonasPoC
xmlns:obt="http://informatizacion.uci.cu/servicios/assets/ObtenerPersonas"/>
</soap:Body></soap:Envelope>
0
传入消息:
POST/MockAssetsSOAP12绑定HTTP/1.1
内容编码:gzip
内容类型:应用程序/soap+xml;字符集=UTF-8
服务器:Jetty(6.1.x)
传输编码:分块
主持人:127.0.0.1:8888
连接:保持活力
124
0
传出消息:
HTTP/1.1 500 Internal Server Error
Content-Type: text/html; charset=iso-8859-1
Transfer-Encoding: chunked
Server: Jetty(6.1.x)
1a0
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:Body>
<soap:Fault>
<soap:Code>
<soap:Value>Server</soap:Value>
</soap:Code>
<soap:Reason>
<!--1 or more repetitions:-->
<soap:Text xml:lang="en">java.io.IOException: Decompression of response failed</soap:Text>
</soap:Reason>
</soap:Fault>
</soap:Body>
</soap:Envelope>
0
HTTP/1.1500内部服务器错误
内容类型:text/html;字符集=iso-8859-1
传输编码:分块
服务器:Jetty(6.1.x)
1a0
服务器
java.io.IOException:响应解压缩失败
0
这是最后一个序列。
姓名:unir_Personas
<sequence xmlns="http://ws.apache.org/ns/synapse">
<enrich>
<source clone="false" type="body"/>
<target action=" sibling" type="property"
property="listado_estudiantes"/>
</enrich>
<send/>
</sequence>
有什么想法吗
我不知道为什么会出现这个名称空间:
xmlns:preg=在请求中,因为我没有使用
它位于payloadfactory中介中
[2013-04-10 20:17:17,303] INFO - LogMediator To:
http://www.w3.org/2005/08/addressing/anonymous, WSAction: , SOAPAction: ,
MessageID: urn:uuid:26b0c552-d8e6-4285-8814-84c595dae544, Direction:
response, Envelope:
<?xml version='1.0' encoding='utf-8'?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
xmlns:preg="http://pregrado.uci.cu">
<soap:Body>
<obt:ObtenerPersonasPoC
xmlns:obt="http://informatizacion.uci.cu/servicios/assets/ObtenerPersonas"/>
</soap:Body>
</soap:Envelope>
您可能会从端点的响应中得到这一点。您只对body使用有效负载,并且特定的名称空间显示在rootlevel。无论如何,这不是你面临的问题的原因。在中间你提到SOAP12服务。检查名称空间是否正确,如果您的端点接受soap12请求,请将端点格式更改为soap12是,我的端点接受soap12请求,在这种情况下,链接中的第二个有效负载工厂中介始终失败,如果我更改序列顺序,则第一个正常,但第二个不正常。
[2013-04-10 19:49:30,472] ERROR - RelayUtils Error while building Passthrough stream
org.apache.axiom.soap.SOAPProcessingException: Transport level information does not match with SOAP Message namespace URI
at
org.apache.axis2.builder.BuilderUtil.validateSOAPVersion(BuilderUtil.java:77
4)
at
org.apache.axis2.builder.SOAPBuilder.processDocument(SOAPBuilder.java:58)
at
org.apache.synapse.transport.passthru.util.DeferredMessageBuilder.getDocumen
t(DeferredMessageBuilder.java:146)
at
org.apache.synapse.transport.passthru.util.RelayUtils.builldMessage(RelayUti
ls.java:150)
at
org.apache.synapse.transport.passthru.util.RelayUtils.buildMessage(RelayUtil
s.java:91)
at
org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediat
or.java:62)
at
org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.
java:114)
at
org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2Syn
apseEnvironment.java:223)
at
org.apache.synapse.core.axis2.SynapseCallbackReceiver.handleMessage(SynapseC
allbackReceiver.java:443)
at
org.apache.synapse.core.axis2.SynapseCallbackReceiver.receive(SynapseCallbac
kReceiver.java:166)
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
at
org.apache.synapse.transport.passthru.ClientWorker.run(ClientWorker.java:217
)
at
org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerP
ool.java:172)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:11
10)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:6
03)
at java.lang.Thread.run(Thread.java:722)
Incoming message:
POST /mockAssetsSOAP12Binding HTTP/1.1
Content-Encoding: gzip
Content-Type: application/soap+xml; charset=UTF-8
Server: Jetty(6.1.x)
Transfer-Encoding: chunked
Host: 127.0.0.1:8888
Connection: Keep-Alive
124
<?xml version='1.0' encoding='UTF-8'?><soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
xmlns:preg="http://pregrado.uci.cu"><soap:Body>
<obt:ObtenerPersonasPoC
xmlns:obt="http://informatizacion.uci.cu/servicios/assets/ObtenerPersonas"/>
</soap:Body></soap:Envelope>
0
HTTP/1.1 500 Internal Server Error
Content-Type: text/html; charset=iso-8859-1
Transfer-Encoding: chunked
Server: Jetty(6.1.x)
1a0
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:Body>
<soap:Fault>
<soap:Code>
<soap:Value>Server</soap:Value>
</soap:Code>
<soap:Reason>
<!--1 or more repetitions:-->
<soap:Text xml:lang="en">java.io.IOException: Decompression of response failed</soap:Text>
</soap:Reason>
</soap:Fault>
</soap:Body>
</soap:Envelope>
0
<sequence xmlns="http://ws.apache.org/ns/synapse">
<enrich>
<source clone="false" type="body"/>
<target action=" sibling" type="property"
property="listado_estudiantes"/>
</enrich>
<send/>
</sequence>