Sto eseguendo alcune convalide nel gestore personalizzato e in caso di errore che invia risposta al client dal gestore personalizzato. Tuttavia, il payload originale della richiesta client viene anche restituito al client. Come il corpo può essere svuotato dal messaggio di risposta? Se eseguo il debug di SoapBody sembra essere vuoto, ma in qualche modo il payload originale viene restituito al client.Come sostituire il corpo della risposta in ESSO WSO2 4.8.1 Gestore personalizzato
Ecco la mia funzione per l'invio di un messaggio all'utente.
private void myAuthErrorHandler(MessageContext msgCtx)
{
Axis2MessageContext axis2smc = (Axis2MessageContext) msgCtx;
org.apache.axis2.context.MessageContext axis2MessageCtx = axis2smc.getAxis2MessageContext();
SOAPBody body = msgCtx.getEnvelope().getBody();
// remove the existing payload
for (Iterator itr = body.getChildElements(); itr.hasNext();) {
OMElement child = (OMElement) itr.next();
child.detach();
}
log.error(""+msgCtx.getEnvelope());
axis2MessageCtx.setProperty("HTTP_SC", "403");
axis2MessageCtx.setProperty("NO_ENTITY_BODY", new Boolean("true"));
axis2MessageCtx.setProperty("RESPONSE", "true");
axis2MessageCtx.setTo(null);
Axis2Sender.sendBack(msgCtx);
}
log.error ("" + msgCtx.getEnvelope()); sembra essere vuoto ma il corpo originale (carico utile) viene rinviato al client.
<?xml version="1.0" encoding="utf-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body></soapenv:Body></soapenv:Envelope>
È possibile che si tratti di un errore o perché il corpo originale viene rinviato al client? C'è qualche altro metodo per cancellare il corpo della risposta?
Grazie per qualsiasi aiuto.
Per me ha funzionato l'alternativa al mediatore di script in ESB WSO2 4.8.1. – Chilcano