本文整理了Java中com.weibo.api.motan.rpc.URL.getServerPortStr()
方法的一些代码示例,展示了URL.getServerPortStr()
的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。URL.getServerPortStr()
方法的具体详情如下:
包路径:com.weibo.api.motan.rpc.URL
类名称:URL
方法名:getServerPortStr
[英]comma separated host:port pairs, e.g. "127.0.0.1:3000"
[中]逗号分隔的主机:端口对,例如“127.0.0.1:3000”
代码示例来源:origin: weibocom/motan
public static String toNodePath(URL url, ZkNodeType nodeType) {
return toNodeTypePath(url, nodeType) + MotanConstants.PATH_SEPARATOR + url.getServerPortStr();
}
}
代码示例来源:origin: weibocom/motan
private static <T> String getServerPorts(List<Referer<T>> referers) {
if (referers == null || referers.isEmpty()) {
return "[]";
}
StringBuilder builder = new StringBuilder();
builder.append("[");
for (Referer<T> referer : referers) {
builder.append(referer.getUrl().getServerPortStr()).append(",");
}
builder.setLength(builder.length() - 1);
builder.append("]");
return builder.toString();
}
}
代码示例来源:origin: weibocom/motan
public ProviderMessageRouter initRequestRouter(URL url, Provider<?> provider) {
String ipPort = url.getServerPortStr();
ProviderMessageRouter requestRouter = ipPort2RequestRouter.get(ipPort);
if (requestRouter == null) {
ipPort2RequestRouter.putIfAbsent(ipPort, new YarMessageRouter());
requestRouter = ipPort2RequestRouter.get(ipPort);
}
requestRouter.addProvider(provider);
return requestRouter;
}
代码示例来源:origin: weibocom/motan
@Override
public boolean cancel() {
Exception e =
new MotanServiceException(this.getClass().getName() + " task cancel: serverPort=" + serverUrl.getServerPortStr() + " "
+ MotanFrameworkUtil.toString(request) + " cost=" + (System.currentTimeMillis() - createTime));
return cancel(e);
}
代码示例来源:origin: weibocom/motan
protected ProviderMessageRouter initRequestRouter(URL url) {
String ipPort = url.getServerPortStr();
ProviderMessageRouter requestRouter = ipPort2RequestRouter.get(ipPort);
if (requestRouter == null) {
ProviderProtectedMessageRouter router = new ProviderProtectedMessageRouter();
StatsUtil.registryStatisticCallback(router);
ipPort2RequestRouter.putIfAbsent(ipPort, router);
requestRouter = ipPort2RequestRouter.get(ipPort);
}
requestRouter.addProvider(provider);
return requestRouter;
}
}
代码示例来源:origin: weibocom/motan
@Override
public void safeReleaseResource(RestServer server, URL url) {
String ipPort = url.getServerPortStr();
String protocolKey = MotanFrameworkUtil.getProtocolKey(url);
synchronized (ipPort2ServerShareChannel) {
if (server != ipPort2ServerShareChannel.get(ipPort)) {
server.stop();
return;
}
Set<String> urls = server2UrlsShareChannel.get(server);
urls.remove(protocolKey);
if (urls.isEmpty()) {
server.stop();
ipPort2ServerShareChannel.remove(ipPort);
server2UrlsShareChannel.remove(server);
}
}
}
代码示例来源:origin: weibocom/motan
private void timeoutSoCancel() {
this.processTime = System.currentTimeMillis() - createTime;
synchronized (lock) {
if (!isDoing()) {
return;
}
state = FutureState.CANCELLED;
exception =
new MotanServiceException(this.getClass().getName() + " request timeout: serverPort=" + serverUrl.getServerPortStr()
+ " " + MotanFrameworkUtil.toString(request) + " cost=" + (System.currentTimeMillis() - createTime),
MotanErrorMsgConstant.SERVICE_TIMEOUT);
lock.notifyAll();
}
notifyListeners();
}
代码示例来源:origin: weibocom/motan
@Override
public void safeReleaseResource(ResteasyWebTarget client, URL url) {
String ipPort = url.getServerPortStr();
String protocolKey = MotanFrameworkUtil.getProtocolKey(url);
synchronized (ipPort2ClientShareChannel) {
if (client != ipPort2ClientShareChannel.get(ipPort)) {
client.getResteasyClient().close();
return;
}
Set<String> urls = client2UrlsShareChannel.get(client);
urls.remove(protocolKey);
if (urls.isEmpty()) {
client.getResteasyClient().close();
ipPort2ClientShareChannel.remove(ipPort);
client2UrlsShareChannel.remove(client);
}
}
}
代码示例来源:origin: weibocom/motan
public void unexport(URL url, Provider<?> provider){
String protocolKey = MotanFrameworkUtil.getProtocolKey(url);
String ipPort = url.getServerPortStr();
Exporter<?> exporter = (Exporter<?>) exporterMap.remove(protocolKey);
if (exporter != null) {
exporter.destroy();
}
synchronized (ipPort2RequestRouter) {
ProviderMessageRouter requestRouter = ipPort2RequestRouter.get(ipPort);
if (requestRouter != null) {
requestRouter.removeProvider(provider);
}
}
LoggerUtil.info("yarRpcExporter unexport Success: url={}", url);
}
代码示例来源:origin: weibocom/motan
@Override
public ResteasyWebTarget createClient(URL url) {
String ipPort = url.getServerPortStr();
String protocolKey = MotanFrameworkUtil.getProtocolKey(url);
LoggerUtil.info(this.getClass().getSimpleName() + " create share_channel client: url={}", url);
synchronized (ipPort2ClientShareChannel) {
ResteasyWebTarget client = ipPort2ClientShareChannel.get(ipPort);
if (client != null) {
saveEndpoint2Urls(client2UrlsShareChannel, client, protocolKey);
return client;
}
client = innerCreateClient(url);
ipPort2ClientShareChannel.put(ipPort, client);
saveEndpoint2Urls(client2UrlsShareChannel, client, protocolKey);
return client;
}
}
代码示例来源:origin: weibocom/motan
@SuppressWarnings("unchecked")
@Override
public void unexport() {
String protocolKey = MotanFrameworkUtil.getProtocolKey(url);
String ipPort = url.getServerPortStr();
Exporter<T> exporter = (Exporter<T>) exporterMap.remove(protocolKey);
if (exporter != null) {
exporter.destroy();
}
ProviderMessageRouter requestRouter = ipPort2RequestRouter.get(ipPort);
if (requestRouter != null) {
requestRouter.removeProvider(provider);
}
LoggerUtil.info("DefaultRpcExporter unexport Success: url={}", url);
}
代码示例来源:origin: weibocom/motan
/**
* 增加调用失败的次数:
* <p>
* <pre>
* 如果连续失败的次数 >= maxClientConnection, 那么把client设置成不可用状态
* </pre>
*/
void incrErrorCount() {
long count = errorCount.incrementAndGet();
// 如果节点是可用状态,同时当前连续失败的次数超过连接数,那么把该节点标示为不可用
if (count >= connections && state.isAliveState()) {
synchronized (this) {
count = errorCount.longValue();
if (count >= connections && state.isAliveState()) {
LoggerUtil.error("NettyClient unavailable Error: url=" + url.getIdentity() + " "
+ url.getServerPortStr());
state = ChannelState.UNALIVE;
}
}
}
}
代码示例来源:origin: weibocom/motan
/**
* 增加调用失败的次数:
*
* <pre>
* 如果连续失败的次数 >= maxClientConnection, 那么把client设置成不可用状态
* </pre>
*
*/
void incrErrorCount() {
long count = errorCount.incrementAndGet();
// 如果节点是可用状态,同时当前连续失败的次数超过限制maxClientConnection次,那么把该节点标示为不可用
if (count >= maxClientConnection && state.isAliveState()) {
synchronized (this) {
count = errorCount.longValue();
if (count >= maxClientConnection && state.isAliveState()) {
LoggerUtil.error("NettyClient unavailable Error: url=" + url.getIdentity() + " "
+ url.getServerPortStr());
state = ChannelState.UNALIVE;
}
}
}
}
代码示例来源:origin: weibocom/motan
@Override
protected Object encode(ChannelHandlerContext ctx, Channel nettyChannel, Object message) throws Exception {
Object obj;
if (codec instanceof MotanV2Codec) {
obj = encodev2(ctx, nettyChannel, message);
} else {
obj = encodev1(ctx, nettyChannel, message);
}
MotanFrameworkUtil.logRequestEvent(getRequestId(message), "after encode rpc " + (message instanceof Request ? "request " : "response ") + this.client.getUrl().getServerPortStr(), System.currentTimeMillis());
return obj;
}
代码示例来源:origin: weibocom/motan
private <T extends Endpoint> void safeReleaseResource(T endpoint, URL url, Map<String, T> ipPort2Endpoint,
ConcurrentMap<T, Set<String>> endpoint2Urls) {
boolean shareChannel = url.getBooleanParameter(URLParamType.shareChannel.getName(), URLParamType.shareChannel.getBooleanValue());
if (!shareChannel) {
destory(endpoint);
return;
}
synchronized (ipPort2Endpoint) {
String ipPort = url.getServerPortStr();
String protocolKey = MotanFrameworkUtil.getProtocolKey(url);
if (endpoint != ipPort2Endpoint.get(ipPort)) {
destory(endpoint);
return;
}
Set<String> urls = endpoint2Urls.get(endpoint);
urls.remove(protocolKey);
if (urls.isEmpty()) {
destory(endpoint);
ipPort2Endpoint.remove(ipPort);
endpoint2Urls.remove(endpoint);
}
}
}
代码示例来源:origin: weibocom/motan
/**
* protocol key: protocol://host:port/group/interface/version
*
* @param url
* @return
*/
public static String getProtocolKey(URL url) {
return url.getProtocol() + MotanConstants.PROTOCOL_SEPARATOR + url.getServerPortStr() + MotanConstants.PATH_SEPARATOR
+ url.getGroup() + MotanConstants.PATH_SEPARATOR + url.getPath() + MotanConstants.PATH_SEPARATOR + url.getVersion();
}
代码示例来源:origin: weibocom/motan
/**
* 重置调用失败的计数 :
* <pre>
* 把节点设置成可用
* </pre>
*/
void resetErrorCount() {
errorCount.set(0);
if (state.isAliveState()) {
return;
}
synchronized (this) {
if (state.isAliveState()) {
return;
}
// 如果节点是unalive才进行设置,而如果是 close 或者 uninit,那么直接忽略
if (state.isUnAliveState()) {
long count = errorCount.longValue();
// 过程中有其他并发更新errorCount的,因此这里需要进行一次判断
if (count < connections) {
state = ChannelState.ALIVE;
LoggerUtil.info("NettyClient recover available: url=" + url.getIdentity() + " "
+ url.getServerPortStr());
}
}
}
}
代码示例来源:origin: weibocom/motan
@Override
public RestServer createServer(URL url) {
String ipPort = url.getServerPortStr();
String protocolKey = MotanFrameworkUtil.getProtocolKey(url);
LoggerUtil.info(this.getClass().getSimpleName() + " create share_channel server: url={}", url);
synchronized (ipPort2ServerShareChannel) {
RestServer server = ipPort2ServerShareChannel.get(ipPort);
if (server != null) {
saveEndpoint2Urls(server2UrlsShareChannel, server, protocolKey);
return server;
}
url = url.createCopy();
url.setPath(""); // 共享server端口,由于有多个interfaces存在,所以把path设置为空
server = innerCreateServer(url);
server.start();
ipPort2ServerShareChannel.put(ipPort, server);
saveEndpoint2Urls(server2UrlsShareChannel, server, protocolKey);
return server;
}
}
代码示例来源:origin: weibocom/motan
private static byte[] encodeMessage(Channel channel, Codec codec, Object msg) throws IOException {
byte[] data;
if (msg instanceof Response) {
try {
data = codec.encode(channel, msg);
} catch (Exception e) {
LoggerUtil.error("NettyEncoder encode error, identity=" + channel.getUrl().getIdentity(), e);
long requestId = getRequestId(msg);
Response response = buildExceptionResponse(requestId, e);
data = codec.encode(channel, response);
}
} else {
data = codec.encode(channel, msg);
}
MotanFrameworkUtil.logRequestEvent(getRequestId(msg), "after encode rpc " + (msg instanceof Request ? "request " : "response ") + channel.getUrl().getServerPortStr(), System.currentTimeMillis());
return data;
}
代码示例来源:origin: weibocom/motan
private Response request(Request request, boolean async) throws TransportException {
Channel channel;
Response response;
try {
// return channel or throw exception(timeout or connection_fail)
channel = getChannel();
MotanFrameworkUtil.logRequestEvent(request.getRequestId(), "after get server connection " + this.getUrl().getServerPortStr(), System.currentTimeMillis());
if (channel == null) {
LoggerUtil.error("NettyClient borrowObject null: url=" + url.getUri() + " " + MotanFrameworkUtil.toString(request));
return null;
}
// async request
response = channel.request(request);
} catch (Exception e) {
LoggerUtil.error("NettyClient request Error: url=" + url.getUri() + " " + MotanFrameworkUtil.toString(request), e);
if (e instanceof MotanAbstractException) {
throw (MotanAbstractException) e;
} else {
throw new MotanServiceException("NettyClient request Error: url=" + url.getUri() + " " + MotanFrameworkUtil.toString(request), e);
}
}
// aysnc or sync result
response = asyncResponse(response, async);
return response;
}
内容来源于网络,如有侵权,请联系作者删除!