public Result invoke(Invocation inv) throws RpcException {
		if (destroyed) {
			throw new RpcException("Rpc invoker for service " + this + " is DESTROYED, can not be invoked any more!");
		}
		RpcInvocation invocation = (RpcInvocation) inv;
		invocation.setInvoker(this);
		if (attachment != null && attachment.size() > 0) {
			invocation.addAttachmentsIfAbsent(attachment);
		}
		/*
		Map<String, String> context = RpcContext.getContext().getAttachments();
		if (context != null) {
			invocation.addAttachmentsIfAbsent(context);
		}
		if (getUrl().getMethodParameter(invocation.getMethodName(), Constants.ASYNC_KEY, false)) {
			invocation.setAttachment(Constants.ASYNC_KEY, Boolean.TRUE.toString());
		}
		RpcUtils.attachInvocationIdIfAsync(getUrl(), invocation);
		*/

		// 实际的执行，封装异常
		try {
			return doInvoke(invocation);
		} catch (InvocationTargetException e) { // biz exception
			Throwable te = e.getTargetException();
			if (te == null) {
				return new RpcResult(e);
			} else {
				if (te instanceof RpcException) {
					((RpcException) te).setCode(RpcException.BIZ_EXCEPTION);
				}
				return new RpcResult(te);
			}
		} catch (RpcException e) {
			if (e.isBiz()) {
				return new RpcResult(e);
			} else {
				throw e;
			}
		} catch (Throwable e) {
			return new RpcResult(e);
		}
	}