在WSO2 ESB中执行项目时发生SOAPProcessingException

在WSO2 ESB中执行项目时发生SOAPProcessingException,wso2,wso2esb,mediator,Wso2,Wso2esb,Mediator,我使用了WSO2 ESB 5.0。我使用了两个soap端点来获得响应。下面提到代理服务代码 <?xml version="1.0" encoding="UTF-8"?> <inSequence xmlns="http://ws.apache.org/ns/synapse"> <log/> <property expression="//sam:getCertificateID/sam:vehicleNumber" nam

我使用了WSO2 ESB 5.0。我使用了两个soap端点来获得响应。下面提到代理服务代码

 <?xml version="1.0" encoding="UTF-8"?>
<inSequence xmlns="http://ws.apache.org/ns/synapse">
    <log/>
    <property expression="//sam:getCertificateID/sam:vehicleNumber"
        name="getVehicleNo" scope="default" type="STRING" xmlns:sam="http://sample.esb.org"/>
    <log>
        <property expression="get-property('default','getVehicleNo')" name="VehicleNo"/>
    </log>
    <call>
        <endpoint>
            <wsdl port="EmissionTestServiceHttpSoap11Endpoint"
                service="EmissionTestService" uri="http://172.17.0.1:9763/services/EmissionTestService?wsdl"/>
        </endpoint>
    </call>
    <property expression="//ns:getCertificateIDResponse/ns:return"
        name="getCertificateIDResponse" scope="default" type="STRING" xmlns:ns="http://sample.esb.org"/>
    <log>
        <property
            expression="get-property('default','getCertificateIDResponse')" name="CertificateID"/>
    </log>
    <payloadFactory media-type="xml">
        <format>
            <soapenv:Envelope xmlns:sam="http://sample.esb.org" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
                <soapenv:Header/>
                <soapenv:Body>
                    <sam:getPolicyID>
                        <sam:vehicleNumber>$1</sam:vehicleNumber>
                    </sam:getPolicyID>
                </soapenv:Body>
            </soapenv:Envelope>
        </format>
        <args>
            <arg evaluator="xml" expression="get-property('default','getVehicleNo')"/>
        </args>
    </payloadFactory>
    <log/>
    <property name="messageType" scope="axis2" type="STRING" value="application/soap+xml"/>
    <call>
        <endpoint>
            <wsdl port="InsuranceServiceHttpSoap11Endpoint"
                service="InsuranceService" uri="http://172.17.0.1:9763/services/InsuranceService?wsdl"/>
        </endpoint>
    </call>
    <property expression="//ns:getPolicyIDResponse/ns:return"
        name="getPolicyIDResponse" scope="default" type="STRING" xmlns:ns="http://sample.esb.org"/>
    <log>
        <property
            expression="get-property('default','getPolicyIDResponse')" name="PolicyID"/>
    </log>
</inSequence>

$1
第一个端点工作正常,并给出了特定的日志消息。但在调用第二个端点时,会出现以下错误消息

Caused by: org.apache.axiom.soap.SOAPProcessingException: First Element must contain the local name, Envelope , but found faultstring
    at org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.constructNode(StAXSOAPModelBuilder.java:305)
    at org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.createOMElement(StAXSOAPModelBuilder.java:252)
    at org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.createNextOMElement(StAXSOAPModelBuilder.java:234)
    at org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:249)
    at org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.getSOAPEnvelope(StAXSOAPModelBuilder.java:204)
    at org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.<init>(StAXSOAPModelBuilder.java:154)
    at org.apache.axiom.om.impl.AbstractOMMetaFactory.createStAXSOAPModelBuilder(AbstractOMMetaFactory.java:73)
    at org.apache.axiom.om.impl.AbstractOMMetaFactory.createSOAPModelBuilder(AbstractOMMetaFactory.java:79)
    at org.apache.axiom.om.OMXMLBuilderFactory.createSOAPModelBuilder(OMXMLBuilderFactory.java:196)
    at org.apache.axis2.builder.SOAPBuilder.processDocument(SOAPBuilder.java:65)
    at org.apache.synapse.transport.passthru.util.DeferredMessageBuilder.getDocument(DeferredMessageBuilder.java:148)
    at org.apache.synapse.transport.passthru.util.RelayUtils.builldMessage(RelayUtils.java:137)
    ... 14 more
由以下原因引起:org.apache.axiom.soap.SOAPProcessingException:第一个元素必须包含本地名称、信封,但找到了faultstring
位于org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.constructNode(StAXSOAPModelBuilder.java:305)
位于org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.createOmeElement(StAXSOAPModelBuilder.java:252)
位于org.apache.axiom.soap.impl.builder.statxsoapmodelbuilder.createNextOMElement(statxsoapmodelbuilder.java:234)
位于org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:249)
位于org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.getSOAPEnvelope(StAXSOAPModelBuilder.java:204)
位于org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder(StAXSOAPModelBuilder.java:154)
位于org.apache.axiom.om.impl.AbstractOMMetaFactory.createStAXSOAPModelBuilder(AbstractOMMetaFactory.java:73)
位于org.apache.axiom.om.impl.AbstractOMMetaFactory.createSOAPModelBuilder(AbstractOMMetaFactory.java:79)
在org.apache.axiom.om.OMXMLBuilderFactory.createSOAPModelBuilder(OMXMLBuilderFactory.java:196)上
位于org.apache.axis2.builder.SOAPBuilder.processDocument(SOAPBuilder.java:65)
位于org.apache.synapse.transport.passthru.util.DeferredMessageBuilder.getDocument(DeferredMessageBuilder.java:148)
位于org.apache.synapse.transport.passthru.util.RelayUtils.builldMessage(RelayUtils.java:137)
... 14多

你能帮我解决这个问题吗。非常感谢您提供的任何帮助或解决方法。

您的端点不会返回soap信封。如果将“configure->logging->apache.synapse.tranport.http.wire”设置为“debug”,则可以看到发生了什么

因为端点没有返回SOAP,但很可能是普通的旧XML,所以您可以尝试设置

<property name="messageType" value="application/xml" scope="axis2"/>
<property name="ContentType" value="application/xml" scope="axis2"/>


发送消息之前。

您的端点没有返回soap信封。如果将“configure->logging->apache.synapse.tranport.http.wire”设置为“debug”,则可以看到发生了什么

因为端点没有返回SOAP,但很可能是普通的旧XML,所以您可以尝试设置

<property name="messageType" value="application/xml" scope="axis2"/>
<property name="ContentType" value="application/xml" scope="axis2"/>

在发送消息之前