Я реализовал прокси-сервис для кеширования ответа от серверной (остальной) веб-службы. Мне нужно обработать ответ EP, например изменить ContentType на application / xml, поэтому я определил последовательность «OnCacheHit», в конце которой я использую посредник отправки для отправки сообщения обратно клиенту. Но клиент получает пустой ответ (независимо от того, вызываю ли я службу напрямую из своего браузера или из другой прокси-службы).
<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse" name="PS_with_cache"
transports="https http local" startOnLoad="true" trace="disable"><description />
<target>
<inSequence>
<log level="full" category="DEBUG" xmlns="http://ws.apache.org/ns/synapse" />
<cache id="someCache" scope="per-host" collector="false"
hashGenerator="org.wso2.caching.digest.DOMHASHGenerator" timeout="10">
<onCacheHit>
<property name="ContentType" value="application/xml"
scope="axis2" type="STRING" />
<!-- I have to remove the To header, else it points towards PS_with_cache itself,
generating a "Malformed destination EPR" exception -->
<header name='To' action="remove"/>
<!-- logging the full payload of the message shows that
the cache returned whzat i expected -->
<log category="DEBUG" level="full" />
<send/>
</onCacheHit>
<implementation type="memory" maxSize="1000" />
</cache>
<property name="HTTP_METHOD" value="GET" scope="axis2" type="STRING" />
<send>
<endpoint key="Back_end_rest_endpoint" />
</send>
</inSequence>
<outSequence>
<property name="ContentType" value="application/xml" scope="axis2"
type="STRING" />
<cache id="someCache" scope="per-host" collector="true" />
<send />
</outSequence>
</target>
</proxy>
Он отлично работает, пока ответ не находится в кеше. Полный журнал внутри последовательности onCacheHit показывает, что кеш возвращает ожидаемый ответ. Так что проблема заключается в последующей "отправке".
Я предполагал, что сообщение было неправильно обработано как запрос, а не как ответ, поэтому я попытался изменить свойство synapse.isresponse, но это ничего не изменило.
Я действительно не могу понять, что здесь происходит, спасибо, что ответили ...