проблема в пользовательской PayloadFactory в wso2esb

Я использую wso2esb 4.7.0 и wso2dss 3.1.0. На самом деле, в соответствии с моей конфигурацией прокси, он работает нормально. Даже он отображает сообщение об успешном завершении на стороне сервера, но не на стороне клиента, и в этом проблема. последняя конфигурация последовательности выглядит так:

<sequence xmlns="http://ws.apache.org/ns/synapse" name="Group_Seq3" onError="fault">
<property name="messageType" value="application/json" scope="axis2"/>
       <property name="FORCE_ERROR_ON_SOAP_FAULT" value="true"/>
       <property xmlns:ns="http://org.apache.synapse/xsd" xmlns:s="http://ws.wso2.org/dataservice" name="userid" expression="//s:userid/text()" scope="default" type="STRING"/>
       <log level="custom">
          <property name="service called" value="Group_seq3"/>
          <property xmlns:ns="http://org.apache.synapse/xsd" name="userid" expression="get-property('userid')"/>
          <property xmlns:ns="http://org.apache.synapse/xsd" name="usergroupid" expression="get-property('usergroupid')"/>
       </log>
       <property name="FORCE_ERROR_ON_SOAP_FAULT" value="true" scope="default" type="STRING"/>
       <payloadFactory media-type="xml">
          <format>
             <p:Capp_insert_into_musergroupdetails_op xmlns:p="http://ws.wso2.org/dataservice">
                <p:usergroupid>$1</p:usergroupid>
                <p:userid>$2</p:userid>
             </p:Capp_insert_into_musergroupdetails_op>
          </format>
          <args>
             <arg xmlns:ns="http://org.apache.synapse/xsd" expression="get-property('usergroupid')" evaluator="xml"/>
             <arg xmlns:ns="http://org.apache.synapse/xsd" expression="get-property('userid')" evaluator="xml"/>
          </args>
       </payloadFactory>
       <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"/>
       <send receive="Group_Seq4">
          <endpoint>
             <address uri="http://localhost:9764/services/Capp_GroupDataService/" format="soap11"/>
          </endpoint>
       </send>
    </sequence>

а Group_Seq4 — это последовательность, в которой я написал пользовательскую конфигурацию полезной нагрузки для правильного ответа, например:

   <sequence xmlns="http://ws.apache.org/ns/synapse" name="Group_seq4" onError="fault">
   <property name="messageType" value="application/json" scope="axis2"/>
   <property name="FORCE_ERROR_ON_SOAP_FAULT" value="true"/>
   <log level="full"/>
   <payloadFactory>
      <format>
         <ResponseJSON xmlns="">
            <Body>
               <Datalist>
                  <Data>Successfully Rows inserted</Data>
               </Datalist>
            </Body>
            <Status>200</Status>
         </ResponseJSON>
      </format>
   </payloadFactory>
   <log level="custom">
      <property name="Capp_UserGroupDetail_Seq" value="just before send"/>
   </log>
   <property name="messageType" value="application/json" scope="axis2"/>
   <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"/>
   <send/>
</sequence>

На стороне сервера показывает:

[2014-07-07 17:16:07,836]  INFO - LogMediator service called = CappGroupService, requester userid = 395885751788635281, username = intelligynt.com/tusar|395885751788635281, password = 123456, contactname = sps14youtility14, phonenumber = 47390686756, userdetails = <usergroupdetails><contactname>sps14</contactname><phonenumber>4739068</phonenumber></usergroupdetails><usergroupdetails><contactname>youtility14</contactname><phonenumber>6756</phonenumber></usergroupdetails>
[2014-07-07 17:16:07,853]  INFO - LogMediator service called = Group_seq1, userid1 = 395885751788635281, userdetails = <usergroupdetails><contactname>sps14</contactname><phonenumber>4739068</phonenumber></usergroupdetails><usergroupdetails><contactname>youtility14</contactname><phonenumber>6756</phonenumber></usergroupdetails>
[2014-07-07 17:16:07,867]  INFO - LogMediator service called = atest, userid1 = 395885751788635281, usergroupid = 400431610974963490, userdetails = <usergroupdetails><contactname>sps14</contactname><phonenumber>4739068</phonenumber></usergroupdetails><usergroupdetails><contactname>youtility14</contactname><phonenumber>6756</phonenumber></usergroupdetails>
[2014-07-07 17:16:07,868]  INFO - LogMediator service called = atest after payload, userid1 = sps14youtility14
[2014-07-07 17:16:07,870]  INFO - LogMediator service called = test, usergroupid = 400431610974963490, userdetail = <userdetails><usergroupdetails><contactname>sps14</contactname><phonenumber>4739068</phonenumber></usergroupdetails><usergroupdetails><contactname>youtility14</contactname><phonenumber>6756</phonenumber></usergroupdetails></userdetails>
[2014-07-07 17:16:07,880]  INFO - LogMediator service called = Group seq2, usergroupid = 400431610974963490, userdetails = <userdetails><usergroupdetails><contactname>sps14</contactname><phonenumber>4739068</phonenumber></usergroupdetails><usergroupdetails><contactname>youtility14</contactname><phonenumber>6756</phonenumber></usergroupdetails></userdetails>
[2014-07-07 17:16:07,880]  INFO - LogMediator service called = Group seq2, usergroupid = 400431610974963490, userdetails = <userdetails><usergroupdetails><contactname>sps14</contactname><phonenumber>4739068</phonenumber></usergroupdetails><usergroupdetails><contactname>youtility14</contactname><phonenumber>6756</phonenumber></usergroupdetails></userdetails>
[2014-07-07 17:16:07,881]  INFO - LogMediator To: http://www.w3.org/2005/08/addressing/anonymous, WSAction: , SOAPAction: , MessageID: urn:uuid:fef5c93d-a70f-4569-b7fc-a68b8be53c8f, Direction: response, Message = user exist..directly inserting details in musergroupdetail
[2014-07-07 17:16:07,881]  INFO - LogMediator To: http://www.w3.org/2005/08/addressing/anonymous, WSAction: , SOAPAction: , MessageID: urn:uuid:41855f56-eb26-49d4-8eaf-2bc23878e830, Direction: response, Message = user exist..directly inserting details in musergroupdetail
[2014-07-07 17:16:07,884]  INFO - LogMediator CappGroupService = inside outSequence
[2014-07-07 17:16:07,890]  INFO - LogMediator To: http://www.w3.org/2005/08/addressing/anonymous, WSAction: , SOAPAction: , MessageID: urn:uuid:96db545a-00f4-4521-8aca-8c8c9a1b6eb5, Direction: response, Envelope: <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"><soapenv:Body><Fault><faultcode>axis2ns116:Client</faultcode><faultstring>The endpoint reference (EPR) for the Operation not found is http://localhost:9764/services/Capp_GroupDataService/ and the WSA Action = null. If this EPR was previously reachable, please contact the server administrator.</faultstring><detail/></Fault></soapenv:Body></soapenv:Envelope>
[2014-07-07 17:16:07,890]  INFO - LogMediator Capp_UserGroupDetail_Seq = just before send
[2014-07-07 17:16:07,892]  INFO - LogMediator To: http://www.w3.org/2005/08/addressing/anonymous, WSAction: , SOAPAction: , MessageID: urn:uuid:f0309d34-1ad1-440b-bba9-2a77893909e2, Direction: response, Envelope: <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><axis2ns117:REQUEST_STATUS xmlns:axis2ns117="http://ws.wso2.org/dataservice">SUCCESSFUL</axis2ns117:REQUEST_STATUS></soapenv:Body></soapenv:Envelope>
[2014-07-07 17:16:07,892]  INFO - LogMediator Capp_UserGroupDetail_Seq = just before send

Но на стороне клиента он показывает предыдущий вывод последовательности как:

{"Capp_insert_into_musergroupdetails_op":{"usergroupid":"400423758575175449","userid":"400329480066827979"}}

почему так?? в соответствии с моей конфигурацией моя пользовательская фабрика полезной нагрузки верна ... потому что я использовал ту же конфигурацию раньше, и она работает нормально, их ... тогда почему не должно быть здесь?


person user3129056    schedule 07.07.2014    source источник


Ответы (1)


Не могу проверить это прямо сейчас, но вы не установили тип носителя для фабрики полезной нагрузки:

<payloadFactory media-type="xml">
   .... your xml here ....
</payloadFactory

Вместо этого вы также можете напрямую указать правильное тело JSON с помощью media-type="json".
(см. также http://docs.wso2.com/display/ESB481/PayloadFactory+Mediator)

person kasp3r    schedule 07.07.2014
comment
спасибо kasp3r за ответ..я пробовал с media-type=xml но не работает - person user3129056; 08.07.2014
comment
Удалите свойство RESPONSE=true в Group_seq3. Вы уверены, что вызывается Group_seq3? Я не вижу службу записи журнала под названием = Group_seq3. И ваша внутренняя служба Capp_GroupDataService, кажется, возвращает ошибку, поэтому свойство FORCE_ERROR_ON_SOAP_FAULT принудительно выполняет последовательность ошибок. - person kasp3r; 08.07.2014
comment
На самом деле в Group_seq2 я поместил фильтр..в той части фильтра, которая выполняет Group_seq3, а в противном случае он выполняет Group_seq4..я поместил журнал при выполнении другой части, поэтому Group_seq2 не является их в журнале - person user3129056; 08.07.2014
comment
и еще раз спасибо за ответ .. я пробовал с этими изменениями свойств, но все еще не работает - person user3129056; 08.07.2014