diff --git a/brpc-java-core/src/main/java/com/baidu/brpc/client/RpcClient.java b/brpc-java-core/src/main/java/com/baidu/brpc/client/RpcClient.java index 88d94cd3..2509bead 100644 --- a/brpc-java-core/src/main/java/com/baidu/brpc/client/RpcClient.java +++ b/brpc-java-core/src/main/java/com/baidu/brpc/client/RpcClient.java @@ -204,15 +204,12 @@ public void setServiceInterface(Class clazz, NamingOptions namingOptions) { } if (namingService != null) { - subscribeInfo = new SubscribeInfo(); - subscribeInfo.setInterfaceName(serviceInterface.getName()); if (namingOptions != null) { - subscribeInfo.setGroup(namingOptions.getGroup()); - subscribeInfo.setVersion(namingOptions.getVersion()); - subscribeInfo.setIgnoreFailOfNamingService(namingOptions.isIgnoreFailOfNamingService()); - subscribeInfo.setServiceId(namingOptions.getServiceId()); - subscribeInfo.setExtra(namingOptions.getExtra()); + subscribeInfo = new SubscribeInfo(namingOptions); + } else { + subscribeInfo = new SubscribeInfo(); } + subscribeInfo.setInterfaceName(serviceInterface.getName()); List instances = this.namingService.lookup(subscribeInfo); instanceProcessor.addInstances(instances); this.namingService.subscribe(subscribeInfo, new NotifyListener() { diff --git a/brpc-java-core/src/main/java/com/baidu/brpc/naming/RegisterInfo.java b/brpc-java-core/src/main/java/com/baidu/brpc/naming/RegisterInfo.java index b4a37c90..d94f89d8 100644 --- a/brpc-java-core/src/main/java/com/baidu/brpc/naming/RegisterInfo.java +++ b/brpc-java-core/src/main/java/com/baidu/brpc/naming/RegisterInfo.java @@ -37,4 +37,18 @@ public class RegisterInfo extends NamingOptions { * the interface class name. */ private String interfaceName; + + public RegisterInfo() { + } + + public RegisterInfo(RegisterInfo rhs) { + super(rhs); + this.host = rhs.getHost(); + this.port = rhs.getPort(); + this.interfaceName = rhs.getInterfaceName(); + } + + public RegisterInfo(NamingOptions namingOptions) { + super(namingOptions); + } } diff --git a/brpc-java-core/src/main/java/com/baidu/brpc/naming/SubscribeInfo.java b/brpc-java-core/src/main/java/com/baidu/brpc/naming/SubscribeInfo.java index 0b7f3794..9722a34b 100644 --- a/brpc-java-core/src/main/java/com/baidu/brpc/naming/SubscribeInfo.java +++ b/brpc-java-core/src/main/java/com/baidu/brpc/naming/SubscribeInfo.java @@ -32,4 +32,17 @@ public class SubscribeInfo extends NamingOptions { * the interface class name. */ private String interfaceName; + + public SubscribeInfo() { + } + + public SubscribeInfo(SubscribeInfo rhs) { + super(rhs); + this.interfaceName = rhs.getInterfaceName(); + } + + public SubscribeInfo(NamingOptions namingOptions) { + super(namingOptions); + } + } diff --git a/brpc-java-core/src/main/java/com/baidu/brpc/server/RpcServer.java b/brpc-java-core/src/main/java/com/baidu/brpc/server/RpcServer.java index 0fa6852d..934a3d53 100644 --- a/brpc-java-core/src/main/java/com/baidu/brpc/server/RpcServer.java +++ b/brpc-java-core/src/main/java/com/baidu/brpc/server/RpcServer.java @@ -232,7 +232,12 @@ public void registerService(Object service, RpcServerOptions serverOptions) { public void registerService(Object service, Class targetClass, NamingOptions namingOptions, RpcServerOptions serverOptions) { serviceList.add(service); - RegisterInfo registerInfo = new RegisterInfo(); + RegisterInfo registerInfo = null; + if (namingOptions != null) { + registerInfo = new RegisterInfo(namingOptions); + } else { + registerInfo = new RegisterInfo(); + } if (targetClass != null) { registerInfo.setInterfaceName(targetClass.getInterfaces()[0].getName()); } else { @@ -240,12 +245,6 @@ public void registerService(Object service, Class targetClass, NamingOptions nam } registerInfo.setHost(NetUtils.getLocalAddress().getHostAddress()); registerInfo.setPort(port); - if (namingOptions != null) { - registerInfo.setGroup(namingOptions.getGroup()); - registerInfo.setVersion(namingOptions.getVersion()); - registerInfo.setIgnoreFailOfNamingService(namingOptions.isIgnoreFailOfNamingService()); - registerInfo.setExtra(namingOptions.getExtra()); - } ServiceManager serviceManager = ServiceManager.getInstance(); ThreadPool customThreadPool = threadPool; if (serverOptions != null) {