From 4df065ba42399904740a7b42d066ce4c0b91c236 Mon Sep 17 00:00:00 2001 From: syd Date: Wed, 12 Apr 2017 12:01:26 +0800 Subject: [PATCH 1/5] 1.support password 2.fix redis resource release bug --- .../rpc/protocol/redis/RedisProtocol.java | 54 +++++++++++-------- 1 file changed, 33 insertions(+), 21 deletions(-) diff --git a/dubbo-rpc/dubbo-rpc-redis/src/main/java/com/alibaba/dubbo/rpc/protocol/redis/RedisProtocol.java b/dubbo-rpc/dubbo-rpc-redis/src/main/java/com/alibaba/dubbo/rpc/protocol/redis/RedisProtocol.java index bcb9e2f25a03..eed92964c2a6 100644 --- a/dubbo-rpc/dubbo-rpc-redis/src/main/java/com/alibaba/dubbo/rpc/protocol/redis/RedisProtocol.java +++ b/dubbo-rpc/dubbo-rpc-redis/src/main/java/com/alibaba/dubbo/rpc/protocol/redis/RedisProtocol.java @@ -15,6 +15,7 @@ */ package com.alibaba.dubbo.rpc.protocol.redis; +import com.alibaba.dubbo.common.utils.StringUtils; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; @@ -68,31 +69,12 @@ private Serialization getSerialization(URL url) { public Invoker refer(final Class type, final URL url) throws RpcException { try { - GenericObjectPool.Config config = new GenericObjectPool.Config(); - config.testOnBorrow = url.getParameter("test.on.borrow", true); - config.testOnReturn = url.getParameter("test.on.return", false); - config.testWhileIdle = url.getParameter("test.while.idle", false); - if (url.getParameter("max.idle", 0) > 0) - config.maxIdle = url.getParameter("max.idle", 0); - if (url.getParameter("min.idle", 0) > 0) - config.minIdle = url.getParameter("min.idle", 0); - if (url.getParameter("max.active", 0) > 0) - config.maxActive = url.getParameter("max.active", 0); - if (url.getParameter("max.wait", 0) > 0) - config.maxWait = url.getParameter("max.wait", 0); - if (url.getParameter("num.tests.per.eviction.run", 0) > 0) - config.numTestsPerEvictionRun = url.getParameter("num.tests.per.eviction.run", 0); - if (url.getParameter("time.between.eviction.runs.millis", 0) > 0) - config.timeBetweenEvictionRunsMillis = url.getParameter("time.between.eviction.runs.millis", 0); - if (url.getParameter("min.evictable.idle.time.millis", 0) > 0) - config.minEvictableIdleTimeMillis = url.getParameter("min.evictable.idle.time.millis", 0); - final JedisPool jedisPool = new JedisPool(config, url.getHost(), url.getPort(DEFAULT_PORT), - url.getParameter(Constants.TIMEOUT_KEY, Constants.DEFAULT_TIMEOUT)); + final JedisPool jedisPool = getJedisPool(url); final int expiry = url.getParameter("expiry", 0); final String get = url.getParameter("get", "get"); final String set = url.getParameter("set", Map.class.equals(type) ? "put" : "set"); final String delete = url.getParameter("delete", Map.class.equals(type) ? "remove" : "delete"); - return new AbstractInvoker(type, url) { + Invoker invoker = new AbstractInvoker(type, url) { protected Result doInvoke(Invocation invocation) throws Throwable { Jedis resource = null; try { @@ -163,9 +145,39 @@ public void destroy() { } } }; + invokers.add(invoker); + return invoker; } catch (Throwable t) { throw new RpcException("Failed to refer memecached service. interface: " + type.getName() + ", url: " + url + ", cause: " + t.getMessage(), t); } } + private JedisPool getJedisPool(URL url){ + GenericObjectPool.Config config = new GenericObjectPool.Config(); + config.testOnBorrow = url.getParameter("test.on.borrow", true); + config.testOnReturn = url.getParameter("test.on.return", false); + config.testWhileIdle = url.getParameter("test.while.idle", false); + if (url.getParameter("max.idle", 0) > 0) + config.maxIdle = url.getParameter("max.idle", 0); + if (url.getParameter("min.idle", 0) > 0) + config.minIdle = url.getParameter("min.idle", 0); + if (url.getParameter("max.active", 0) > 0) + config.maxActive = url.getParameter("max.active", 0); + if (url.getParameter("max.wait", 0) > 0) + config.maxWait = url.getParameter("max.wait", 0); + if (url.getParameter("num.tests.per.eviction.run", 0) > 0) + config.numTestsPerEvictionRun = url.getParameter("num.tests.per.eviction.run", 0); + if (url.getParameter("time.between.eviction.runs.millis", 0) > 0) + config.timeBetweenEvictionRunsMillis = url.getParameter("time.between.eviction.runs.millis", 0); + if (url.getParameter("min.evictable.idle.time.millis", 0) > 0) + config.minEvictableIdleTimeMillis = url.getParameter("min.evictable.idle.time.millis", 0); + if(StringUtils.isEmpty(url.getPassword())){ + return new JedisPool(config, url.getHost(), url.getPort(DEFAULT_PORT), + url.getParameter(Constants.TIMEOUT_KEY, Constants.DEFAULT_TIMEOUT)); + } else { + return new JedisPool(config, url.getHost(), url.getPort(DEFAULT_PORT), + url.getParameter(Constants.TIMEOUT_KEY, Constants.DEFAULT_TIMEOUT),url.getPassword()); + } + } + } From 643fbe779c92222a06ebf1ead037884b483a195a Mon Sep 17 00:00:00 2001 From: syd Date: Thu, 20 Apr 2017 19:13:42 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E6=94=AF=E6=8C=81https?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/alibaba/dubbo/rpc/protocol/rest/RestProtocol.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/dubbo-rpc/dubbo-rpc-rest/src/main/java/com/alibaba/dubbo/rpc/protocol/rest/RestProtocol.java b/dubbo-rpc/dubbo-rpc-rest/src/main/java/com/alibaba/dubbo/rpc/protocol/rest/RestProtocol.java index 918f28f91a15..4dbe7c2253b6 100644 --- a/dubbo-rpc/dubbo-rpc-rest/src/main/java/com/alibaba/dubbo/rpc/protocol/rest/RestProtocol.java +++ b/dubbo-rpc/dubbo-rpc-rest/src/main/java/com/alibaba/dubbo/rpc/protocol/rest/RestProtocol.java @@ -182,8 +182,12 @@ public long getKeepAliveDuration(HttpResponse response, HttpContext context) { } } - // TODO protocol - ResteasyWebTarget target = client.target("http://" + url.getHost() + ":" + url.getPort() + "/" + getContextPath(url)); + ResteasyWebTarget target; + if(url.getPort() == 0){ + target = client.target(url.getProtocol() + "://" + url.getHost() + "/" + getContextPath(url)); + } else { + target = client.target(url.getProtocol() + "://" + url.getHost() + ":" + url.getPort() + "/" + getContextPath(url)); + } return target.proxy(serviceType); } From 202ceac76c0796676a49a6f18afb07dd74d50151 Mon Sep 17 00:00:00 2001 From: syd Date: Thu, 20 Apr 2017 19:34:39 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E6=94=AF=E6=8C=81https=20close=20#299?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/alibaba/dubbo/rpc/protocol/rest/RestProtocol.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/dubbo-rpc/dubbo-rpc-rest/src/main/java/com/alibaba/dubbo/rpc/protocol/rest/RestProtocol.java b/dubbo-rpc/dubbo-rpc-rest/src/main/java/com/alibaba/dubbo/rpc/protocol/rest/RestProtocol.java index 918f28f91a15..4dbe7c2253b6 100644 --- a/dubbo-rpc/dubbo-rpc-rest/src/main/java/com/alibaba/dubbo/rpc/protocol/rest/RestProtocol.java +++ b/dubbo-rpc/dubbo-rpc-rest/src/main/java/com/alibaba/dubbo/rpc/protocol/rest/RestProtocol.java @@ -182,8 +182,12 @@ public long getKeepAliveDuration(HttpResponse response, HttpContext context) { } } - // TODO protocol - ResteasyWebTarget target = client.target("http://" + url.getHost() + ":" + url.getPort() + "/" + getContextPath(url)); + ResteasyWebTarget target; + if(url.getPort() == 0){ + target = client.target(url.getProtocol() + "://" + url.getHost() + "/" + getContextPath(url)); + } else { + target = client.target(url.getProtocol() + "://" + url.getHost() + ":" + url.getPort() + "/" + getContextPath(url)); + } return target.proxy(serviceType); } From 64c8c9b677134a82b4ccdc456984d62e445b67ca Mon Sep 17 00:00:00 2001 From: syd Date: Fri, 21 Apr 2017 14:07:30 +0800 Subject: [PATCH 4/5] =?UTF-8?q?fix=20https=20protocol=E5=92=8CHession?= =?UTF-8?q?=E5=86=B2=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/alibaba/dubbo/rpc/protocol/rest/RestProtocol.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/dubbo-rpc/dubbo-rpc-rest/src/main/java/com/alibaba/dubbo/rpc/protocol/rest/RestProtocol.java b/dubbo-rpc/dubbo-rpc-rest/src/main/java/com/alibaba/dubbo/rpc/protocol/rest/RestProtocol.java index 4dbe7c2253b6..61d2ead7811b 100644 --- a/dubbo-rpc/dubbo-rpc-rest/src/main/java/com/alibaba/dubbo/rpc/protocol/rest/RestProtocol.java +++ b/dubbo-rpc/dubbo-rpc-rest/src/main/java/com/alibaba/dubbo/rpc/protocol/rest/RestProtocol.java @@ -59,6 +59,10 @@ public class RestProtocol extends AbstractProxyProtocol { private static final int DEFAULT_PORT = 80; + private static final String HTTP_PROTOCOL = "protocol"; + + private static final String DEFAULT_HTTP_PROTOCOL = "http"; + private final Map servers = new ConcurrentHashMap(); private final RestServerFactory serverFactory = new RestServerFactory(); @@ -184,9 +188,9 @@ public long getKeepAliveDuration(HttpResponse response, HttpContext context) { ResteasyWebTarget target; if(url.getPort() == 0){ - target = client.target(url.getProtocol() + "://" + url.getHost() + "/" + getContextPath(url)); + target = client.target(url.getParameter(HTTP_PROTOCOL,DEFAULT_HTTP_PROTOCOL) + "://" + url.getHost() + "/" + getContextPath(url)); } else { - target = client.target(url.getProtocol() + "://" + url.getHost() + ":" + url.getPort() + "/" + getContextPath(url)); + target = client.target(url.getParameter(HTTP_PROTOCOL,DEFAULT_HTTP_PROTOCOL) + "://" + url.getHost() + ":" + url.getPort() + "/" + getContextPath(url)); } return target.proxy(serviceType); } From a61dad02761df5e43b9ee5acff1258fad5f07736 Mon Sep 17 00:00:00 2001 From: syd Date: Fri, 21 Apr 2017 14:34:10 +0800 Subject: [PATCH 5/5] =?UTF-8?q?Invoker=E6=B2=A1=E6=9C=89=E6=AD=A3=E5=B8=B8?= =?UTF-8?q?=E9=94=80=E6=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dubbo/rpc/protocol/memcached/MemcachedProtocol.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/dubbo-rpc/dubbo-rpc-memcached/src/main/java/com/alibaba/dubbo/rpc/protocol/memcached/MemcachedProtocol.java b/dubbo-rpc/dubbo-rpc-memcached/src/main/java/com/alibaba/dubbo/rpc/protocol/memcached/MemcachedProtocol.java index 9439129dafca..5c13db419a0d 100644 --- a/dubbo-rpc/dubbo-rpc-memcached/src/main/java/com/alibaba/dubbo/rpc/protocol/memcached/MemcachedProtocol.java +++ b/dubbo-rpc/dubbo-rpc-memcached/src/main/java/com/alibaba/dubbo/rpc/protocol/memcached/MemcachedProtocol.java @@ -39,7 +39,7 @@ /** * MemcachedProtocol - * + * * @author william.liangf */ public class MemcachedProtocol extends AbstractProtocol { @@ -67,7 +67,7 @@ public Invoker refer(final Class type, final URL url) throws RpcExcept final String get = url.getParameter("get", "get"); final String set = url.getParameter("set", Map.class.equals(type) ? "put" : "set"); final String delete = url.getParameter("delete", Map.class.equals(type) ? "remove" : "delete"); - return new AbstractInvoker(type, url) { + Invoker invoker = new AbstractInvoker(type, url) { protected Result doInvoke(Invocation invocation) throws Throwable { try { if (get.equals(invocation.getMethodName())) { @@ -109,6 +109,8 @@ public void destroy() { } } }; + invokers.add(invoker); + return invoker; } catch (Throwable t) { throw new RpcException("Failed to refer memecached service. interface: " + type.getName() + ", url: " + url + ", cause: " + t.getMessage(), t); }