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(method, args);
Exchange exchange = getEndpoint().createExchange();
exchange.getIn().setBody(invocation);
try {
log.debug("Invoking {} with args {}", method, args);
getProcessor().process(exchange);