Не удалось отправить ответ клиенту с помощью 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, хотя оба имеют одинаковые конфигурации.

0 ответов

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