0

我的 wso2 代理服务中有一个自定义中介,它将传入的 xml 转换为另一种格式,然后它被代理转发到 jms 队列。但是 xml 格式不正确。在控制台和队列中显示如下:

    <?xml version='1.0' encoding='utf-8'?>
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
        <soapenv:Body>
            <soapenv:Envelope xmlns:ws="http://isova.wipro.com/">


                <arg0>&lt;Prescription xmlns="http://hl7.org/fhir">&#xd;
                    &lt;identifier>&#xd;
                    &lt;id value="A0001"/>&#xd;
                    &lt;/identifier>&#xd;
                    &lt;status value="active"/>&#xd;
                    &lt;patient>&#xd;
                    &lt;type value="Patient"/>&#xd;
                    &lt;url value="Bhavani"/>&#xd;
                    &lt;/patient>&#xd;
                    &lt;prescriber>&#xd;
                    &lt;type value="Provider"/>&#xd;
                    &lt;url value="Dr.Mathews"/>&#xd;
                    &lt;/prescriber>&#xd;
                    &lt;medicine>&#xd;
                    &lt;identification>&#xd;
                    &lt;text value="Zintac"/>&#xd;
                    &lt;/identification>&#xd;
                    &lt;/medicine>&#xd;
                    &lt;/Prescription></arg0>
            </soapenv:Envelope>
        </soapenv:Body>
    </soapenv:Envelope>

我的代理服务:

    <proxy xmlns="http://ws.apache.org/ns/synapse" name="risresult"
        transports="https,http,jms" statistics="disable" trace="disable"
        startOnLoad="true">
        <target>
            <inSequence>
                <property name="ContentType" value="text/plain" scope="default"
                    type="STRING" />
                <class name="com.test.guru.HL7RISPrescription" />
                <property name="RESPONSE" value="true" />
                <header name="To" action="remove" />
                <send>
                    <endpoint>
                        <address
                            uri="jms:/prescription?

    transport.jms.ConnectionFactoryJNDIName
    =QueueConnectionFactory&amp;java.naming.
    factory.initial=org.apache.activemq.jndi.
    ActiveMQInitialContextFactory&amp;java.
    naming.provider.url=tcp://localhost:61616" />
                    </endpoint>
                </send>
            </inSequence>
            <outSequence>
                <drop />
            </outSequence>
            <faultSequence />
        </target>
        <parameter name="transport.jms.ContentType">
            <rules>
                <jmsProperty>contentType</jmsProperty>
                <default>application/xml</default>
            </rules>
        </parameter>
        <description></description>
    </proxy>

这可能是什么原因?问题是因为axis2元素吗?

我的调解员班有这些最后的陈述:

   OMFactory factoryOM   = OMAbstractFactory.getOMFactory();
   OMElement code      = factoryOM.createOMElement("arg0","","");
   code.setText(pdoc.toString());
   axis2Element.addChild(code);
4

2 回答 2

0

这应该完美地工作..

公共类 GetLocationMockMediator 扩展 AbstractMediator {

public boolean mediate(MessageContext context) {        
    StringBuilder xml = new StringBuilder("<result><field1>field1Value</field1></result>");

    InputStream xmlInputStream = new ByteArrayInputStream(xml.toString().getBytes());
    try {
        context.getEnvelope().getBody().addChild(new StAXOMBuilder(xmlInputStream).getDocumentElement());
    } catch (final Exception e) {
        // ignore
    } 

    return true;
}

}

于 2014-06-01T06:28:35.957 回答
0

查看配置,您似乎正在按顺序使用代理。

<property name="ContentType" value="text/plain" scope="default"
                    type="STRING" />

使用它的原因是什么?删除它并尝试。这应该会导致转义的 XML 使其成为文本/纯文本。在您的班级调解员之前和之后使用日志调解员并将其完整记录以观察消息内容,如果还有其他问题也会对您有所帮助。

于 2013-04-29T17:02:12.120 回答