提交 1eb0acb0 编写于 作者: W william.liangf

DUBBO-160 给Multicast和Zookeeper注册中心URL增加缺省端口

git-svn-id: http://code.alibabatech.com/svn/dubbo/trunk@754 1a56cb94-b969-4eaa-88fa-be21384802f2
上级 e70a522d
......@@ -48,7 +48,9 @@ public class MulticastRegistry extends FailbackRegistry {
// 日志输出
private static final Logger logger = LoggerFactory.getLogger(MulticastRegistry.class);
private static final int DEFAULT_MULTICAST_PORT = 1234;
private static final String REGISTER = "register";
private static final String UNREGISTER = "unregister";
......@@ -70,7 +72,7 @@ public class MulticastRegistry extends FailbackRegistry {
}
try {
mutilcastAddress = InetAddress.getByName(url.getHost());
mutilcastSocket = new MulticastSocket(url.getPort());
mutilcastSocket = new MulticastSocket(url.getPort() == 0 ? DEFAULT_MULTICAST_PORT : url.getPort());
mutilcastSocket.setLoopbackMode(false);
mutilcastSocket.joinGroup(mutilcastAddress);
Thread thread = new Thread(new Runnable() {
......@@ -299,4 +301,8 @@ public class MulticastRegistry extends FailbackRegistry {
return notified;
}
public MulticastSocket getMutilcastSocket() {
return mutilcastSocket;
}
}
\ No newline at end of file
......@@ -18,11 +18,14 @@ package com.alibaba.dubbo.registry.multicast;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import java.net.MulticastSocket;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.atomic.AtomicReference;
import junit.framework.Assert;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
......@@ -107,4 +110,15 @@ public class MulticastRegistryTest {
}
@Test
public void testDefaultPort() {
MulticastRegistry multicastRegistry = new MulticastRegistry(URL.valueOf("multicast://224.5.6.7"));
try {
MulticastSocket multicastSocket = multicastRegistry.getMutilcastSocket();
Assert.assertEquals(1234, multicastSocket.getLocalPort());
} finally {
multicastRegistry.destroy();
}
}
}
\ No newline at end of file
......@@ -54,6 +54,8 @@ import com.alibaba.dubbo.rpc.RpcException;
public class ZookeeperRegistry extends FailbackRegistry {
private final static Logger logger = LoggerFactory.getLogger(ZookeeperRegistry.class);
private final static int DEFAULT_ZOOKEEPER_PORT = 2181;
private final static int DEFAULT_SESSION_TIMEOUT = 60 * 1000;
......@@ -151,14 +153,29 @@ public class ZookeeperRegistry extends FailbackRegistry {
}
}
static String appendDefaultPort(String address) {
if (address != null && address.length() > 0) {
int i = address.indexOf(':');
if (i < 0) {
return address + ":" + DEFAULT_ZOOKEEPER_PORT;
} else if (Integer.parseInt(address.substring(i + 1)) == 0) {
return address.substring(0, i + 1) + DEFAULT_ZOOKEEPER_PORT;
}
}
return address;
}
private ZooKeeper createZookeeper() throws Exception {
URL url = getUrl();
String address = url.getAddress();
String backup = url.getParameter(Constants.BACKUP_KEY);
if (backup != null && backup.length() > 0) {
address = address + "," + backup;
StringBuilder address = new StringBuilder(appendDefaultPort(url.getAddress()));
String[] backups = url.getParameter(Constants.BACKUP_KEY, new String[0]);
if (backups != null && backups.length > 0) {
for (String backup : backups) {
address.append(",");
address.append(appendDefaultPort(backup));
}
}
ZooKeeper zk = new ZooKeeper(address, url.getPositiveParameter(
ZooKeeper zk = new ZooKeeper(address.toString(), url.getPositiveParameter(
Constants.TIMEOUT_KEY, DEFAULT_SESSION_TIMEOUT), new Watcher() {
public void process(WatchedEvent event) {
try {
......
......@@ -15,6 +15,8 @@
*/
package com.alibaba.dubbo.registry.zookeeper;
import junit.framework.Assert;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
......@@ -55,6 +57,12 @@ public class ZookeeperRegistryTest {
URL errorUrl = URL.valueOf("zookeeper://zookeeper/");
new ZookeeperRegistry(errorUrl);
}
@Test
public void testDefaultPort() {
Assert.assertEquals("10.20.153.10:2181", ZookeeperRegistry.appendDefaultPort("10.20.153.10:0"));
Assert.assertEquals("10.20.153.10:2181", ZookeeperRegistry.appendDefaultPort("10.20.153.10"));
}
/**
* Test method for {@link com.alibaba.dubbo.registry.support.injvm.InjvmRegistry#register(java.util.Map)}.
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册