Сервисный прокси-сервер WSO2 ESB не работает согласно конфигурации

Мы используем последнюю версию WSO2 ESB(4.6.0). Мы изучаем возможность внедрения Proxy Service в веб-службу. Детали следующие:

Пользовательский прокси-сервер веб-службы Axis2 настраивается с использованием WSO2. Конфигурация выглядит следующим образом: Прокси-XML: эта конфигурация синапса была сгенерирована с использованием интерфейса WSO2.

 <proxy xmlns="http://ws.apache.org/ns/synapse" name="StockQuoteProxy" transports="https,http" statistics="enable" trace="enable" startOnLoad="true">
   <target faultSequence="myFaultHandler">
      <inSequence>
         <property name="DISABLE_CHUNKING" value="true" scope="axis2" type="STRING"/>
      </inSequence>
      <outSequence>
         <send/>
      </outSequence>
      <endpoint>
         <address uri="http://localhost:9000/services/SimpleStockQuoteService">
            <timeout>
               <duration>3000</duration>
               <responseAction>fault</responseAction>
            </timeout>
            <suspendOnFailure>
               <errorCodes>101504,101505</errorCodes>
               <initialDuration>1000</initialDuration>
               <progressionFactor>2.0</progressionFactor>
               <maximumDuration>10000</maximumDuration>
            </suspendOnFailure>
            <markForSuspension>
               <errorCodes>101507,101508,101505,101506,101509,101500,101510,101001,101000,101503,101504,101501</errorCodes>
               <retriesBeforeSuspension>1</retriesBeforeSuspension>
               <retryDelay>1</retryDelay>
            </markForSuspension>
         </address>
      </endpoint>
   </target>
   <publishWSDL uri="http:// localhost:9000/services/SimpleStockQuoteService?wsdl"/>
   <description></description>
</proxy>

Последовательность myFaultHandler XML:

<sequence xmlns="http://ws.apache.org/ns/synapse" name="myFaultHandler" trace="enable">
   <header name="To" action="remove"/>
   <property name="RESPONSE" value="true"/>
   <property name="NO_ENTITY_BODY" action="remove" scope="axis2"/>
   <log level="custom">
      <property xmlns:ns="http://org.apache.synapse/xsd" name="error-message" expression="get-property('ERROR_MESSAGE')"/>
      <property xmlns:ns="http://org.apache.synapse/xsd" name="error-code" expression="get-property('ERROR_CODE')"/>
      <property xmlns:ns="http://org.apache.synapse/xsd" name="error-detail" expression="get-property('ERROR_DETAIL')"/>
      <property xmlns:ns="http://org.apache.synapse/xsd" name="error-exception" expression="get-property('ERROR_EXCEPTION')"/>
   </log>
   <makefault version="soap12">
      <code xmlns:soap12Env="http://www.w3.org/2003/05/soap-envelope" value="soap12Env:Receiver"/>
      <reason value="Webservice is either down or currently not reachable."/>
      <node></node>
      <role></role>
   </makefault>
   <send/>
</sequence>

Когда веб-служба не работает, эта конфигурация выдает ошибку мыла, как определено.

Когда веб-сервису требуется время для отправки ответа обратно, как определено в конфигурации прокси-сервера XML, время ожидания должно истечь через 3 секунды:

       <timeout>
           <duration>3000</duration>
           <responseAction>fault</responseAction>
        </timeout>

Даже после истечения времени ожидания прокси-сервер все еще ожидает ответа, а не возвращает ошибку обратно.

При анализе файла журнала мы попытались изменить следующие параметры в указанном ниже файле свойств, но поток все еще застрял в ожидании ответа.

**synapse.properties**  
synapse.global_timeout_interval=3000  
synapse.connection.read_timeout=3000  
synapse.connection.connect_timeout=3000  
synapse.timeout_handler_interval=3000  

**nhttp.properties**  
http.socket.timeout=5000  

Это в конечном итоге истекает и выдает исключение сокета.

Согласно спецификации ( http://wso2.com/library/articles/wso2-enterprise-service-bus-endpoint-error-handling) после истечения времени ожидания конечная точка должна перейти в состояние времени ожидания, но в этом случае конечная точка все еще в активном состоянии и не является ни ошибочным, ни отбрасывающим сообщением. Иногда он выдает код ошибки 504. Но это действие не соответствует.

Сообщите об изменениях, требуемых для данного прокси-сервера, чтобы прервать / отклонить сообщение, если последний веб-сервис работает очень медленно.

1 ответ

Если вы используете транспорт http из axis2.xml (который находится в каталоге CARBON_HOME/repository/conf/axis2), вы можете исправить это, настроив параметры времени ожидания в этом конкретном отправителе транспорта, добавив параметры. Например,

<parameter name="SO_TIMEOUT">3000</parameter>
<parameter name="CONNECTION_TIMEOUT">3000</parameter>

С уважением, Асанка Санджива.

Другие вопросы по тегам