Ошибка в итерации посредника: Axis2Sender Неожиданная ошибка отправки сообщения обратно org.apache.axis2.AxisFault

Я использую wso2esb 4.7.0 и wso2dss 3.0.0. Здесь я создал прокси-сервис и хочу отобразить сообщение с помощью посредника фабрики полезной нагрузки. Моя конфигурация содержит посредник-итератор. Мне нужно вставить массив значений в таблицу, а затем отобразить сообщение типа Rows успешно вставлено в базу данных. Моя конфигурация итерации в непоследовательности выглядит так:

  <iterate continueParent="true"
                  id="Readings"
                  expression="//ReadingsLiteTaildto">
            <target>
               <sequence>
                  <property name="userid" expression="get-property('userid')"/>
                  <property name="usergroupid" expression="get-property('usergroupid')"/>
                  <property name="slno" expression="//slno/text()"/>
                  <property name="type" expression="//type/text()"/>
                  <payloadFactory>
                     <format>
                        <p:Capp_musergroupdetails_insertion_op xmlns:p="http://ws.wso2.org/dataservice">
                           <p:usergroupid>$1</p:usergroupid>
                           <p:slno>$2</p:slno>
                           <p:userid>$3</p:userid>
                           <p:type>$4</p:type>
                        </p:Capp_musergroupdetails_insertion_op>
                     </format>
                     <args>
                        <arg evaluator="xml" expression="get-property('usergroupid')"/>
                        <arg evaluator="xml" expression="get-property('slno')"/>
                        <arg evaluator="xml" expression="get-property('userid')"/>
                        <arg evaluator="xml" expression="get-property('type')"/>
                     </args>
                  </payloadFactory>
                  <property name="FORCE_SC_ACCEPTED" value="true" scope="axis2"/>
                  <property name="messageType" value="application/json" scope="axis2"/>
                  <send receive="Capp_UserGroupDetail_Seq">
                     <endpoint>
                        <address uri="http://192.168.1.23:9764/services/CappMuserDataservice/"/>
                     </endpoint>
                  </send>
               </sequence>
            </target>
         </iterate>

И конфигурация последовательности:

equence xmlns="http://ws.apache.org/ns/synapse" name="Capp_UserGroupDetail_Seq" onError="fault">
   <property name="CONTENT_TYPE" value="application/json" scope="axis2" type="STRING"/>
   <property name="FORCE_ERROR_ON_SOAP_FAULT" value="true"/>
   <property name="HTTP_METHOD" value="POST" scope="axis2" type="STRING"/>
   <property name="RESPONSE" value="true" scope="default" type="STRING"/>
   <property name="NO_ENTITY_BODY" action="remove" scope="axis2"/>
   <property xmlns:ns="http://org.apache.synapse/xsd" xmlns:h="http://ws.wso2.org/dataservice" name="usergroupdetailid" expression="//usergroupdetailid/text()" scope="default" type="STRING"/>
   <log>
      <property xmlns:ns="http://org.apache.synapse/xsd" name="usergroupdetailid" expression="get-property('usergroupdetailid')"/>
      <property xmlns:ns="http://org.apache.synapse/xsd" name="usergroupid" expression="get-property('usergroupid')"/>
      <property xmlns:ns="http://org.apache.synapse/xsd" name="userid" expression="get-property('userid')"/>
   </log>
   <payloadFactory>
      <format>
         <ResponseJSON xmlns="">
            <Body>
               <Datalist>
                  <Data>Successfully Rows inserted</Data>
               </Datalist>
            </Body>
            <Status>200</Status>
         </ResponseJSON>
      </format>
   </payloadFactory>
   <log level="full"/>
   <property name="messageType" value="application/json" scope="axis2"/>
   <send/>
   <property name="FORCE_ERROR_ON_SOAP_FAULT" value="true" scope="default" type="STRING"/>
</sequence>

но это дает ошибку на стороне сервера, например:

INFO - LogMediator To: http://www.w3.org/2005/08/addressing/anonymous, WSAction: , SOAPAction: , MessageID: urn:uuid:be41c3c9-f9c1-4ce9-933e-78b48e215601, Direction: response, usergroupdetailid = 370568479314543786, usergroupid = 370568478945445032, userid = 370568478735729831
[2014-05-27 12:23:25,165]  INFO - LogMediator To: http://www.w3.org/2005/08/addressing/anonymous, WSAction: , SOAPAction: , MessageID: urn:uuid:be41c3c9-f9c1-4ce9-933e-78b48e215601, Direction: response, Envelope: <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"><soapenv:Body><ResponseJSON><Body><Datalist><Data>Successfully Rows inserted</Data></Datalist></Body><Status>200</Status></ResponseJSON></soapenv:Body></soapenv:Envelope>
[2014-05-27 12:23:25,167]  INFO - LogMediator To: http://www.w3.org/2005/08/addressing/anonymous, WSAction: , SOAPAction: , MessageID: urn:uuid:06cf72eb-2aed-483b-81ce-3cbfefd0f511, Direction: response, Envelope: <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"><Body/></soapenv:Envelope>
[2014-05-27 12:23:25,167] ERROR - PassThroughHttpSender Failed to submit the response
java.lang.NullPointerException
    at org.codehaus.jettison.mapped.MappedXMLStreamWriter.writeEndDocument(MappedXMLStreamWriter.java:189)
    at org.apache.axis2.json.AbstractJSONMessageFormatter.writeTo(AbstractJSONMessageFormatter.java:194)
    at org.apache.synapse.transport.passthru.PassThroughHttpSender.submitResponse(PassThroughHttpSender.java:440)
    at org.apache.synapse.transport.passthru.PassThroughHttpSender.invoke(PassThroughHttpSender.java:254)
    at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:442)
    at org.apache.synapse.core.axis2.Axis2Sender.sendBack(Axis2Sender.java:161)
    at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.send(Axis2SynapseEnvironment.java:308)
    at org.apache.synapse.mediators.builtin.SendMediator.mediate(SendMediator.java:92)
    at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:71)
    at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:114)
    at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:239)
    at org.apache.synapse.core.axis2.SynapseCallbackReceiver.handleMessage(SynapseCallbackReceiver.java:443)
    at org.apache.synapse.core.axis2.SynapseCallbackReceiver.receive(SynapseCallbackReceiver.java:166)
    at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
    at org.apache.synapse.transport.passthru.ClientWorker.run(ClientWorker.java:222)
    at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:679)
[2014-05-27 12:23:25,168] ERROR - Axis2Sender Unexpected error sending message back
org.apache.axis2.AxisFault: Failed to submit the response
    at org.apache.synapse.transport.passthru.PassThroughHttpSender.handleException(PassThroughHttpSender.java:501)
    at org.apache.synapse.transport.passthru.PassThroughHttpSender.invoke(PassThroughHttpSender.java:256)
    at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:442)
    at org.apache.synapse.core.axis2.Axis2Sender.sendBack(Axis2Sender.java:161)
    at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.send(Axis2SynapseEnvironment.java:308)
    at org.apache.synapse.mediators.builtin.SendMediator.mediate(SendMediator.java:92)
    at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:71)
    at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:114)
    at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:239)
    at org.apache.synapse.core.axis2.SynapseCallbackReceiver.handleMessage(SynapseCallbackReceiver.java:443)
    at org.apache.synapse.core.axis2.SynapseCallbackReceiver.receive(SynapseCallbackReceiver.java:166)
    at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
    at org.apache.synapse.transport.passthru.ClientWorker.run(ClientWorker.java:222)
    at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:679)
Caused by: java.lang.NullPointerException
    at org.codehaus.jettison.mapped.MappedXMLStreamWriter.writeEndDocument(MappedXMLStreamWriter.java:189)
    at org.apache.axis2.json.AbstractJSONMessageFormatter.writeTo(AbstractJSONMessageFormatter.java:194)
    at org.apache.synapse.transport.passthru.PassThroughHttpSender.submitResponse(PassThroughHttpSender.java:440)
    at org.apache.synapse.transport.passthru.PassThroughHttpSender.invoke(PassThroughHttpSender.java:254)
    ... 15 more
[2014-05-27 12:23:25,169]  INFO - LogMediator To: http://www.w3.org/2005/08/addressing/anonymous, WSAction: , SOAPAction: , MessageID: urn:uuid:ba684be3-b7bc-46bd-9c21-66495061c97d, Direction: response, MESSAGE = Executing default 'fault' sequence, ERROR_CODE = 0, ERROR_MESSAGE = Unexpected error sending message back, Envelope: <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"><Body/></soapenv:Envelope>

Есть ли у них какие-либо проблемы в последовательности или что-то еще? Пожалуйста, дайте мне знать.


person user3129056    schedule 27.05.2014    source источник
comment
Я вижу 3 записи журнала в вашей трассировке (wso2-carbon.log): для последней (идентификатор сообщения urn:uuid:06cf72eb-2aed-483b-81ce-3cbfefd0f511), тело мыла пусто: откуда взялся этот журнал ? разве это не причина NullPointer, когда AbstractJSONMessageFormatter не может найти данные?   -  person Jean-Michel    schedule 27.05.2014
comment
Спасибо, Жан. Является ли посредник журнала причиной NullPointerException?   -  person user3129056    schedule 27.05.2014


Ответы (1)


Исключение NullPointerException вызвано пустым ответом: тело Soap пусто (см. 3-ю запись в журнале), и средство форматирования сообщений, связанное с application/json (org.apache.axis2.json.JSONMessageFormatter), не может его обработать

person Jean-Michel    schedule 27.05.2014