2013-06-03 2 views
2

Служба прокси-сервера, развернутая на ESB, вызывает другую автономную службу REST. Эта служба возвращает статус HTTP 200 вместе с некоторыми данными в теле ответа. Мой вопрос в том, как я могу получить статус HTTP из ответа. Вот моя конфигурация:Как получить статус HTTP, возвращаемый службой REST в WSO2 ESB?

<proxy name="CQProxy" 
      transports="https http" 
      startOnLoad="true" 
      trace="disable"> 
     <description/> 
     <target> 
     <inSequence> 
      <switch source="get-property('Action')"> 
       <case regex="getTaskTicket"> 
        <sequence key="GetTaskTicket"/> 
       </case> 
       <default/> 
      </switch> 
     </inSequence> 
     <outSequence> 
      <log> 
       <property xmlns:ns="http://org.apache.synapse/xsd" 
         name="Status" 
         expression="get-property('HTTP_SC')"/> 
      </log> 
      <send/> 
     </outSequence> 
     <faultSequence/> 
     </target> 
     <publishWSDL key="gov:/services/cqproxy/CQProxy.wsdl"> 
     <resource location="CQProxy.xsd" key="gov:/services/cqproxy/CQProxy.xsd"/> 
     </publishWSDL> 
    </proxy> 
    <sequence name="GetTaskTicket"> 
... 
     <property name="REST_URL_POSTFIX" 
       value="/16783484?oslc.select=dcterms:title,oslc_cm:status" 
       scope="axis2" 
       type="STRING"/> 
     <property name="HTTP_METHOD" value="GET" scope="axis2" type="STRING"/> 
     <send> 
     <endpoint> 
      <address uri="http://.../simpleQuery" 
        format="rest"/> 
      <property name="OSLC-Core-Version" value="2.0" scope="transport"/> 
      <property name="Accept" value="application/rdf+xml" scope="transport"/> 
     </endpoint> 
     </send> 
    </sequence> 
... 

Я попытался следующий код:

<log> 
<property xmlns:ns="http://org.apache.synapse/xsd" name="Status" expression="get-property('HTTP_SC')"/> 
</log> 

И этот тоже:

<log> 
<property xmlns:ns="http://org.apache.synapse/xsd" name="Status" expression="get-property('axis2', 'HTTP_SC')"/> 
</log> 

Но все они вернулись нуль.

ответ

5

После прочтения WSO2 документации более подробно, я нашел правильный ответ:

<property xmlns:ns="http://org.apache.synapse/xsd" name="Status" expression="$axis2:HTTP_SC"/> 

Это странно, что документально прибудет-свойство («axis2», «HTTP_SC») не работает.

+1

'get-property ('axis2', 'HTTP_SC')' отлично работает для меня. Я использую ESB 4.7.0 – Bee

+1

@Bhathiya: Ваш ответ также верен, но способ, которым Алекс сделал, - лучший способ из-за производительности. –

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