public Msg sendRequest(URI to, Msg msg) throws TransportException {
try {
routerLock.acquire();
Interceptor interceptor = lookupInterceptorFrom(to);
SimpleInvocation invocation = new SimpleInvocation();
InvocationSupport.putMarshaledValue(invocation, msg.popMarshaledObject());
InvocationSupport.putRemoteURI(invocation, to);
InvocationResult result = interceptor.invoke(invocation);
msg = msg.createMsg();
Object rc = result.getResult();
msg.pushMarshaledObject((MarshalledObject) rc);
return msg;