} catch (JBIException e) {
} catch (XFireFault e) { throw e; } catch (Exception e) {
    public Source invokeInOut(Source source, MessageContext context) throws XFireFault {        if (source == null) {             throw new XFireFault("Invalid source.", XFireFault.SENDER);        }        try {        	if (soapAction != null) {        		XFireServletController.getResponse().setHeader("SOAPAction", soapAction);        	}            DeliveryChannel channel = getDeliveryChannel();            MessageExchangeFactory factory = channel.createExchangeFactory();            InOut exchange = factory.createInOutExchange();            populateExchange(exchange, source, context);            boolean result = channel.sendSync(exchange);            if (!result) {                throw new XFireFault("Error sending exchange", XFireFault.SENDER);            }            if (exchange.getStatus() == ExchangeStatus.ERROR) {                Exception e = exchange.getError();                exchange.setStatus(ExchangeStatus.DONE);                channel.send(exchange);                if (e == null) {                    throw new XFireFault("Received error", XFireFault.SENDER);                } else {                    throw new XFireFault(e, XFireFault.SENDER);                }            }            NormalizedMessage outMessage = exchange.getOutMessage();            if (outMessage == null) {                exchange.setError(new Exception("Expected an out message"));                channel.sendSync(exchange);                throw new XFireFault("No response", XFireFault.SENDER);            }                                Source src = exchange.getOutMessage().getContent();            exchange.setStatus(ExchangeStatus.DONE);            channel.send(exchange);            return src;        } catch (JBIException e) {            throw new XFireFault(e);        }    }