public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
if (!isStarted()) {
throw new IllegalStateException("The endpoint is not active: " + getEndpoint().getEndpointUri());
}
BeanInvocation invocation = new BeanInvocation(proxy, method, args);
BeanExchange exchange = getEndpoint().createExchange();
exchange.setInvocation(invocation);
getProcessor().process(exchange);
Throwable fault = exchange.getException();
if (fault != null) {