WSO2 ESB示例440失败(JSON / XML代理)

时间:2012-05-23 23:06:35

标签: wso2 wso2esb

wso2esb-4.0.3

我可以执行其他样本。我确实在运行ESB和StockService。看起来JSON转换正在发生,但jsonclient无法处理JSON响应。

ant jsonclient -Daddurl=http://localhost:9000/services/SimpleStockQuoteService -Dtrpurl=http://localhost:8280/services/JSONProxy

产量

[java] org.apache.axis2.AxisFault: com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character '{' (code 123) in prolog; expected '<'
 [java]  at [row,col {unknown-source}]: [1,1]
 [java]     at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)
 [java]     at org.apache.axis2.transport.TransportUtils.createSOAPMessage(TransportUtils.java:123)
 [java]     at org.apache.axis2.transport.TransportUtils.createSOAPMessage(TransportUtils.java:67)
 [java]     at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:354)
 [java]     at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:421)
 [java]     at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
 [java]     at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
 [java]     at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:555)
 [java]     at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:531)
 [java]     at samples.userguide.JSONClient.executeClient(Unknown Source)
 [java]     at samples.userguide.JSONClient.main(Unknown Source)

我不是Axis2客户专家。任何人都有办法让这个例子有效吗?

从示例中发送带有JSON有效负载的curl也会产生错误:

curl -X POST -H 'Content-type: application/json' -d '{"getQuote":{"request":{"symbol":"IBM"}}}' http://localhost:8280/services/JSONProxy

ESB控制台:

[2012-05-23 16:28:24,079]  INFO - LogMediator To: /services/JSONProxy, MessageID: urn:uuid:fa1489c7-e12e-4a59-8abb-663a35115cce, Direction: request, Envelope: <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><getQuote><request><symbol>IBM</symbol></request></getQuote></soapenv:Body></soapenv:Envelope>
[2012-05-23 16:28:24,087]  WARN - ClientHandler Received an internal server error : Internal Server Error For : 127.0.0.1:9000 For Request : Axis2Request [Message ID : urn:uuid:ce8b27f3-5aea-461c-a1f5-e7d0c6bbac4d] [Status Completed : true] [Status SendingCompleted : true]
[2012-05-23 16:28:24,089]  INFO - LogMediator To: http://www.w3.org/2005/08/addressing/anonymous, WSAction: , SOAPAction: , MessageID: urn:uuid:ce8b27f3-5aea-461c-a1f5-e7d0c6bbac4d, Direction: response, Envelope: <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><faultstring>com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog
 at [row,col {unknown-source}]: [1,0]</faultstring></soapenv:Body></soapenv:Envelope>

2 个答案:

答案 0 :(得分:3)

当您将消息从json转换为soap11时,请确保将端点格式设置为soap11。您可以通过在synapse配置中设置端点地址来实现:<address uri="http://localhost:9000/services/SimpleStockQuoteService" format="soap11"/>

答案 1 :(得分:1)

我在Tomcat上部署了CXF-JAX-WS Web服务。我得到的问题是当JSON Post请求转换为XML for SOAP时,它不会获得命名空间(只是一个普通的xml)。我尝试设置format =“soap11”但没有成功。 但是,当从Webservice获取某些数据时,从XML转换 - &gt; JSON非常完美。 我参考了WSO2 ESB的样本440。 任何帮助将不胜感激。