WSO2 ESB CONDITIONAL Router Для блокировки ошибки запроса?

я на WSO2 ESB 4.8.1. Мне нужно заблокировать какой-то запрос, если их путь соответствует регулярному выражению. Итак, я реализовал этот прокси и эти последовательности:

В моем прокси:

  <target>
  <inSequence>        
     <sequence key="MySequence"></sequence>
     <send>
         <endpoint key="epProva"></endpoint>
     </send>
  </inSequence>

Где MySequence:

<sequence xmlns="http://ws.apache.org/ns/synapse" name="MySequence">        
     <conditionalRouter continueAfter="true">
        <conditionalRoute breakRoute="true" asynchronous="true">
           <condition>
              <match type="url" regex=".*/my/path/.*"></match>
           </condition>
           <target sequence="conf:/BannedListMessage"></target>
        </conditionalRoute>
     </conditionalRouter>     
</sequence>

где BannedListMessage:

<sequence xmlns="http://ws.apache.org/ns/synapse">   
   <header name="To" action="remove"></header>
   <property name="HTTP_SC" value="401" scope="axis2"></property>
   <property name="RESPONSE" value="true"></property>
   <property name="NO_ENTITY_BODY" action="remove" scope="axis2"></property>
   <payloadFactory media-type="json">
      <format>
        {"code":"401", "unhautorized."}      
     </format>
  </payloadFactory>
  <property name="messageType" value="application/json" scope="axis2"></property>
   <respond></reposnd> 
</sequence>

Если запрос адресует URL-адрес, соответствующий регулярному выражению внутри условного маршрутизатора, единственное, что должен сделать esb, — это отправить 401 неавторизованное сообщение, не позволяя запросу достичь сервера.

С этой конфигурацией я получаю неправильное поведение. esb отправляет мне ответ 401, НО запрос явно достигает сервера (поэтому я полагаю, что условный маршрутизатор не мешает потоку запросов достигать конечной точки отправки в epProva).

Кто-то предложил мне использовать условный маршрутизатор, чтобы получить поведение блокировки, подобное тому, которое я хочу.

Вместо этого, если я заменю MySequence, как в приведенном ниже коде, используя посредник переключателя, я получу правильное поведение:

<sequence xmlns="http://ws.apache.org/ns/synapse">  
     <switch xmlns:m0="http://services.samples" source="get-property('requestURL')">
        <case regex=".*/aggregato/C/sysadmin/mostra_contenuto/.*">
           <sequence key="conf:/BannedListMessage"></sequence>
        </case>
     </switch>
</sequence>

Итак, вопрос:

  • Я неправильно использую условный маршрутизатор?

  • Это баг условного роутера?


person Alex    schedule 30.01.2015    source источник


Ответы (1)


Может быть опечатка в вашем BannedListMessage

‹ ответить > ‹ /ответить >

Использование посредника ответа

‹ ответить / >

Надеюсь, это поможет С уважением

person Pablo Villanueva    schedule 30.01.2015
comment
я пишу правильный тег ‹respond/›... редактор wso2 меняет его после того, как я сохраняю последовательность в ‹respond› ‹/respond› - person Alex; 30.01.2015