blob: 22246672c341483e208a6138e3e12c3daa9bfe48 [file] [log] [blame]
/*
* Copyright 1999-2011 Alibaba Group.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.alibaba.dubbo.config;
import java.util.Map;
import com.alibaba.dubbo.common.Constants;
import com.alibaba.dubbo.common.extension.ExtensionLoader;
import com.alibaba.dubbo.registry.support.AbstractRegistryFactory;
import com.alibaba.dubbo.remoting.Transporter;
/**
* RegistryConfig
*
* @author william.liangf
*/
public class RegistryConfig extends AbstractConfig {
private static final long serialVersionUID = 5508512956753757169L;
public static final String NO_AVAILABLE = "N/A";
// 注册中心地址
private String address;
// 注册中心登录用户名
private String username;
// 注册中心登录密码
private String password;
// 注册中心缺省端口
private Integer port;
// 注册中心协议
private String protocol;
// 客户端实现
private String transporter;
private String server;
private String client;
private String group;
private String version;
// 注册中心请求超时时间(毫秒)
private Integer timeout;
// 注册中心会话超时时间(毫秒)
private Integer session;
// 动态注册中心列表存储文件
private String file;
// 停止时等候完成通知时间
private Integer wait;
// 启动时检查注册中心是否存在
private Boolean check;
// 在该注册中心上注册是动态的还是静态的服务
private Boolean dynamic;
// 在该注册中心上服务是否暴露
private Boolean register;
// 在该注册中心上服务是否引用
private Boolean subscribe;
// 自定义参数
private Map<String, String> parameters;
public RegistryConfig() {
}
public RegistryConfig(String address) {
setAddress(address);
}
public String getProtocol() {
return protocol;
}
public void setProtocol(String protocol) {
checkName("protocol", protocol);
this.protocol = protocol;
}
@Parameter(excluded = true)
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public Integer getPort() {
return port;
}
public void setPort(Integer port) {
this.port = port;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
checkName("username", username);
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
checkLength("password", password);
this.password = password;
}
/**
* @deprecated
* @see com.alibaba.dubbo.config.ProviderConfig#getWait()
* @return wait
*/
@Deprecated
public Integer getWait() {
return wait;
}
/**
* @deprecated
* @see com.alibaba.dubbo.config.ProviderConfig#setWait(Integer)
* @param wait
*/
@Deprecated
public void setWait(Integer wait) {
this.wait = wait;
if( wait!=null && wait>0)
System.setProperty(Constants.SHUTDOWN_WAIT_KEY, String.valueOf(wait));
}
public Boolean isCheck() {
return check;
}
public void setCheck(Boolean check) {
this.check = check;
}
public String getFile() {
return file;
}
public void setFile(String file) {
checkPathLength("file", file);
this.file = file;
}
/**
* @deprecated
* @see #getTransporter()
* @return transport
*/
@Deprecated
@Parameter(excluded = true)
public String getTransport() {
return getTransporter();
}
/**
* @deprecated
* @see #setTransporter(String)
* @param transport
*/
@Deprecated
public void setTransport(String transport) {
setTransporter(transport);
}
public String getTransporter() {
return transporter;
}
public void setTransporter(String transporter) {
checkName("transporter", transporter);
if(transporter != null && transporter.length() > 0 && ! ExtensionLoader.getExtensionLoader(Transporter.class).hasExtension(transporter)){
throw new IllegalStateException("No such transporter type : " + transporter);
}
this.transporter = transporter;
}
public String getServer() {
return server;
}
public void setServer(String server) {
checkName("server", server);
if(server != null && server.length() > 0 && ! ExtensionLoader.getExtensionLoader(Transporter.class).hasExtension(server)){
throw new IllegalStateException("No such server type : " + server);
}
this.server = server;
}
public String getClient() {
return client;
}
public void setClient(String client) {
checkName("client", client);
if(client != null && client.length() > 0 && ! ExtensionLoader.getExtensionLoader(Transporter.class).hasExtension(client)){
throw new IllegalStateException("No such client type : " + client);
}
this.client = client;
}
public Integer getTimeout() {
return timeout;
}
public void setTimeout(Integer timeout) {
this.timeout = timeout;
}
public Integer getSession() {
return session;
}
public void setSession(Integer session) {
this.session = session;
}
public Boolean isDynamic() {
return dynamic;
}
public void setDynamic(Boolean dynamic) {
this.dynamic = dynamic;
}
public Boolean isRegister() {
return register;
}
public void setRegister(Boolean register) {
this.register = register;
}
public Boolean isSubscribe() {
return subscribe;
}
public void setSubscribe(Boolean subscribe) {
this.subscribe = subscribe;
}
public static void closeAll() {
AbstractRegistryFactory.destroyAll();
}
public String getGroup() {
return group;
}
public void setGroup(String group) {
this.group = group;
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
public Map<String, String> getParameters() {
return parameters;
}
public void setParameters(Map<String, String> parameters) {
checkParameterName(parameters);
this.parameters = parameters;
}
}