2017-01-30 23 views
2

У меня проблема с wso2 esb. Я написал прокси, и в этом я вызываю конечную точку, чтобы внести некоторые изменения в исходный вход. но журнал перед вызовом и после вызова тот же (он должен быть другим). Похоже, что вызов вообще не работает. Когда я отправляю ответ на внешность, он равен нулю. Может ли кто-нибудь сказать, почему это происходит? (Я проверил свою конечную точку в soupUI)Почему звонок не работает в wso2 esb

это мой прокси:

 <inSequence> 
    <property name="transport.vfs.ReplyFileName" value="GET" scope="transport"/> 
    <property name="OUT_ONLY" value="true" scope="default" type="STRING"/> 
    <smooks config-key="smooks-csv1"> 
     <input type="text"/> 
     <output type="xml"/> 
    </smooks> 
    <iterate continueParent="true" 
       preservePayload="true" 
       attachPath="//csv-set" 
       expression="//csv-set/search" 
       sequential="true"> 
     <target> 
      <sequence> 
       <xslt key="gov:/first.xsl"/> 
       <xslt key="gov:/second.xsl"/> 
       **<log level="full"/> 
       <call blocking="true"> 
       <endpoint> 
        <address uri="MyEndPiont"/> 
       </endpoint> 
       </call> 
       <log level="full"/>** 
      </sequence> 
     </target> 
    </iterate> 
    <respond/> 
    </inSequence> 
    <outSequence> 
    <aggregate> 
     <completeCondition> 
      <messageCount min="0" max="100"/> 
     </completeCondition> 
     <onComplete expression="//Guest"> 
     </onComplete> 
    </aggregate> 
    </outSequence> 

ответ

1

Попробуйте это. Перечень изменений:

  • Убрано respond Посредник.
  • Заменено callsend.
  • Добавлено send в последовательности.

    <inSequence> 
        <property name="transport.vfs.ReplyFileName" value="GET" scope="transport"/> 
        <property name="OUT_ONLY" value="true" scope="default" type="STRING"/> 
        <smooks config-key="smooks-csv1"> 
         <input type="text"/> 
         <output type="xml"/> 
        </smooks> 
        <iterate continueParent="true" 
           preservePayload="true" 
           attachPath="//csv-set" 
           expression="//csv-set/search" 
           sequential="true"> 
         <target> 
          <sequence> 
           <xslt key="gov:/first.xsl"/> 
           <xslt key="gov:/second.xsl"/> 
           <log level="full"/> 
           <send> 
           <endpoint> 
            <address uri="MyEndPiont"/> 
           </endpoint> 
           </send> 
          </sequence> 
         </target> 
        </iterate> 
        </inSequence> 
        <outSequence> 
        <aggregate> 
         <completeCondition> 
          <messageCount min="0" max="100"/> 
         </completeCondition> 
         <onComplete expression="//Guest"> 
         </onComplete> 
        </aggregate> 
        <send /> 
        </outSequence> 
    
+0

К сожалению, с этими изменениями снова я не вижу результат в потере. он дает мне эту ошибку: «Ошибка ERROR - VFSTransportSender при подключении свойств файловой системы VFS. null ERROR - VFSTransportSender Невозможно определить транспортную информацию для отправки сообщения». что мне делать? заранее спасибо –

+0

Можете ли вы попробовать удалить свойство 'OUT_ONLY'? – Bee

+0

с удалением этого я вижу результат. Но это дает мне ошибку, потому что я использую VFS, и это асинхронно. в части отправки я пишу ответ в файл. Это ошибка: «Транспорт VFS не поддерживает синхронные ответы. Пожалуйста, используйте соответствующий шаблон обмена сообщениями« только »(0)» –

0

Попробуйте blocking="false". Обратите внимание: внесение этого изменения не означает, что посредником вызова является asynchonus. Это синхронно независимо от того, является ли блокировка истинным или ложным. Блокировка - это просто деталь реализации.

The Call mediator is used to send messages out of the ESB to an endpoint. You can invoke services either in blocking or non-blocking manner.

When you invoke a service in non-blocking mode, the underlying worker thread returns without waiting for the response. In blocking mode, the underlying worker thread gets blocked and waits for the response after sending the request to the endpoint. Call mediator in blocking mode is very much similar to the Callout mediator.

In both blocking and non-blocking modes, Call mediator behaves in a synchronous manner. Hence, mediation pauses after the service invocation and resumes from the next mediator in the sequence when the response is received. Call mediator allows you to create your configuration independent from the underlying architecture.

Цитируется https://docs.wso2.com/display/ESB500/Call+Mediator

+0

меняю блокированию = «ложь», но нет никаких изменений ... –

+0

включить журналы проводов и посмотреть. http://lakshanigamage.blogspot.com/2015/03/how-to-enable-wire-logs-in-wso2-esbapim.html – Bee

+0

@ Bhathiya большое спасибо. Теперь я вижу желаемый вывод в консоли. но почему в нормальном состоянии я не мог видеть результат? Как сохранить этот результат? –

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