OutSecuence中的prolog异常中不允许使用WSO2 ESB内容

时间:2014-07-31 07:38:30

标签: web-services xslt soap wso2 wso2esb

我正在使用soap webservice开发一个代理服务,该服务执行soap to rest转换,消息被发送到一个servlet,它响应平面格式的字符串(不是xml),只是像

这样的字符串。
 OIUW|ECHNOWE|RFHQWIUE|FBPQW|EFHAO|IEFH

我正在使用SOAP UI调用,我得到了这个响应,现在我希望以“SOAP格式”接收它,将消息包装成soap:body,我尝试使用XSLT和PayloadFactory Mediator ,但是一旦我使用它们中的任何一个(甚至什么也不做)我都会得到一个

[2014-07-31 09:30:41,847] ERROR - RelayUtils Error while building Passthrough stream
org.apache.axiom.om.OMException: javax.xml.stream.XMLStreamException: ParseError at     [row,col]:[1,1]
Message: Content is not allowed in prolog.

我做错了什么?如何在没有此异常的情况下实现消息转换?

谢谢!

更新:Ratha要求的我的代理

<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
   name="SCL3"
   transports="http"
   startOnLoad="true"
   trace="disable">
<description/>
<target>
  <inSequence>
     <log level="custom">
        <property name="MyTrace" value="--- REQUEST ---"/>
     </log>
     <log level="full"/>
     <property name="REST_URL_POSTFIX"
               value="x4?msg=x4|0003|0000000021|0|0|0400002081020224849"
               scope="axis2"
               type="STRING"/>
     <property name="HTTP_METHOD" value="GET" scope="axis2" type="STRING"/>
     <property name="SOAPAction" scope="default" action="remove"/>
     <header name="Action" scope="default" action="remove"/>
     <send>
        <endpoint>
           <address uri="http://localhost:8087/X4" format="pox"/>
        </endpoint>
     </send>
  </inSequence>
  <outSequence>
     <log level="custom">
        <property name="MyTrace" value="--- RESPONSE ---"/>
     </log>
     <property name="ContentType"
               value="application/soap+xml"
               scope="transport"
               type="STRING"/>
     <property name="messageType"
               value="application/soap+xml"
               scope="transport"
               type="STRING"/>
     <payloadFactory media-type="xml">
        <format>
           <a xmlns="">$1</a>
        </format>
        <args>
           <arg value="my value"/>
        </args>
     </payloadFactory>
     <send/>
  </outSequence>
  </target>
  <publishWSDL uri="file:/C:/wso2/wso2esb-4.8.1/repository/workspaces/myproject/SCL3.wsdl"/>
</proxy>

2 个答案:

答案 0 :(得分:2)

我已经看到我的servlet将内容类型设置为&#34; text / xml&#34;而不是&#34; text / plain&#34;,我已将其更改为&#34; text / plain&#34;现在一切都很好。

因此我推断出错误信息

  

&#34; Prolog&#34;

中不允许使用内容

实际上意味着

  

&#34; 意外内容类型&#34;

答案 1 :(得分:0)

如果您有以下序列配置,那么您的日志会打印出来吗?

<outSequence>
     <log level="full">
        <property name="MyTrace" value="--- RESPONSE ---"/>
     </log>


     <send/>
  </outSequence>