匯出到遠端入口
private void doexporturlsfor1protocol(protocolconfig protocolconfig, listregistryurls)
// export to remote if the config is not local (export to local only when config is local)
//否則匯出到遠端
if (!constants.scope_local.tostring().equalsignorecase(scope))
//當註冊url存在時
if (registryurls != null && !registryurls.isempty())
if (logger.isinfoenabled())
// for providers, this is used to enable custom proxy to generate invoker
string proxy = url.getparameter(constants.proxy_key);
if (stringutils.isnotempty(proxy))
invoker<?> invoker = proxyfactory.getinvoker(ref, (class) inte***ceclass, registryurl.addparameterandencoded(constants.export_key, url.tofullstring()));
exporters.add(exporter);
}} else }}
this.urls.add(url);
}
匯出服務
/**
* 匯出服務到遠端其中的一步:匯出服務
* 在com.alibaba.dubbo.registry.integration.registryprotocol類中
* @param origininvoker
* @param * @return
*/@suppresswarnings("unchecked")
//獲取key
string key = getcachekey(origininvoker);
/*** 根據key值去bounds中去獲取快取
//雙重檢查鎖
if (exporter == null) }}
return exporter;
}
根據不同的協議匯出服務,以dubbo舉例
/**
* 當使用協議為dubbo時,使用此方法進行服務的匯出
* 此方法是在com.alibaba.dubbo.rpc.protocol.dubbo.dubboprotocol類中
* @param invoker
* @param * @return
* @throws rpcexception
*/@override
public exporterexport(invokerinvoker) throws rpcexception
} else
}//啟動伺服器
openserver(url);
//優化序列化
optimizeserialization(url);
return exporter;
}
啟動伺服器
/**
* 開啟伺服器
* @param url
*/private void openserver(url url) else
}}
建立伺服器例項
/**
* 建立伺服器例項
* @param url
* @return
*/private exchangeserver createserver(url url) catch (remotingexception e)
/*** 獲取client引數,然後通過sip檢測支援的型別中是否包含此型別,如果不包含則拋異常
*/str = url.getparameter(constants.client_key);
if (str != null && str.length() > 0)
}return server;
}
建立伺服器例項續
/**
* 建立伺服器例項
* @param url
* @param handler
* @return
* @throws remotingexception
*/public static exchangeserver bind(url url, exchangehandler handler) throws remotingexception
if (handler == null)
url = url.addparameterifabsent(constants.codec_key, "exchange");
/*** getexchanger()獲取交換機,預設獲取為header=com.alibaba.dubbo.remoting.exchange.support.header.headerexchanger
*/return getexchanger(url).bind(url, handler);
}
Dubbo服務匯出簡述
dubbo服務匯出過程始於spring容器發布重新整理事件,dubbo在接收到事件後會立即執行服務匯出邏輯。整個邏輯大致分為三個部分 第一部分是前置工作,用於檢查引數,組裝url。第二部分是建立invoker,匯出服務到本地 jvm 或遠端。第三部分是向註冊中心註冊服務,用於服務發現。是否有延遲匯出...
oracle 遠端匯入 匯出
exp命令 1 exp username psw test file d test.dmp full y 2 exp username psw test file d test.dmp owner ly 3 exp username psw test file d test.dmp tables g...
oracle遠端匯出 匯入
建立db link,遠端匯出 匯入。expdp impdp oracle資料庫本地磁碟空間有限,或應用系統的需要,會通過遠端的方式匯出資料庫。在oracle當中,exp遠端導庫的速度太慢,而expdp又無法直接通過遠端導庫。因此需要建立db link遠端連線後,才能使用expdp遠端導庫。詳細步驟如...