dubbo中的QOS服务
拿到dubbo服务ip,通过telnet命令远程连接到你的dubbo服务(中间没有任何认证),然后可通过offline和online命令上下线你所有的服务,这种命令的安全性不言而喻,但是它的初衷是方便开发者治理服务,比如某个服务有严重错误,开发者可以直接下线该服务而不影响其它服务(offline支持正则匹配)。从2.6.4/2.7.0以前,QOS服务的远程连接默认是开启的,最新版的没有这种问题
解决办法就是关闭QOS服务
但是在网上寻找的方法大都是通过配置文件修改:
官方提供的相关配置命令:
dubbo.application.qosEnable=true
dubbo.application.qosPort=33333
dubbo.application.qosAcceptForeignIp=false
但是尝试过,都无效:
可以通过下面方式进行配置和关闭服务:
//引入qos服务类
import com.alibaba.dubbo.qos.server.Server;
public class App {
public static void main(String[] args) {
//配置dubbo.qos.port端口
System.setProperty(Constants.QOS_PORT,"33333");
//配置dubbo.qos.accept.foreign.ip是否关闭远程连接
System.setProperty(Constants.ACCEPT_FOREIGN_IP,"false");
SpringApplication.run(App.class, args);
//关闭QOS服务
Server.getInstance().stop();
}
}