Не удалось отправить ответ клиенту с помощью wso2ei. ОШИБКА {org.apache.synapse.core.axis2.Axis2Sender} - отправитель входящего ответа не найден
Во время вызова входящего интерфейса с использованием wso2-ei ответ от сервера успешно преобразуется XSLT. Но столкнулся с ошибкой при попытке отправить ответ клиенту.
**// Successful XSLT transformation**
TID: [-1234] [] [2018-07-05 11:19:18,954] INFO {org.apache.synapse.mediators.builtin.LogMediator} - guid = 1530769758374, payload name = consumer response, payload value = <jsonObject><DATAAREA><ReturnCode>00</ReturnCode><ErrorString>SUCCESS</ErrorString></DATAAREA></jsonObject> {org.apache.synapse.mediators.builtin.LogMediator}
//Error while sending the data to client
***TID: [-1234] [] [2018-07-05 11:19:18,954] ERROR {org.apache.synapse.core.axis2.Axis2Sender} - Inbound Response Sender not found - Inbound Endpoint may not support sending a response back*** {org.apache.synapse.core.axis2.Axis2Sender}
TID: [-1234] [] [2018-07-05 11:19:18,959] WARN {org.apache.synapse.core.axis2.Axis2Sender} - Trying to send a response to an already responded client request - Rest API Context : /pecesb {org.apache.synapse.core.axis2.Axis2Sender}
TID: [-1] [] [2018-07-05 11:20:18,433] INFO {org.apache.synapse.transport.passthru.SourceHandler} - Writer null when calling informWriterError {org.apache.synapse.transport.passthru.SourceHandler}
TID: [-1] [] [2018-07-05 11:20:18,433] WARN {org.apache.synapse.transport.passthru.SourceHandler} - Connection time out after request is read: http-incoming-53 Socket Timeout : 60000 Remote Address : /10.73.4.66:56963 {org.apache.synapse.transport.passthru.SourceHandler}
При отладке мы нашли сообщение об ошибке в классе: Axis2Sender.java
:
public static void sendBack(org.apache.synapse.MessageContext smc){
try{
.
.
.
.
.
*//below code is getting executed*
if (smc.getProperty(SynapseConstants.IS_INBOUND) != null && (Boolean) smc.getProperty(SynapseConstants.IS_INBOUND)) {
*//Error is thrown as INBOUND_ENDPOINT_RESPONSE_WORKER is not being set*
if (smc.getProperty**(InboundEndpointConstants.INBOUND_ENDPOINT_RESPONSE_WORKER**) != null) {
InboundResponseSender inboundResponseSender =
(InboundResponseSender) smc.getProperty(
InboundEndpointConstants.INBOUND_ENDPOINT_RESPONSE_WORKER);
inboundResponseSender.sendBack(smc);
} else {
String msg = "Inbound Response Sender not found -" +
" Inbound Endpoint may not support sending a response back";
log.error(msg);
throw new SynapseException(msg);
}
} else { // If the request arrives through a conventional transport listener
AxisEngine.send(messageContext);
}
} catch (AxisFault e) {
handleException(getResponseMessage(messageContext), e);
}
}
Требуемый сценарий работает нормально в wso2-esb, но не в wso2-ei, хотя оба имеют одинаковые конфигурации.