我正在使用wso2esb4.7.0和ActiveMQ5.8.0 http://docs.wso2.org/display/ESB470/ESB+as+a+JMS+Producer和http://docs.wso2.org/display/ESB470/ESB+as+a+JMS+Consumer 根据我已经完成的文档,我的消息正在传递到queue.Even存储也很好。虽然将消息传入队列Wso2esb会产生类似格式的问题
ERROR - JMSMessageReceiver Unknown error processing message
org.apache.axiom.om.OMException: com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character '{' (code 123) in prolog; expected '<'
at [row,col {unknown-source}]: [1,1]
为什么发生这种情况有任何消息格式问题我传递的样本json就像
一样curl -v -H "Accept: application/json" -H "Content-Type:application/json" -H "ModifiedOn:0" -H "username:vikaash|21405735755158656" -H "password:gbin" -d '{"name":"youtility tech","mail":"faisal.shaik@youtility.in"}' http://youtility2-desktop:8282/services/JmsStore
我们如何向客户发送回复
http://stackoverflow.com/questions/18440789/how-to-give-a-response-to-client-using-wso2esb-jmsqueue
答案 0 :(得分:1)
原因是,如果您没有专门配置JMS代理以接受特定消息格式的消息,它将始终将消息视为text / xml格式。
因此,当您以application / json格式发送消息时,您将在构建消息时收到此异常。因此,如果要从JMS队列接受json格式的消息,则必须在代理服务配置中定义“transport.jms.ContentType”参数,如下所示。
<parameter name="transport.jms.ContentType">
<rules>
<jmsProperty>contentType</jmsProperty>
<default>application/json</default>
</rules>
</parameter>
以下是示例代理配置。
<proxy name="StockQuoteProxy" transports="jms">
<target>
<inSequence>
<property action="set" name="OUT_ONLY" value="true"/>
</inSequence>
<endpoint>
<address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
</endpoint>
<outSequence>
<send/>
</outSequence>
</target>
<publishWSDL uri="file:repository/samples/resources/proxy/sample_proxy_1.wsdl"/>
<parameter name="transport.jms.ContentType">
<rules>
<jmsProperty>contentType</jmsProperty>
<default>application/json</default>
</rules>
</parameter>
</proxy>