private boolean processInOptionalOut(PostMethod method, MessageExchange exchange, Context context, boolean txSync, boolean close) throws Exception { if (method.getResponseContentLength() == 0) { exchange.setStatus(ExchangeStatus.DONE); channel.send(exchange); } else { NormalizedMessage msg = exchange.createMessage(); SoapReader reader = soapHelper.getSoapMarshaler().createReader(); SoapMessage soapMessage = reader.read(method.getResponseBodyAsStream(), method.getResponseHeader(HEADER_CONTENT_TYPE).getValue()); context.setOutMessage(soapMessage); soapHelper.onAnswer(context); if (getConfiguration().isWantHeadersFromHttpIntoExchange()) { msg.setProperty(JbiConstants.PROTOCOL_HEADERS, getHeaders(method)); } soapHelper.getJBIMarshaler().toNMS(msg, soapMessage); ((InOptionalOut) exchange).setOutMessage(msg); if (txSync) { channel.sendSync(exchange); } else { methods.put(exchange.getExchangeId(), method); channel.send(exchange); close = false; } } return close; }