2014-10-21 6 views
1

Я использую wso2esb-4.8.1, Я хочу отправить свое сообщение после этого, хочу, чтобы сделать аудит моего сообщения, и аудит также, когда Я использую callout mediator Url option из используемого URI посредника отправки. Его не работает. образец прокси и последовательностьКак отправить сообщение с помощью Отправить посредник в wso2esb-4.8.1

<proxy xmlns="http://ws.apache.org/ns/synapse" name="Test_Proxy" transports="https http" startOnLoad="true" trace="disable"> 
     <description/> 
     <target> 
      <inSequence onError="FaultSeq"> 
       <property name="FORCE_ERROR_ON_SOAP_FAULT" value="true" scope="default" type="STRING"/> 
       <log> 
       <property xmlns:ns="http://org.apache.synapse/xsd" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" name="ProxyInRequest" 
       expression="/soapenv:Envelope"/> 
       </log> 
       <xquery key="ProxyRequestTransformation"> 
      <variable xmlns:ns="http://org.apache.synapse/xsd" name="Operation" expression="//Operation/text()" type="STRING"/> 
      <variable xmlns:ns="http://org.apache.synapse/xsd" name="ServiceNameSpace" expression="//ServiceNameSpace/text()" type="STRING"/> 
      <variable name="Payload" type="DOCUMENT_ELEMENT"/> 
      <variable xmlns:ns="http://org.apache.synapse/xsd" name="ServiceName" expression="//Service/text()" type="STRING"/> 
     </xquery> 

      <send> 
        <endpoint> 
         <address uri="http://localhost:8081/middleware/services/test1" format="soap11"/> 
        </endpoint> 
       </send> 
      </inSequence> 
      <outSequence onError="FaultSeq"> 
       <property name="FORCE_ERROR_ON_SOAP_FAULT" value="true"/> 
        <property action="set" name="RESPONSE" scope="default" type="STRING" value="true"/> 
       <send/> 
       <sequence key="AuditSeq"/> 
      </outSequence> 
     </target> 
     <publishWSDL key="EaiEnvelope"/> 
</proxy> 

и сходящаяся последовательность, как это

<sequence xmlns="http://ws.apache.org/ns/synapse" name="AuditSeq"> <property name="FORCE_ERROR_ON_SOAP_FAULT" value="true" scope="default" type="STRING"/> 
    <property xmlns:ns="http://org.apache.synapse/xsd" name="RESULT_CODE" expression="get-property('ResultCode')" scope="default" type="STRING"/> 
    <property xmlns:ns="http://org.apache.synapse/xsd" name="RESULT_MESSAGE" expression="get-property('ResultMessage')" scope="default" type="STRING"/> 
    <property xmlns:ns="http://org.apache.synapse/xsd" name="REFERENCE_ID" expression="get-property('ReferenceID')" scope="default" type="STRING"/> 
    <property xmlns:ns="http://org.apache.synapse/xsd" name="FAULT_DETAILS" expression="concat(get-property('ERROR_CODE'),get-property('ERROR_MESSAGE'))" scope="default" type="STRING"/> 
      <payloadFactory media-type="xml"> 
       <format> 
        <open:processRequest xmlns:open="http://www.openuri.org/"> 
         <aud:Auditor xmlns:aud="http://jhm.kkk.fff/Auditor"> 
          <aud:Request> 
           <aud:Operation_Name>processRequest</aud:Operation_Name> 
           <aud:Auditor_InputData> 
            <aud:Result_Code>$1</aud:Result_Code> 
            <aud:Result_Message>$2</aud:Result_Message> 
            <aud:Reference_Id>$3</aud:Reference_Id> 
            </aud:Auditor_InputData> 
          </aud:Request> 
         </aud:Auditor> 
        </open:processRequest> 
       </format> 
       <args> 

        <arg evaluator="xml" expression="get-property('RESULT_CODE')"/> 
        <arg evaluator="xml" expression="get-property('RESULT_MESSAGE')"/> 
        <arg evaluator="xml" expression="get-property('REFERENCE_ID')"/> 
        </args> 
      </payloadFactory> 
      <header name="Action" scope="default" value="http://www.openuri.org/processRequest"/> 
      <send> 
       <endpoint> 
        <address uri="http://localhost:8081/middleware/services/AuditService" format="soap11"/> 
       </endpoint> 
      </send> 
     </sequence> 

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

if i use below properties its working fine 




<callout serviceURL="http:///localhost:8081/middleware/services/AuditService"> 
       <source type="envelope"/> 
       <target key="IsThisResponse"/> 
      </callout> 

Я использовал эти свойства я получаю WSAction и SOAPAction приходящие NULL

< header name="Action" scope="default" value="urn:http://www.openuri.org/processRequest"/> 
      <header action="remove" name="To"/> 
    <property action="set" name="RESPONSE" scope="default" type="STRING" value="true"/> 
<property name="target.endpoint" value="AuditEndpoint"/> 
     <property name="FORCE_SC_ACCEPTED" value="true" scope="axis2"/> 
     <property name="FORCE_ERROR_ON_SOAP_FAULT" value="true"/> 

Заранее спасибо

+0

https://wso2.org/jira/browse/ESBJAVA-3398 пожалуйста см это для получения дополнительной справки – user3595078

ответ

1

Первое, вы должны изменить outSequence в прокси-сервере:

  • вы должны клонировать ответное сообщение с clone me diator
  • в первой мишени, вы посылаете назад réponse клиента с <send/>
  • во второй цели, вы называете AuditSeq с <sequence key="AuditSeq"/>

Второй вещью, я не могу найти OUT_ONLY свойство установлено в true, поэтому ваша служба аудита в http://localhost:8081/middleware/services/AuditService должна отправить вам ответ, и вы должны настроить свой посредник отправки для обработки этого ответа (вы не хотите, чтобы outSeuqence из вашего прокси снова вызывался) => Вы должны изменить ваш AuditSeq, добавляющий xml attribut , принимает посреднику отправки:

<send receive="AuditServiceResponse"> 
    <endpoint> 
    <address uri="http://localhost:8081/middleware/services/AuditService" format="soap11"/> 
    </endpoint> 
</send> 

где AuditServiceResponse последовательность (вы можете войти или уронить ответ или все, что вы хотите)

Итак, вы outSequence Proxy должны стать:

<outSequence onError="FaultSeq"> 
    <property name="FORCE_ERROR_ON_SOAP_FAULT" value="true"/> 
    <clone> 
     <target> 
      <sequence> 
       <send/> 
      </sequence> 
     </target> 
     <target> 
      <sequence> 
       <sequence key="AuditSeq"/> 
      </sequence> 
     </target> 
    </clone> 
</outSequence> 

You» повторной последовательности AuditSeq должен стать:

<sequence xmlns="http://ws.apache.org/ns/synapse" name="AuditSeq"> 
    <property name="FORCE_ERROR_ON_SOAP_FAULT" value="true" scope="default" type="STRING"/> 
    <property name="RESULT_CODE" expression="get-property('ResultCode')" scope="default" type="STRING"/> 
    <property name="RESULT_MESSAGE" expression="get-property('ResultMessage')" scope="default" type="STRING"/> 
    <property name="REFERENCE_ID" expression="get-property('ReferenceID')" scope="default" type="STRING"/> 
    <property name="FAULT_DETAILS" expression="concat(get-property('ERROR_CODE'),get-property('ERROR_MESSAGE'))" scope="default" type="STRING"/> 
    <payloadFactory media-type="xml"> 
     <format> 
      <open:processRequest xmlns:open="http://www.openuri.org/"> 
       <aud:Auditor xmlns:aud="http://jhm.kkk.fff/Auditor"> 
        <aud:Request> 
         <aud:Operation_Name>processRequest</aud:Operation_Name> 
         <aud:Auditor_InputData> 
          <aud:Result_Code>$1</aud:Result_Code> 
          <aud:Result_Message>$2</aud:Result_Message> 
          <aud:Reference_Id>$3</aud:Reference_Id> 
         </aud:Auditor_InputData> 
        </aud:Request> 
       </aud:Auditor> 
      </open:processRequest> 
     </format> 
     <args> 
      <arg evaluator="xml" expression="get-property('RESULT_CODE')"/> 
      <arg evaluator="xml" expression="get-property('RESULT_MESSAGE')"/> 
      <arg evaluator="xml" expression="get-property('REFERENCE_ID')"/> 
     </args> 
    </payloadFactory> 
    <header name="Action" scope="default" value="http://www.openuri.org/processRequest"/> 
    <send receive="AuditServiceResponse"> 
     <endpoint> 
      <address uri="http://localhost:8081/middleware/services/AuditService" format="soap11"/> 
     </endpoint> 
    </send> 
</sequence> 

И вот приходит последовательность образец AuditServiceResponse:

<sequence xmlns="http://ws.apache.org/ns/synapse" name="AuditServiceResponse"> 
    <log level="full"/> 
    <drop/> 
</sequence> 
+0

я использовал клон с клоном я получаю ответ обратно клиенту в соответствии с ур-верой, но служба аудита продолжает работать. Я использовал медиатор передачи и даже несмотря на то, что его вставка неограниченно. Я не могу ее остановить. – user3595078

+0

Я обновил свой ответ: взгляните и проверьте свои определения. Если вы добавляете последовательность «получать» к медиатору «send», используемому для вызова вашего AuditService, его нельзя вызывать неограниченно долго. Если это так, добавьте журналы, чтобы определить, какие последовательности воспроизводятся –

Смежные вопросы